DH *DH_new_method(const ENGINE *engine) { DH *dh = (DH *)OPENSSL_malloc(sizeof(DH)); if (dh == NULL) { OPENSSL_PUT_ERROR(DH, DH_new_method, ERR_R_MALLOC_FAILURE); return NULL; } memset(dh, 0, sizeof(DH)); if (engine) { dh->meth = ENGINE_get_DH_method(engine); } if (dh->meth == NULL) { dh->meth = (DH_METHOD*) &DH_default_method; } METHOD_ref(dh->meth); dh->references = 1; if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_DH, dh, &dh->ex_data)) { OPENSSL_free(dh); return NULL; } if (dh->meth->init && !dh->meth->init(dh)) { CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, dh, &dh->ex_data); METHOD_unref(dh->meth); OPENSSL_free(dh); return NULL; } return dh; }
RSA *RSA_new_method(const ENGINE *engine) { RSA *rsa = OPENSSL_malloc(sizeof(RSA)); if (rsa == NULL) { OPENSSL_PUT_ERROR(RSA, ERR_R_MALLOC_FAILURE); return NULL; } OPENSSL_memset(rsa, 0, sizeof(RSA)); if (engine) { rsa->meth = ENGINE_get_RSA_method(engine); } if (rsa->meth == NULL) { rsa->meth = (RSA_METHOD *) RSA_default_method(); } METHOD_ref(rsa->meth); rsa->references = 1; rsa->flags = rsa->meth->flags; CRYPTO_MUTEX_init(&rsa->lock); CRYPTO_new_ex_data(&rsa->ex_data); if (rsa->meth->init && !rsa->meth->init(rsa)) { CRYPTO_free_ex_data(g_rsa_ex_data_class_bss_get(), rsa, &rsa->ex_data); CRYPTO_MUTEX_cleanup(&rsa->lock); METHOD_unref(rsa->meth); OPENSSL_free(rsa); return NULL; } return rsa; }
void DH_free(DH *dh) { if (dh == NULL) { return; } if (CRYPTO_add(&dh->references, -1, CRYPTO_LOCK_DH) > 0) { return; } if (dh->meth->finish) { dh->meth->finish(dh); } METHOD_unref(dh->meth); CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DH, dh, &dh->ex_data); if (dh->method_mont_p) BN_MONT_CTX_free(dh->method_mont_p); if (dh->p != NULL) BN_clear_free(dh->p); if (dh->g != NULL) BN_clear_free(dh->g); if (dh->q != NULL) BN_clear_free(dh->q); if (dh->j != NULL) BN_clear_free(dh->j); if (dh->seed) OPENSSL_free(dh->seed); if (dh->counter != NULL) BN_clear_free(dh->counter); if (dh->pub_key != NULL) BN_clear_free(dh->pub_key); if (dh->priv_key != NULL) BN_clear_free(dh->priv_key); OPENSSL_free(dh); }
void DSA_free(DSA *dsa) { if (dsa == NULL) { return; } if (CRYPTO_add(&dsa->references, -1, CRYPTO_LOCK_DSA) > 0) { return; } if (dsa->meth->finish) { dsa->meth->finish(dsa); } METHOD_unref(dsa->meth); CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DSA, dsa, &dsa->ex_data); if (dsa->p != NULL) BN_clear_free(dsa->p); if (dsa->q != NULL) BN_clear_free(dsa->q); if (dsa->g != NULL) BN_clear_free(dsa->g); if (dsa->pub_key != NULL) BN_clear_free(dsa->pub_key); if (dsa->priv_key != NULL) BN_clear_free(dsa->priv_key); if (dsa->kinv != NULL) BN_clear_free(dsa->kinv); if (dsa->r != NULL) BN_clear_free(dsa->r); OPENSSL_free(dsa); }
void DSA_free(DSA *dsa) { if (dsa == NULL) { return; } if (!CRYPTO_refcount_dec_and_test_zero(&dsa->references)) { return; } if (dsa->meth->finish) { dsa->meth->finish(dsa); } METHOD_unref(dsa->meth); CRYPTO_free_ex_data(&g_ex_data_class, dsa, &dsa->ex_data); BN_clear_free(dsa->p); BN_clear_free(dsa->q); BN_clear_free(dsa->g); BN_clear_free(dsa->pub_key); BN_clear_free(dsa->priv_key); BN_clear_free(dsa->kinv); BN_clear_free(dsa->r); CRYPTO_MUTEX_cleanup(&dsa->method_mont_p_lock); OPENSSL_free(dsa); }
void DH_free(DH *dh) { if (dh == NULL) { return; } if (!CRYPTO_refcount_dec_and_test_zero(&dh->references)) { return; } if (dh->meth->finish) { dh->meth->finish(dh); } METHOD_unref(dh->meth); CRYPTO_free_ex_data(&g_ex_data_class, dh, &dh->ex_data); if (dh->method_mont_p) BN_MONT_CTX_free(dh->method_mont_p); if (dh->p != NULL) BN_clear_free(dh->p); if (dh->g != NULL) BN_clear_free(dh->g); if (dh->q != NULL) BN_clear_free(dh->q); if (dh->j != NULL) BN_clear_free(dh->j); if (dh->seed) OPENSSL_free(dh->seed); if (dh->counter != NULL) BN_clear_free(dh->counter); if (dh->pub_key != NULL) BN_clear_free(dh->pub_key); if (dh->priv_key != NULL) BN_clear_free(dh->priv_key); CRYPTO_MUTEX_cleanup(&dh->method_mont_p_lock); OPENSSL_free(dh); }
void RSA_free(RSA *rsa) { unsigned u; if (rsa == NULL) { return; } if (CRYPTO_add(&rsa->references, -1, CRYPTO_LOCK_RSA) > 0) { return; } if (rsa->meth->finish) { rsa->meth->finish(rsa); } METHOD_unref(rsa->meth); CRYPTO_free_ex_data(&g_ex_data_class, rsa, &rsa->ex_data); BN_clear_free(rsa->n); BN_clear_free(rsa->e); BN_clear_free(rsa->d); BN_clear_free(rsa->p); BN_clear_free(rsa->q); BN_clear_free(rsa->dmp1); BN_clear_free(rsa->dmq1); BN_clear_free(rsa->iqmp); for (u = 0; u < rsa->num_blindings; u++) { BN_BLINDING_free(rsa->blindings[u]); } OPENSSL_free(rsa->blindings); OPENSSL_free(rsa->blindings_inuse); CRYPTO_MUTEX_cleanup(&rsa->lock); OPENSSL_free(rsa); }
DSA *DSA_new_method(const ENGINE *engine) { DSA *dsa = (DSA *)OPENSSL_malloc(sizeof(DSA)); if (dsa == NULL) { OPENSSL_PUT_ERROR(DSA, DSA_new_method, ERR_R_MALLOC_FAILURE); return NULL; } memset(dsa, 0, sizeof(DSA)); if (engine) { dsa->meth = ENGINE_get_DSA_method(engine); } if (dsa->meth == NULL) { dsa->meth = (DSA_METHOD*) &DSA_default_method; } METHOD_ref(dsa->meth); dsa->write_params = 1; dsa->references = 1; CRYPTO_MUTEX_init(&dsa->method_mont_p_lock); if (!CRYPTO_new_ex_data(&g_ex_data_class, dsa, &dsa->ex_data)) { METHOD_unref(dsa->meth); OPENSSL_free(dsa); return NULL; } if (dsa->meth->init && !dsa->meth->init(dsa)) { CRYPTO_free_ex_data(&g_ex_data_class, dsa, &dsa->ex_data); METHOD_unref(dsa->meth); OPENSSL_free(dsa); return NULL; } return dsa; }
RSA *RSA_new_method(const ENGINE *engine) { RSA *rsa = (RSA *)OPENSSL_malloc(sizeof(RSA)); if (rsa == NULL) { OPENSSL_PUT_ERROR(RSA, RSA_new_method, ERR_R_MALLOC_FAILURE); return NULL; } memset(rsa, 0, sizeof(RSA)); if (engine) { rsa->meth = ENGINE_get_RSA_method(engine); } if (rsa->meth == NULL) { rsa->meth = (RSA_METHOD*) &RSA_default_method; } METHOD_ref(rsa->meth); rsa->references = 1; rsa->flags = rsa->meth->flags; if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_RSA, rsa, &rsa->ex_data)) { METHOD_unref(rsa->meth); OPENSSL_free(rsa); return NULL; } if (rsa->meth->init && !rsa->meth->init(rsa)) { CRYPTO_free_ex_data(CRYPTO_EX_INDEX_RSA, rsa, &rsa->ex_data); METHOD_unref(rsa->meth); OPENSSL_free(rsa); return NULL; } return rsa; }
void RSA_free(RSA *rsa) { unsigned u; if (rsa == NULL) { return; } if (CRYPTO_add(&rsa->references, -1, CRYPTO_LOCK_RSA) > 0) { return; } if (rsa->meth->finish) { rsa->meth->finish(rsa); } METHOD_unref(rsa->meth); CRYPTO_free_ex_data(CRYPTO_EX_INDEX_DSA, rsa, &rsa->ex_data); if (rsa->n != NULL) BN_clear_free(rsa->n); if (rsa->e != NULL) BN_clear_free(rsa->e); if (rsa->d != NULL) BN_clear_free(rsa->d); if (rsa->p != NULL) BN_clear_free(rsa->p); if (rsa->q != NULL) BN_clear_free(rsa->q); if (rsa->dmp1 != NULL) BN_clear_free(rsa->dmp1); if (rsa->dmq1 != NULL) BN_clear_free(rsa->dmq1); if (rsa->iqmp != NULL) BN_clear_free(rsa->iqmp); for (u = 0; u < rsa->num_blindings; u++) { BN_BLINDING_free(rsa->blindings[u]); } if (rsa->blindings != NULL) OPENSSL_free(rsa->blindings); if (rsa->blindings_inuse != NULL) OPENSSL_free(rsa->blindings_inuse); OPENSSL_free(rsa); }
void RSA_free(RSA *rsa) { unsigned u; if (rsa == NULL) { return; } if (!CRYPTO_refcount_dec_and_test_zero(&rsa->references)) { return; } if (rsa->meth->finish) { rsa->meth->finish(rsa); } METHOD_unref(rsa->meth); CRYPTO_free_ex_data(g_rsa_ex_data_class_bss_get(), rsa, &rsa->ex_data); BN_free(rsa->n); BN_free(rsa->e); BN_free(rsa->d); BN_free(rsa->p); BN_free(rsa->q); BN_free(rsa->dmp1); BN_free(rsa->dmq1); BN_free(rsa->iqmp); BN_MONT_CTX_free(rsa->mont_n); BN_MONT_CTX_free(rsa->mont_p); BN_MONT_CTX_free(rsa->mont_q); BN_free(rsa->d_fixed); BN_free(rsa->dmp1_fixed); BN_free(rsa->dmq1_fixed); BN_free(rsa->inv_small_mod_large_mont); for (u = 0; u < rsa->num_blindings; u++) { BN_BLINDING_free(rsa->blindings[u]); } OPENSSL_free(rsa->blindings); OPENSSL_free(rsa->blindings_inuse); CRYPTO_MUTEX_cleanup(&rsa->lock); OPENSSL_free(rsa); }
void RSA_free(RSA *rsa) { unsigned u; if (rsa == NULL) { return; } if (!CRYPTO_refcount_dec_and_test_zero(&rsa->references)) { return; } if (rsa->meth->finish) { rsa->meth->finish(rsa); } METHOD_unref(rsa->meth); CRYPTO_free_ex_data(&g_ex_data_class, rsa, &rsa->ex_data); BN_clear_free(rsa->n); BN_clear_free(rsa->e); BN_clear_free(rsa->d); BN_clear_free(rsa->p); BN_clear_free(rsa->q); BN_clear_free(rsa->dmp1); BN_clear_free(rsa->dmq1); BN_clear_free(rsa->iqmp); BN_MONT_CTX_free(rsa->mont_n); BN_MONT_CTX_free(rsa->mont_p); BN_MONT_CTX_free(rsa->mont_q); for (u = 0; u < rsa->num_blindings; u++) { BN_BLINDING_free(rsa->blindings[u]); } OPENSSL_free(rsa->blindings); OPENSSL_free(rsa->blindings_inuse); if (rsa->additional_primes != NULL) { sk_RSA_additional_prime_pop_free(rsa->additional_primes, RSA_additional_prime_free); } CRYPTO_MUTEX_cleanup(&rsa->lock); OPENSSL_free(rsa); }