diff options
Diffstat (limited to 'src/crypto/evp/evp_asn1.c')
-rw-r--r-- | src/crypto/evp/evp_asn1.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/src/crypto/evp/evp_asn1.c b/src/crypto/evp/evp_asn1.c index c57f411..356c62b 100644 --- a/src/crypto/evp/evp_asn1.c +++ b/src/crypto/evp/evp_asn1.c @@ -83,22 +83,16 @@ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **out, const uint8_t **inp, goto err; } - const uint8_t *in = *inp; if (!ret->ameth->old_priv_decode || - !ret->ameth->old_priv_decode(ret, &in, len)) { + !ret->ameth->old_priv_decode(ret, inp, len)) { if (ret->ameth->priv_decode) { - /* Reset |in| in case |old_priv_decode| advanced it on error. */ - in = *inp; - PKCS8_PRIV_KEY_INFO *p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL, &in, len); + PKCS8_PRIV_KEY_INFO *p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL, inp, len); if (!p8) { goto err; } EVP_PKEY_free(ret); ret = EVP_PKCS82PKEY(p8); PKCS8_PRIV_KEY_INFO_free(p8); - if (ret == NULL) { - goto err; - } } else { OPENSSL_PUT_ERROR(EVP, ERR_R_ASN1_LIB); goto err; @@ -108,7 +102,6 @@ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **out, const uint8_t **inp, if (out != NULL) { *out = ret; } - *inp = in; return ret; err: @@ -136,8 +129,7 @@ EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **out, const uint8_t **inp, long len) { keytype = EVP_PKEY_EC; } else if (sk_ASN1_TYPE_num(inkey) == 3) { /* This seems to be PKCS8, not traditional format */ - p = *inp; - PKCS8_PRIV_KEY_INFO *p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL, &p, len); + PKCS8_PRIV_KEY_INFO *p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL, inp, len); EVP_PKEY *ret; sk_ASN1_TYPE_pop_free(inkey, ASN1_TYPE_free); @@ -147,11 +139,6 @@ EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **out, const uint8_t **inp, long len) { } ret = EVP_PKCS82PKEY(p8); PKCS8_PRIV_KEY_INFO_free(p8); - if (ret == NULL) { - return NULL; - } - - *inp = p; if (out) { *out = ret; } |