diff options
| author | miod <> | 2016-11-08 20:01:06 +0000 |
|---|---|---|
| committer | miod <> | 2016-11-08 20:01:06 +0000 |
| commit | 5605f577187336e02b609bad906ab42478c7340a (patch) | |
| tree | 39318fe771bd94c87998e1dd5db6fa0412737647 /src/lib/libcrypto/evp | |
| parent | b7cb70902c58c927b969ecac46828718a5ff0497 (diff) | |
| download | openbsd-5605f577187336e02b609bad906ab42478c7340a.tar.gz openbsd-5605f577187336e02b609bad906ab42478c7340a.tar.bz2 openbsd-5605f577187336e02b609bad906ab42478c7340a.zip | |
Stricter checks of ASN1_INTEGER to reject ASN1_NEG_INTEGER in places when
they don't make sense.
ok beck@
Diffstat (limited to 'src/lib/libcrypto/evp')
| -rw-r--r-- | src/lib/libcrypto/evp/p5_crpt.c | 9 | ||||
| -rw-r--r-- | src/lib/libcrypto/evp/p5_crpt2.c | 8 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/lib/libcrypto/evp/p5_crpt.c b/src/lib/libcrypto/evp/p5_crpt.c index 626910fd7a..1d02cbf4a6 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.16 2015/09/10 15:56:25 jsing Exp $ */ | 1 | /* $OpenBSD: p5_crpt.c,v 1.17 2016/11/08 20:01:06 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 | */ |
| @@ -106,8 +106,11 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 106 | 106 | ||
| 107 | if (!pbe->iter) | 107 | if (!pbe->iter) |
| 108 | iter = 1; | 108 | iter = 1; |
| 109 | else | 109 | else if ((iter = ASN1_INTEGER_get(pbe->iter)) <= 0) { |
| 110 | iter = ASN1_INTEGER_get (pbe->iter); | 110 | EVPerr(EVP_F_PKCS5_PBE_KEYIVGEN, |
| 111 | EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS); | ||
| 112 | return 0; | ||
| 113 | } | ||
| 111 | salt = pbe->salt->data; | 114 | salt = pbe->salt->data; |
| 112 | saltlen = pbe->salt->length; | 115 | saltlen = pbe->salt->length; |
| 113 | 116 | ||
diff --git a/src/lib/libcrypto/evp/p5_crpt2.c b/src/lib/libcrypto/evp/p5_crpt2.c index 632c2c76ce..44e8b331fb 100644 --- a/src/lib/libcrypto/evp/p5_crpt2.c +++ b/src/lib/libcrypto/evp/p5_crpt2.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p5_crpt2.c,v 1.21 2015/09/10 15:56:25 jsing Exp $ */ | 1 | /* $OpenBSD: p5_crpt2.c,v 1.22 2016/11/08 20:01:06 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 | */ |
| @@ -293,7 +293,11 @@ PKCS5_v2_PBKDF2_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, | |||
| 293 | /* it seems that its all OK */ | 293 | /* it seems that its all OK */ |
| 294 | salt = kdf->salt->value.octet_string->data; | 294 | salt = kdf->salt->value.octet_string->data; |
| 295 | saltlen = kdf->salt->value.octet_string->length; | 295 | saltlen = kdf->salt->value.octet_string->length; |
| 296 | iter = ASN1_INTEGER_get(kdf->iter); | 296 | if ((iter = ASN1_INTEGER_get(kdf->iter)) <= 0) { |
| 297 | EVPerr(EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN, | ||
| 298 | EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS); | ||
| 299 | goto err; | ||
| 300 | } | ||
| 297 | if (!PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter, prfmd, | 301 | if (!PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter, prfmd, |
| 298 | keylen, key)) | 302 | keylen, key)) |
| 299 | goto err; | 303 | goto err; |
