in libs/signature/src/spas_client.c [230:273]
int spas_load_credential(char *path, CREDENTIAL_UPDATE_MODE mode) {
int ret = SPAS_NO_ERROR;
SPAS_CREDENTIAL credential;
if (g_loaded) {
return SPAS_NO_ERROR;
}
if (path == NULL) {
path = getenv(SPAS_CREDENTIAL_ENV);
if (path == NULL) {
return ERROR_NO_CREDENTIAL;
}
}
strncpy(g_path, path, SPAS_MAX_PATH - 1);
ret = _load_credential(&credential, path);
if (ret != SPAS_NO_ERROR) {
return ret;
}
#ifdef SPAS_MT
pthread_mutex_lock(&cred_mutex);
#endif
if (!g_loaded) {
memcpy(&g_credential, &credential, sizeof(SPAS_CREDENTIAL));
g_loaded = 1;
}
#ifdef SPAS_MT
pthread_mutex_unlock(&cred_mutex);
#endif
switch (mode) {
case UPDATE_BY_ALARM:
ret = _update_credential_by_alarm();
break;
#ifdef SPAS_MT
case UPDATE_BY_THREAD:
ret = _update_credential_by_thread();
break;
#endif
case NO_UPDATE:
default:
ret = SPAS_NO_ERROR;
break;
}
return ret;
}