diff options
Diffstat (limited to 'src/lib/libcrypto/dsa/dsa_key.c')
-rw-r--r-- | src/lib/libcrypto/dsa/dsa_key.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/libcrypto/dsa/dsa_key.c b/src/lib/libcrypto/dsa/dsa_key.c index 30607ca579..980b6dc2d3 100644 --- a/src/lib/libcrypto/dsa/dsa_key.c +++ b/src/lib/libcrypto/dsa/dsa_key.c | |||
@@ -90,8 +90,22 @@ int DSA_generate_key(DSA *dsa) | |||
90 | } | 90 | } |
91 | else | 91 | else |
92 | pub_key=dsa->pub_key; | 92 | pub_key=dsa->pub_key; |
93 | |||
94 | { | ||
95 | BIGNUM local_prk; | ||
96 | BIGNUM *prk; | ||
97 | |||
98 | if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0) | ||
99 | { | ||
100 | BN_init(&local_prk); | ||
101 | prk = &local_prk; | ||
102 | BN_with_flags(prk, priv_key, BN_FLG_EXP_CONSTTIME); | ||
103 | } | ||
104 | else | ||
105 | prk = priv_key; | ||
93 | 106 | ||
94 | if (!BN_mod_exp(pub_key,dsa->g,priv_key,dsa->p,ctx)) goto err; | 107 | if (!BN_mod_exp(pub_key,dsa->g,prk,dsa->p,ctx)) goto err; |
108 | } | ||
95 | 109 | ||
96 | dsa->priv_key=priv_key; | 110 | dsa->priv_key=priv_key; |
97 | dsa->pub_key=pub_key; | 111 | dsa->pub_key=pub_key; |