void EVP_PKEY_free(EVP_PKEY *x) { int i; if (x == NULL) return; CRYPTO_DOWN_REF(&x->references, &i, x->lock); REF_PRINT_COUNT("EVP_PKEY", x); if (i > 0) return; REF_ASSERT_ISNT(i < 0); EVP_PKEY_free_it(x); CRYPTO_THREAD_lock_free(x->lock); sk_X509_ATTRIBUTE_pop_free(x->attributes, X509_ATTRIBUTE_free); OPENSSL_free(x); }
void EVP_PKEY_free(EVP_PKEY *x) { int i; if (x == NULL) return; i = CRYPTO_add(&x->references, -1, CRYPTO_LOCK_EVP_PKEY); if (i > 0) return; EVP_PKEY_free_it(x); if (x->attributes) sk_X509_ATTRIBUTE_pop_free(x->attributes, X509_ATTRIBUTE_free); free(x); }
static int pkey_set_type(EVP_PKEY *pkey, int type, const char *str, int len) { const EVP_PKEY_ASN1_METHOD *ameth; ENGINE *e = NULL; if (pkey) { if (pkey->pkey.ptr) EVP_PKEY_free_it(pkey); /* If key type matches and a method exists then this * lookup has succeeded once so just indicate success. */ if ((type == pkey->save_type) && pkey->ameth) return 1; #ifndef OPENSSL_NO_ENGINE /* If we have an ENGINE release it */ if (pkey->engine) { ENGINE_finish(pkey->engine); pkey->engine = NULL; } #endif } if (str) ameth = EVP_PKEY_asn1_find_str(&e, str, len); else ameth = EVP_PKEY_asn1_find(&e, type); #ifndef OPENSSL_NO_ENGINE if (!pkey && e) ENGINE_finish(e); #endif if (!ameth) { EVPerr(EVP_F_PKEY_SET_TYPE, EVP_R_UNSUPPORTED_ALGORITHM); return 0; } if (pkey) { pkey->ameth = ameth; pkey->engine = e; pkey->type = pkey->ameth->pkey_id; pkey->save_type=type; } return 1; }
void EVP_PKEY_free(EVP_PKEY *x) { int i; if (x == NULL) return; i=CRYPTO_add(&x->references,-1,CRYPTO_LOCK_EVP_PKEY); #ifdef REF_PRINT REF_PRINT("EVP_PKEY",x); #endif if (i > 0) return; #ifdef REF_CHECK if (i < 0) { fprintf(stderr,"EVP_PKEY_free, bad reference count\n"); abort(); } #endif EVP_PKEY_free_it(x); OPENSSL_free(x); }
void EVP_PKEY_free(EVP_PKEY *x) { int i; if (x == NULL) return; i=CRYPTO_add(&x->references,-1,CRYPTO_LOCK_EVP_PKEY); #ifdef REF_PRINT REF_PRINT("EVP_PKEY",x); #endif if (i > 0) return; #ifdef REF_CHECK if (i < 0) { TINYCLR_SSL_FPRINTF(OPENSSL_TYPE__FILE_STDERR,"EVP_PKEY_free, bad reference count\n"); TINYCLR_SSL_ABORT(); } #endif EVP_PKEY_free_it(x); if (x->attributes) sk_X509_ATTRIBUTE_pop_free(x->attributes, X509_ATTRIBUTE_free); OPENSSL_free(x); }