static int _load_credential()

in libs/signature/src/spas_client.c [107:135]


static int _load_credential(SPAS_CREDENTIAL *pcred, char *path) {
  FILE *fp = NULL;
  char buf[SPAS_MAX_KEY_LEN * 2];
  if (pcred == NULL || path == NULL) {
    return ERROR_INVALID_PARAM;
  }
  fp = fopen(path, "r");
  if (fp == NULL) {
    return ERROR_FILE_OPEN;
  }
  memset(pcred, 0, sizeof(SPAS_CREDENTIAL));
  while (fgets(buf, sizeof(buf), fp)) {
    _trim(buf);
    int len = strlen(SPAS_ACCESS_KEY_TAG);
    if (strncmp(buf, SPAS_ACCESS_KEY_TAG, len) == 0 && buf[len] == '=') {
      strncpy(pcred->access_key, buf + len + 1, SPAS_MAX_KEY_LEN - 1);
    } else {
      len = strlen(SPAS_SECRET_KEY_TAG);
      if (strncmp(buf, SPAS_SECRET_KEY_TAG, len) == 0 && buf[len] == '=') {
        strncpy(pcred->secret_key, buf + len + 1, SPAS_MAX_KEY_LEN - 1);
      }
    }
  }
  fclose(fp);
  if (strlen(pcred->access_key) == 0 || strlen(pcred->secret_key) == 0) {
    return ERROR_MISSING_KEY;
  }
  return SPAS_NO_ERROR;
}