diff options
Diffstat (limited to 'src/lib/libcrypto/bn/bn_prime.c')
| -rw-r--r-- | src/lib/libcrypto/bn/bn_prime.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/lib/libcrypto/bn/bn_prime.c b/src/lib/libcrypto/bn/bn_prime.c index c2fd0fc2e9..b8f0eb69ce 100644 --- a/src/lib/libcrypto/bn/bn_prime.c +++ b/src/lib/libcrypto/bn/bn_prime.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: bn_prime.c,v 1.31 2023/04/25 19:57:59 tb Exp $ */ | 1 | /* $OpenBSD: bn_prime.c,v 1.32 2023/05/10 12:21:55 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -195,12 +195,12 @@ BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, | |||
| 195 | goto err; | 195 | goto err; |
| 196 | 196 | ||
| 197 | if (!safe) { | 197 | if (!safe) { |
| 198 | if (!bn_is_prime_bpsw(&is_prime, ret, ctx)) | 198 | if (!bn_is_prime_bpsw(&is_prime, ret, ctx, 1)) |
| 199 | goto err; | 199 | goto err; |
| 200 | if (!is_prime) | 200 | if (!is_prime) |
| 201 | goto loop; | 201 | goto loop; |
| 202 | } else { | 202 | } else { |
| 203 | if (!bn_is_prime_bpsw(&is_prime, ret, ctx)) | 203 | if (!bn_is_prime_bpsw(&is_prime, ret, ctx, 1)) |
| 204 | goto err; | 204 | goto err; |
| 205 | if (!is_prime) | 205 | if (!is_prime) |
| 206 | goto loop; | 206 | goto loop; |
| @@ -213,7 +213,7 @@ BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, | |||
| 213 | if (!BN_rshift1(p, ret)) | 213 | if (!BN_rshift1(p, ret)) |
| 214 | goto err; | 214 | goto err; |
| 215 | 215 | ||
| 216 | if (!bn_is_prime_bpsw(&is_prime, p, ctx)) | 216 | if (!bn_is_prime_bpsw(&is_prime, p, ctx, 1)) |
| 217 | goto err; | 217 | goto err; |
| 218 | if (!is_prime) | 218 | if (!is_prime) |
| 219 | goto loop; | 219 | goto loop; |
| @@ -243,8 +243,14 @@ BN_is_prime_fasttest_ex(const BIGNUM *a, int checks, BN_CTX *ctx_passed, | |||
| 243 | { | 243 | { |
| 244 | int is_prime; | 244 | int is_prime; |
| 245 | 245 | ||
| 246 | if (checks < 0) | ||
| 247 | return -1; | ||
| 248 | |||
| 249 | if (checks == BN_prime_checks) | ||
| 250 | checks = BN_prime_checks_for_size(BN_num_bits(a)); | ||
| 251 | |||
| 246 | /* XXX - tickle BN_GENCB in bn_is_prime_bpsw(). */ | 252 | /* XXX - tickle BN_GENCB in bn_is_prime_bpsw(). */ |
| 247 | if (!bn_is_prime_bpsw(&is_prime, a, ctx_passed)) | 253 | if (!bn_is_prime_bpsw(&is_prime, a, ctx_passed, checks)) |
| 248 | return -1; | 254 | return -1; |
| 249 | 255 | ||
| 250 | return is_prime; | 256 | return is_prime; |
