summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/pem/pem_pkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/pem/pem_pkey.c')
-rw-r--r--src/lib/libcrypto/pem/pem_pkey.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/lib/libcrypto/pem/pem_pkey.c b/src/lib/libcrypto/pem/pem_pkey.c
index 4da4c31ce5..9ecdbd5419 100644
--- a/src/lib/libcrypto/pem/pem_pkey.c
+++ b/src/lib/libcrypto/pem/pem_pkey.c
@@ -70,8 +70,7 @@
70EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u) 70EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u)
71 { 71 {
72 char *nm=NULL; 72 char *nm=NULL;
73 const unsigned char *p=NULL; 73 unsigned char *p=NULL,*data=NULL;
74 unsigned char *data=NULL;
75 long len; 74 long len;
76 EVP_PKEY *ret=NULL; 75 EVP_PKEY *ret=NULL;
77 76
@@ -83,8 +82,6 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo
83 ret=d2i_PrivateKey(EVP_PKEY_RSA,x,&p,len); 82 ret=d2i_PrivateKey(EVP_PKEY_RSA,x,&p,len);
84 else if (strcmp(nm,PEM_STRING_DSA) == 0) 83 else if (strcmp(nm,PEM_STRING_DSA) == 0)
85 ret=d2i_PrivateKey(EVP_PKEY_DSA,x,&p,len); 84 ret=d2i_PrivateKey(EVP_PKEY_DSA,x,&p,len);
86 else if (strcmp(nm,PEM_STRING_ECPRIVATEKEY) == 0)
87 ret=d2i_PrivateKey(EVP_PKEY_EC,x,&p,len);
88 else if (strcmp(nm,PEM_STRING_PKCS8INF) == 0) { 85 else if (strcmp(nm,PEM_STRING_PKCS8INF) == 0) {
89 PKCS8_PRIV_KEY_INFO *p8inf; 86 PKCS8_PRIV_KEY_INFO *p8inf;
90 p8inf=d2i_PKCS8_PRIV_KEY_INFO(NULL, &p, len); 87 p8inf=d2i_PKCS8_PRIV_KEY_INFO(NULL, &p, len);
@@ -105,7 +102,7 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo
105 if (cb) klen=cb(psbuf,PEM_BUFSIZE,0,u); 102 if (cb) klen=cb(psbuf,PEM_BUFSIZE,0,u);
106 else klen=PEM_def_callback(psbuf,PEM_BUFSIZE,0,u); 103 else klen=PEM_def_callback(psbuf,PEM_BUFSIZE,0,u);
107 if (klen <= 0) { 104 if (klen <= 0) {
108 PEMerr(PEM_F_PEM_READ_BIO_PRIVATEKEY, 105 PEMerr(PEM_F_PEM_ASN1_READ_BIO,
109 PEM_R_BAD_PASSWORD_READ); 106 PEM_R_BAD_PASSWORD_READ);
110 X509_SIG_free(p8); 107 X509_SIG_free(p8);
111 goto err; 108 goto err;
@@ -122,10 +119,9 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo
122 } 119 }
123p8err: 120p8err:
124 if (ret == NULL) 121 if (ret == NULL)
125 PEMerr(PEM_F_PEM_READ_BIO_PRIVATEKEY,ERR_R_ASN1_LIB); 122 PEMerr(PEM_F_PEM_ASN1_READ_BIO,ERR_R_ASN1_LIB);
126err: 123err:
127 OPENSSL_free(nm); 124 OPENSSL_free(nm);
128 OPENSSL_cleanse(data, len);
129 OPENSSL_free(data); 125 OPENSSL_free(data);
130 return(ret); 126 return(ret);
131 } 127 }
@@ -138,7 +134,7 @@ EVP_PKEY *PEM_read_PrivateKey(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void
138 134
139 if ((b=BIO_new(BIO_s_file())) == NULL) 135 if ((b=BIO_new(BIO_s_file())) == NULL)
140 { 136 {
141 PEMerr(PEM_F_PEM_READ_PRIVATEKEY,ERR_R_BUF_LIB); 137 PEMerr(PEM_F_PEM_ASN1_READ,ERR_R_BUF_LIB);
142 return(0); 138 return(0);
143 } 139 }
144 BIO_set_fp(b,fp,BIO_NOCLOSE); 140 BIO_set_fp(b,fp,BIO_NOCLOSE);