summaryrefslogtreecommitdiffstats
path: root/src/crypto/pem
diff options
context:
space:
mode:
authorAdam Langley <agl@google.com>2015-06-12 16:28:27 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-06-12 16:28:27 +0000
commit9701a2fbe20a18d08253e84e8ec39d94db5376e0 (patch)
tree26c038b10145f502cb98f5675516a7ed6bd27fdb /src/crypto/pem
parent82ea518198c8ce74418c90597ccf8f444d1154ab (diff)
parent53b272a2813a0b11f107d77100ff8805ada8fbd2 (diff)
downloadexternal_boringssl-9701a2fbe20a18d08253e84e8ec39d94db5376e0.zip
external_boringssl-9701a2fbe20a18d08253e84e8ec39d94db5376e0.tar.gz
external_boringssl-9701a2fbe20a18d08253e84e8ec39d94db5376e0.tar.bz2
am 53b272a2: Bump revision of BoringSSL.
* commit '53b272a2813a0b11f107d77100ff8805ada8fbd2': Bump revision of BoringSSL.
Diffstat (limited to 'src/crypto/pem')
-rw-r--r--src/crypto/pem/pem_lib.c23
-rw-r--r--src/crypto/pem/pem_pk8.c8
-rw-r--r--src/crypto/pem/pem_pkey.c4
3 files changed, 25 insertions, 10 deletions
diff --git a/src/crypto/pem/pem_lib.c b/src/crypto/pem/pem_lib.c
index 48e3297..5201467 100644
--- a/src/crypto/pem/pem_lib.c
+++ b/src/crypto/pem/pem_lib.c
@@ -331,8 +331,9 @@ int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp,
if (kstr == NULL)
{
klen = 0;
- if (callback)
- klen=(*callback)(buf,PEM_BUFSIZE,1,u);
+ if (!callback)
+ callback = PEM_def_callback;
+ klen=(*callback)(buf,PEM_BUFSIZE,1,u);
if (klen <= 0)
{
OPENSSL_PUT_ERROR(PEM, PEM_ASN1_write_bio, PEM_R_READ_KEY);
@@ -403,8 +404,8 @@ int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
if (cipher->cipher == NULL) return(1);
klen = 0;
- if (callback)
- klen=callback(buf,PEM_BUFSIZE,0,u);
+ if (!callback) callback = PEM_def_callback;
+ klen=callback(buf,PEM_BUFSIZE,0,u);
if (klen <= 0)
{
OPENSSL_PUT_ERROR(PEM, PEM_do_header, PEM_R_BAD_PASSWORD_READ);
@@ -811,3 +812,17 @@ int pem_check_suffix(const char *pem_str, const char *suffix)
return p - pem_str;
}
+int PEM_def_callback(char *buf, int size, int rwflag, void *userdata)
+ {
+ if (!buf || !userdata)
+ {
+ return 0;
+ }
+ size_t len = strlen((char *) userdata);
+ if (len >= (size_t) size)
+ {
+ return 0;
+ }
+ strcpy(buf, (char *) userdata);
+ return len;
+ }
diff --git a/src/crypto/pem/pem_pk8.c b/src/crypto/pem/pem_pk8.c
index 383a524..035038e 100644
--- a/src/crypto/pem/pem_pk8.c
+++ b/src/crypto/pem/pem_pk8.c
@@ -124,8 +124,8 @@ static int do_pk8pkey(BIO *bp, EVP_PKEY *x, int isder, int nid, const EVP_CIPHER
if(enc || (nid != -1)) {
if(!kstr) {
klen = 0;
- if (cb)
- klen = cb(buf, PEM_BUFSIZE, 1, u);
+ if (!cb) cb = PEM_def_callback;
+ klen = cb(buf, PEM_BUFSIZE, 1, u);
if(klen <= 0) {
OPENSSL_PUT_ERROR(PEM, do_pk8pkey, PEM_R_READ_KEY);
PKCS8_PRIV_KEY_INFO_free(p8inf);
@@ -160,8 +160,8 @@ EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo
if(!p8) return NULL;
klen = 0;
- if (cb)
- klen=cb(psbuf,PEM_BUFSIZE,0,u);
+ if (!cb) cb = PEM_def_callback;
+ klen=cb(psbuf,PEM_BUFSIZE,0,u);
if (klen <= 0) {
OPENSSL_PUT_ERROR(PEM, d2i_PKCS8PrivateKey_bio, PEM_R_BAD_PASSWORD_READ);
X509_SIG_free(p8);
diff --git a/src/crypto/pem/pem_pkey.c b/src/crypto/pem/pem_pkey.c
index c0aba51..fe58558 100644
--- a/src/crypto/pem/pem_pkey.c
+++ b/src/crypto/pem/pem_pkey.c
@@ -106,7 +106,8 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo
if(!p8) goto p8err;
klen = 0;
- if (cb) klen=cb(psbuf,PEM_BUFSIZE,0,u);
+ if (!cb) cb = PEM_def_callback;
+ klen=cb(psbuf,PEM_BUFSIZE,0,u);
if (klen <= 0) {
OPENSSL_PUT_ERROR(PEM, PEM_read_bio_PrivateKey, PEM_R_BAD_PASSWORD_READ);
X509_SIG_free(p8);
@@ -309,4 +310,3 @@ DH *PEM_read_DHparams(FILE *fp, DH **x, pem_password_cb *cb, void *u)
return(ret);
}
#endif
-