Support for authority information access extension. Fix so EVP_PKEY_rset_*() check return codes.
diff --git a/crypto/evp/evp.h b/crypto/evp/evp.h index eb592f0..414387d 100644 --- a/crypto/evp/evp.h +++ b/crypto/evp/evp.h
@@ -682,10 +682,10 @@ #define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 #define EVP_F_EVP_PKEY_DECRYPT 104 #define EVP_F_EVP_PKEY_ENCRYPT 105 -#define EVP_F_EVP_PKEY_GET_DH 119 -#define EVP_F_EVP_PKEY_GET_DSA 120 -#define EVP_F_EVP_PKEY_GET_RSA 121 #define EVP_F_EVP_PKEY_NEW 106 +#define EVP_F_EVP_PKEY_RGET_DH 119 +#define EVP_F_EVP_PKEY_RGET_DSA 120 +#define EVP_F_EVP_PKEY_RGET_RSA 121 #define EVP_F_EVP_SIGNFINAL 107 #define EVP_F_EVP_VERIFYFINAL 108 #define EVP_F_PKCS5_PBE_KEYIVGEN 117
diff --git a/crypto/evp/evp_err.c b/crypto/evp/evp_err.c index 7d21938..6ef158c 100644 --- a/crypto/evp/evp_err.c +++ b/crypto/evp/evp_err.c
@@ -77,10 +77,10 @@ {ERR_PACK(0,EVP_F_EVP_PKEY_COPY_PARAMETERS,0), "EVP_PKEY_copy_parameters"}, {ERR_PACK(0,EVP_F_EVP_PKEY_DECRYPT,0), "EVP_PKEY_decrypt"}, {ERR_PACK(0,EVP_F_EVP_PKEY_ENCRYPT,0), "EVP_PKEY_encrypt"}, -{ERR_PACK(0,EVP_F_EVP_PKEY_GET_DH,0), "EVP_PKEY_get_DH"}, -{ERR_PACK(0,EVP_F_EVP_PKEY_GET_DSA,0), "EVP_PKEY_get_DSA"}, -{ERR_PACK(0,EVP_F_EVP_PKEY_GET_RSA,0), "EVP_PKEY_get_RSA"}, {ERR_PACK(0,EVP_F_EVP_PKEY_NEW,0), "EVP_PKEY_new"}, +{ERR_PACK(0,EVP_F_EVP_PKEY_RGET_DH,0), "EVP_PKEY_rget_DH"}, +{ERR_PACK(0,EVP_F_EVP_PKEY_RGET_DSA,0), "EVP_PKEY_rget_DSA"}, +{ERR_PACK(0,EVP_F_EVP_PKEY_RGET_RSA,0), "EVP_PKEY_rget_RSA"}, {ERR_PACK(0,EVP_F_EVP_SIGNFINAL,0), "EVP_SignFinal"}, {ERR_PACK(0,EVP_F_EVP_VERIFYFINAL,0), "EVP_VerifyFinal"}, {ERR_PACK(0,EVP_F_PKCS5_PBE_KEYIVGEN,0), "PKCS5_PBE_keyivgen"},
diff --git a/crypto/evp/p_lib.c b/crypto/evp/p_lib.c index 14ad90c..94c4047 100644 --- a/crypto/evp/p_lib.c +++ b/crypto/evp/p_lib.c
@@ -208,14 +208,15 @@ #ifndef NO_RSA int EVP_PKEY_rset_RSA(EVP_PKEY *pkey, RSA *key) { - CRYPTO_add(&key->references, 1, CRYPTO_LOCK_RSA); - return EVP_PKEY_assign_RSA(pkey, key); + int ret = EVP_PKEY_assign_RSA(pkey, key); + if(ret) CRYPTO_add(&key->references, 1, CRYPTO_LOCK_RSA); + return ret; } RSA *EVP_PKEY_rget_RSA(EVP_PKEY *pkey) { if(pkey->type != EVP_PKEY_RSA) { - EVPerr(EVP_F_EVP_PKEY_GET_RSA, EVP_R_EXPECTING_AN_RSA_KEY); + EVPerr(EVP_F_EVP_PKEY_RGET_RSA, EVP_R_EXPECTING_AN_RSA_KEY); return NULL; } CRYPTO_add(&pkey->pkey.rsa->references, 1, CRYPTO_LOCK_RSA); @@ -226,14 +227,15 @@ #ifndef NO_DSA int EVP_PKEY_rset_DSA(EVP_PKEY *pkey, DSA *key) { - CRYPTO_add(&key->references, 1, CRYPTO_LOCK_DSA); - return EVP_PKEY_assign_DSA(pkey, key); + int ret = EVP_PKEY_assign_DSA(pkey, key); + if(ret) CRYPTO_add(&key->references, 1, CRYPTO_LOCK_DSA); + return ret; } DSA *EVP_PKEY_rget_DSA(EVP_PKEY *pkey) { if(pkey->type != EVP_PKEY_DSA) { - EVPerr(EVP_F_EVP_PKEY_GET_DSA, EVP_R_EXPECTING_A_DSA_KEY); + EVPerr(EVP_F_EVP_PKEY_RGET_DSA, EVP_R_EXPECTING_A_DSA_KEY); return NULL; } CRYPTO_add(&pkey->pkey.dsa->references, 1, CRYPTO_LOCK_DSA); @@ -245,14 +247,15 @@ int EVP_PKEY_rset_DH(EVP_PKEY *pkey, DH *key) { - CRYPTO_add(&key->references, 1, CRYPTO_LOCK_DH); - return EVP_PKEY_assign_DH(pkey, key); + int ret = EVP_PKEY_assign_DH(pkey, key); + if(ret) CRYPTO_add(&key->references, 1, CRYPTO_LOCK_DH); + return ret; } DH *EVP_PKEY_rget_DH(EVP_PKEY *pkey) { if(pkey->type != EVP_PKEY_DH) { - EVPerr(EVP_F_EVP_PKEY_GET_DH, EVP_R_EXPECTING_A_DH_KEY); + EVPerr(EVP_F_EVP_PKEY_RGET_DH, EVP_R_EXPECTING_A_DH_KEY); return NULL; } CRYPTO_add(&pkey->pkey.dh->references, 1, CRYPTO_LOCK_DH);