diff options
Diffstat (limited to 'dh.c')
-rw-r--r-- | dh.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -23,7 +23,7 @@ | |||
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | RCSID("$OpenBSD: dh.c,v 1.26 2003/12/16 15:51:54 markus Exp $"); | 26 | RCSID("$OpenBSD: dh.c,v 1.29 2004/02/27 22:49:27 dtucker Exp $"); |
27 | 27 | ||
28 | #include "xmalloc.h" | 28 | #include "xmalloc.h" |
29 | 29 | ||
@@ -91,6 +91,9 @@ parse_prime(int linenum, char *line, struct dhgroup *dhg) | |||
91 | if (BN_num_bits(dhg->p) != dhg->size) | 91 | if (BN_num_bits(dhg->p) != dhg->size) |
92 | goto failclean; | 92 | goto failclean; |
93 | 93 | ||
94 | if (BN_is_zero(dhg->g) || BN_is_one(dhg->g)) | ||
95 | goto failclean; | ||
96 | |||
94 | return (1); | 97 | return (1); |
95 | 98 | ||
96 | failclean: | 99 | failclean: |
@@ -105,7 +108,7 @@ DH * | |||
105 | choose_dh(int min, int wantbits, int max) | 108 | choose_dh(int min, int wantbits, int max) |
106 | { | 109 | { |
107 | FILE *f; | 110 | FILE *f; |
108 | char line[2048]; | 111 | char line[4096]; |
109 | int best, bestcount, which; | 112 | int best, bestcount, which; |
110 | int linenum; | 113 | int linenum; |
111 | struct dhgroup dhg; | 114 | struct dhgroup dhg; |
@@ -194,7 +197,7 @@ dh_pub_is_valid(DH *dh, BIGNUM *dh_pub) | |||
194 | void | 197 | void |
195 | dh_gen_key(DH *dh, int need) | 198 | dh_gen_key(DH *dh, int need) |
196 | { | 199 | { |
197 | int i, bits_set = 0, tries = 0; | 200 | int i, bits_set, tries = 0; |
198 | 201 | ||
199 | if (dh->p == NULL) | 202 | if (dh->p == NULL) |
200 | fatal("dh_gen_key: dh->p == NULL"); | 203 | fatal("dh_gen_key: dh->p == NULL"); |
@@ -211,7 +214,7 @@ dh_gen_key(DH *dh, int need) | |||
211 | fatal("dh_gen_key: BN_rand failed"); | 214 | fatal("dh_gen_key: BN_rand failed"); |
212 | if (DH_generate_key(dh) == 0) | 215 | if (DH_generate_key(dh) == 0) |
213 | fatal("DH_generate_key"); | 216 | fatal("DH_generate_key"); |
214 | for (i = 0; i <= BN_num_bits(dh->priv_key); i++) | 217 | for (i = 0, bits_set = 0; i <= BN_num_bits(dh->priv_key); i++) |
215 | if (BN_is_bit_set(dh->priv_key, i)) | 218 | if (BN_is_bit_set(dh->priv_key, i)) |
216 | bits_set++; | 219 | bits_set++; |
217 | debug2("dh_gen_key: priv key bits set: %d/%d", | 220 | debug2("dh_gen_key: priv key bits set: %d/%d", |