Exemple #1
0
int sxi_crypto_check_ver(struct sxi_logger *l)
{
    const char *compile_ver = NSS_VERSION;
    if (NSS_NoDB_Init("/") != SECSuccess) {
        sxi_log_msg(l, "sxi_crypto_check_ver", SX_LOG_CRIT,
                    "Failed to initialize NSS: %d", PR_GetError());
        return -1;
    }
    if(!NSS_VersionCheck(compile_ver)) {
	sxi_log_msg(l, "crypto_check_ver", SX_LOG_CRIT, "NSS library version mismatch: compiled: %s, runtime: %s", compile_ver, NSS_GetVersion());
	return -1; 
    }

    return 0;
}
Exemple #2
0
sxc_client_t *sxc_init(const char *client_version, const sxc_logger_t *func, int (*confirm)(const char *prompt, int def)) {
    uint32_t runtime_ver = SSLeay();
    uint32_t compile_ver = SSLEAY_VERSION_NUMBER;
    sxc_client_t *sx;
    struct sxi_logger l;

    if (!func)
        return NULL;
    memset(&l, 0, sizeof(l));
    l.max_level = SX_LOG_DEBUG;
    l.func = func;

    const char *this_version = sxc_get_version();
    if (!client_version || strcmp(client_version, this_version)) {
        sxi_log_msg(&l, "sxc_init", SX_LOG_CRIT, "Version mismatch: our version '%s' - library version '%s'",
                    client_version, this_version);
        return NULL;
    }

    /* FIXME THIS IS NOT THREAD SAFE */
    srand(time(NULL));
    signal(SIGPIPE, SIG_IGN);
    /* TODO: have a way to log this */
    if((runtime_ver & 0xff0000000) != (compile_ver & 0xff0000000)) {
        return NULL;
    }
    CURLcode rc = curl_global_init(CURL_GLOBAL_ALL);
    if (rc) {
        sxi_log_msg(&l, "sxc_init", SX_LOG_CRIT, "Failed to initialize libcurl: %s",
                    curl_easy_strerror(rc));
        return NULL;
    }
    sx = calloc(1, sizeof(struct _sxc_client_t));
    if (!sx) {
        sxi_log_syserr(&l, "sxc_init", SX_LOG_CRIT, "Failed to allocate sx structure");
        return NULL;
    }
    if(lt_dlinit()) {
        const char *err = lt_dlerror();
	sx->fctx.filter_cnt = -1;
        sxi_log_syserr(&l, "sxc_init", SX_LOG_CRIT, "Failed to initialize libltdl: %s",
                       err ? err : "");
    }
    sx->log.max_level = SX_LOG_NOTICE;
    sx->log.func = func;
    sx->confirm = confirm;
    return sx;
}
Exemple #3
0
void sxc_loglasterr(sxc_client_t *sx)
{
    if (!sx)
        return;
    sxi_log_msg(&sx->log, NULL, SX_LOG_ERR, "%s", sxc_geterrmsg(sx));
}