diff options
Diffstat (limited to 'src/lib/libcrypto/dh/dh_key.c')
-rw-r--r-- | src/lib/libcrypto/dh/dh_key.c | 11 |
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) | |||
100 | static int generate_key(DH *dh) | 100 | static 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; |