diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2006-05-14 18:35:42 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2006-05-14 18:35:42 +0000 |
commit | 76240b3a394c116a4307b7234ca57eea8e2d412d (patch) | |
tree | ed4a6c009b1a9159c3e5c72eaeeefb275e3f3179 | |
parent | 34b3c72e4eec1dbb1a990d7b893d548572ab4e82 (diff) |
Check for deprecated private key types before PKCS#8 types.
-rw-r--r-- | crypto/pem/pem_pkey.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/crypto/pem/pem_pkey.c b/crypto/pem/pem_pkey.c index 7747a057f4..acd2dc2504 100644 --- a/crypto/pem/pem_pkey.c +++ b/crypto/pem/pem_pkey.c @@ -82,15 +82,7 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo return NULL; p = data; - if ((slen = pem_check_suffix(nm, "PRIVATE KEY")) > 0) - { - const EVP_PKEY_ASN1_METHOD *ameth; - ameth = EVP_PKEY_asn1_find_str(nm, slen); - if (!ameth || !ameth->old_priv_decode) - goto p8err; - ret=d2i_PrivateKey(ameth->pkey_id,x,&p,len); - } - else if (strcmp(nm,PEM_STRING_PKCS8INF) == 0) { + if (strcmp(nm,PEM_STRING_PKCS8INF) == 0) { PKCS8_PRIV_KEY_INFO *p8inf; p8inf=d2i_PKCS8_PRIV_KEY_INFO(NULL, &p, len); if(!p8inf) goto p8err; @@ -124,7 +116,14 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo *x = ret; } PKCS8_PRIV_KEY_INFO_free(p8inf); - } + } else if ((slen = pem_check_suffix(nm, "PRIVATE KEY")) > 0) + { + const EVP_PKEY_ASN1_METHOD *ameth; + ameth = EVP_PKEY_asn1_find_str(nm, slen); + if (!ameth || !ameth->old_priv_decode) + goto p8err; + ret=d2i_PrivateKey(ameth->pkey_id,x,&p,len); + } p8err: if (ret == NULL) PEMerr(PEM_F_PEM_READ_BIO_PRIVATEKEY,ERR_R_ASN1_LIB); |