summaryrefslogtreecommitdiff
path: root/dh.c
diff options
context:
space:
mode:
authorColin Watson <cjwatson@debian.org>2004-05-01 11:41:25 +0000
committerColin Watson <cjwatson@debian.org>2004-05-01 11:41:25 +0000
commit915bfea2af69a3bb352a9b4e98e3434b8425124d (patch)
treeef732498a75f2e13a7a9827edc833dc58bc2a2af /dh.c
parent89e7a2dfe6044f3980098911a7470d401ff70eb1 (diff)
parent16f1d21ea191deaaeeba719d01c0ad82aa044653 (diff)
Merge 3.8.1p1 to the trunk, minus RFC.nroff (#211640).
Diffstat (limited to 'dh.c')
-rw-r--r--dh.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/dh.c b/dh.c
index c7a3e18be..afd1e05d0 100644
--- a/dh.c
+++ b/dh.c
@@ -23,7 +23,7 @@
23 */ 23 */
24 24
25#include "includes.h" 25#include "includes.h"
26RCSID("$OpenBSD: dh.c,v 1.26 2003/12/16 15:51:54 markus Exp $"); 26RCSID("$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 *
105choose_dh(int min, int wantbits, int max) 108choose_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)
194void 197void
195dh_gen_key(DH *dh, int need) 198dh_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",