diff options
Diffstat (limited to 'dh.c')
-rw-r--r-- | dh.c | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: dh.c,v 1.24 2003/04/08 20:21:28 itojun Exp $"); | 26 | RCSID("$OpenBSD: dh.c,v 1.26 2003/12/16 15:51:54 markus Exp $"); |
27 | 27 | ||
28 | #include "xmalloc.h" | 28 | #include "xmalloc.h" |
29 | 29 | ||
@@ -198,7 +198,7 @@ dh_gen_key(DH *dh, int need) | |||
198 | 198 | ||
199 | if (dh->p == NULL) | 199 | if (dh->p == NULL) |
200 | fatal("dh_gen_key: dh->p == NULL"); | 200 | fatal("dh_gen_key: dh->p == NULL"); |
201 | if (2*need >= BN_num_bits(dh->p)) | 201 | if (need > INT_MAX / 2 || 2 * need >= BN_num_bits(dh->p)) |
202 | fatal("dh_gen_key: group too small: %d (2*need %d)", | 202 | fatal("dh_gen_key: group too small: %d (2*need %d)", |
203 | BN_num_bits(dh->p), 2*need); | 203 | BN_num_bits(dh->p), 2*need); |
204 | do { | 204 | do { |
@@ -279,11 +279,9 @@ int | |||
279 | dh_estimate(int bits) | 279 | dh_estimate(int bits) |
280 | { | 280 | { |
281 | 281 | ||
282 | if (bits < 64) | 282 | if (bits <= 128) |
283 | return (512); /* O(2**63) */ | ||
284 | if (bits < 128) | ||
285 | return (1024); /* O(2**86) */ | 283 | return (1024); /* O(2**86) */ |
286 | if (bits < 192) | 284 | if (bits <= 192) |
287 | return (2048); /* O(2**116) */ | 285 | return (2048); /* O(2**116) */ |
288 | return (4096); /* O(2**156) */ | 286 | return (4096); /* O(2**156) */ |
289 | } | 287 | } |