diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/evp/p5_crpt.c | 14 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/evp/p5_crpt.c | 14 |
2 files changed, 16 insertions, 12 deletions
diff --git a/src/lib/libcrypto/evp/p5_crpt.c b/src/lib/libcrypto/evp/p5_crpt.c index ec8d816f32..3b1419b545 100644 --- a/src/lib/libcrypto/evp/p5_crpt.c +++ b/src/lib/libcrypto/evp/p5_crpt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p5_crpt.c,v 1.13 2014/07/11 08:44:48 jsing Exp $ */ | 1 | /* $OpenBSD: p5_crpt.c,v 1.14 2014/07/13 12:46:44 miod Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -86,7 +86,6 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 86 | const unsigned char *pbuf; | 86 | const unsigned char *pbuf; |
| 87 | int mdsize; | 87 | int mdsize; |
| 88 | int rv = 0; | 88 | int rv = 0; |
| 89 | EVP_MD_CTX_init(&ctx); | ||
| 90 | 89 | ||
| 91 | /* Extract useful info from parameter */ | 90 | /* Extract useful info from parameter */ |
| 92 | if (param == NULL || param->type != V_ASN1_SEQUENCE || | 91 | if (param == NULL || param->type != V_ASN1_SEQUENCE || |
| @@ -95,6 +94,10 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 95 | return 0; | 94 | return 0; |
| 96 | } | 95 | } |
| 97 | 96 | ||
| 97 | mdsize = EVP_MD_size(md); | ||
| 98 | if (mdsize < 0) | ||
| 99 | return 0; | ||
| 100 | |||
| 98 | pbuf = param->value.sequence->data; | 101 | pbuf = param->value.sequence->data; |
| 99 | if (!(pbe = d2i_PBEPARAM(NULL, &pbuf, param->value.sequence->length))) { | 102 | if (!(pbe = d2i_PBEPARAM(NULL, &pbuf, param->value.sequence->length))) { |
| 100 | EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_DECODE_ERROR); | 103 | EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_DECODE_ERROR); |
| @@ -113,18 +116,16 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 113 | else if (passlen == -1) | 116 | else if (passlen == -1) |
| 114 | passlen = strlen(pass); | 117 | passlen = strlen(pass); |
| 115 | 118 | ||
| 119 | EVP_MD_CTX_init(&ctx); | ||
| 120 | |||
| 116 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) | 121 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) |
| 117 | goto err; | 122 | goto err; |
| 118 | if (!EVP_DigestUpdate(&ctx, pass, passlen)) | 123 | if (!EVP_DigestUpdate(&ctx, pass, passlen)) |
| 119 | goto err; | 124 | goto err; |
| 120 | if (!EVP_DigestUpdate(&ctx, salt, saltlen)) | 125 | if (!EVP_DigestUpdate(&ctx, salt, saltlen)) |
| 121 | goto err; | 126 | goto err; |
| 122 | PBEPARAM_free(pbe); | ||
| 123 | if (!EVP_DigestFinal_ex(&ctx, md_tmp, NULL)) | 127 | if (!EVP_DigestFinal_ex(&ctx, md_tmp, NULL)) |
| 124 | goto err; | 128 | goto err; |
| 125 | mdsize = EVP_MD_size(md); | ||
| 126 | if (mdsize < 0) | ||
| 127 | return 0; | ||
| 128 | for (i = 1; i < iter; i++) { | 129 | for (i = 1; i < iter; i++) { |
| 129 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) | 130 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) |
| 130 | goto err; | 131 | goto err; |
| @@ -146,5 +147,6 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 146 | rv = 1; | 147 | rv = 1; |
| 147 | err: | 148 | err: |
| 148 | EVP_MD_CTX_cleanup(&ctx); | 149 | EVP_MD_CTX_cleanup(&ctx); |
| 150 | PBEPARAM_free(pbe); | ||
| 149 | return rv; | 151 | return rv; |
| 150 | } | 152 | } |
diff --git a/src/lib/libssl/src/crypto/evp/p5_crpt.c b/src/lib/libssl/src/crypto/evp/p5_crpt.c index ec8d816f32..3b1419b545 100644 --- a/src/lib/libssl/src/crypto/evp/p5_crpt.c +++ b/src/lib/libssl/src/crypto/evp/p5_crpt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p5_crpt.c,v 1.13 2014/07/11 08:44:48 jsing Exp $ */ | 1 | /* $OpenBSD: p5_crpt.c,v 1.14 2014/07/13 12:46:44 miod Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -86,7 +86,6 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 86 | const unsigned char *pbuf; | 86 | const unsigned char *pbuf; |
| 87 | int mdsize; | 87 | int mdsize; |
| 88 | int rv = 0; | 88 | int rv = 0; |
| 89 | EVP_MD_CTX_init(&ctx); | ||
| 90 | 89 | ||
| 91 | /* Extract useful info from parameter */ | 90 | /* Extract useful info from parameter */ |
| 92 | if (param == NULL || param->type != V_ASN1_SEQUENCE || | 91 | if (param == NULL || param->type != V_ASN1_SEQUENCE || |
| @@ -95,6 +94,10 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 95 | return 0; | 94 | return 0; |
| 96 | } | 95 | } |
| 97 | 96 | ||
| 97 | mdsize = EVP_MD_size(md); | ||
| 98 | if (mdsize < 0) | ||
| 99 | return 0; | ||
| 100 | |||
| 98 | pbuf = param->value.sequence->data; | 101 | pbuf = param->value.sequence->data; |
| 99 | if (!(pbe = d2i_PBEPARAM(NULL, &pbuf, param->value.sequence->length))) { | 102 | if (!(pbe = d2i_PBEPARAM(NULL, &pbuf, param->value.sequence->length))) { |
| 100 | EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_DECODE_ERROR); | 103 | EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, EVP_R_DECODE_ERROR); |
| @@ -113,18 +116,16 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 113 | else if (passlen == -1) | 116 | else if (passlen == -1) |
| 114 | passlen = strlen(pass); | 117 | passlen = strlen(pass); |
| 115 | 118 | ||
| 119 | EVP_MD_CTX_init(&ctx); | ||
| 120 | |||
| 116 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) | 121 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) |
| 117 | goto err; | 122 | goto err; |
| 118 | if (!EVP_DigestUpdate(&ctx, pass, passlen)) | 123 | if (!EVP_DigestUpdate(&ctx, pass, passlen)) |
| 119 | goto err; | 124 | goto err; |
| 120 | if (!EVP_DigestUpdate(&ctx, salt, saltlen)) | 125 | if (!EVP_DigestUpdate(&ctx, salt, saltlen)) |
| 121 | goto err; | 126 | goto err; |
| 122 | PBEPARAM_free(pbe); | ||
| 123 | if (!EVP_DigestFinal_ex(&ctx, md_tmp, NULL)) | 127 | if (!EVP_DigestFinal_ex(&ctx, md_tmp, NULL)) |
| 124 | goto err; | 128 | goto err; |
| 125 | mdsize = EVP_MD_size(md); | ||
| 126 | if (mdsize < 0) | ||
| 127 | return 0; | ||
| 128 | for (i = 1; i < iter; i++) { | 129 | for (i = 1; i < iter; i++) { |
| 129 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) | 130 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) |
| 130 | goto err; | 131 | goto err; |
| @@ -146,5 +147,6 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 146 | rv = 1; | 147 | rv = 1; |
| 147 | err: | 148 | err: |
| 148 | EVP_MD_CTX_cleanup(&ctx); | 149 | EVP_MD_CTX_cleanup(&ctx); |
| 150 | PBEPARAM_free(pbe); | ||
| 149 | return rv; | 151 | return rv; |
| 150 | } | 152 | } |
