summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/dh/dh_key.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/dh/dh_key.c')
-rw-r--r--src/lib/libcrypto/dh/dh_key.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/lib/libcrypto/dh/dh_key.c b/src/lib/libcrypto/dh/dh_key.c
index 6915d79dcc..22b087b778 100644
--- a/src/lib/libcrypto/dh/dh_key.c
+++ b/src/lib/libcrypto/dh/dh_key.c
@@ -100,7 +100,6 @@ DH_METHOD *DH_OpenSSL(void)
100static int generate_key(DH *dh) 100static int generate_key(DH *dh)
101 { 101 {
102 int ok=0; 102 int ok=0;
103 unsigned int i;
104 BN_CTX ctx; 103 BN_CTX ctx;
105 BN_MONT_CTX *mont; 104 BN_MONT_CTX *mont;
106 BIGNUM *pub_key=NULL,*priv_key=NULL; 105 BIGNUM *pub_key=NULL,*priv_key=NULL;
@@ -109,15 +108,11 @@ static int generate_key(DH *dh)
109 108
110 if (dh->priv_key == NULL) 109 if (dh->priv_key == NULL)
111 { 110 {
112 i=dh->length;
113 if (i == 0)
114 {
115 /* Make the number p-1 bits long */
116 i=BN_num_bits(dh->p)-1;
117 }
118 priv_key=BN_new(); 111 priv_key=BN_new();
119 if (priv_key == NULL) goto err; 112 if (priv_key == NULL) goto err;
120 if (!BN_rand(priv_key,i,0,0)) goto err; 113 do
114 if (!BN_rand_range(priv_key, dh->p)) goto err;
115 while (BN_is_zero(priv_key));
121 } 116 }
122 else 117 else
123 priv_key=dh->priv_key; 118 priv_key=dh->priv_key;