Lines Matching defs:dsa
1 /* crypto/dsa/dsa_key.c */
64 #include <openssl/dsa.h>
71 static int dsa_builtin_keygen(DSA *dsa);
73 int DSA_generate_key(DSA *dsa)
76 if (FIPS_mode() && !(dsa->meth->flags & DSA_FLAG_FIPS_METHOD)
77 && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
83 if(dsa->meth->dsa_keygen)
84 return dsa->meth->dsa_keygen(dsa);
87 return FIPS_dsa_generate_key(dsa);
89 return dsa_builtin_keygen(dsa);
92 static int dsa_builtin_keygen(DSA *dsa)
100 if (dsa->priv_key == NULL)
105 priv_key=dsa->priv_key;
108 if (!BN_rand_range(priv_key,dsa->q)) goto err;
111 if (dsa->pub_key == NULL)
116 pub_key=dsa->pub_key;
122 if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0)
131 if (!BN_mod_exp(pub_key,dsa->g,prk,dsa->p,ctx)) goto err;
134 dsa->priv_key=priv_key;
135 dsa->pub_key=pub_key;
139 if ((pub_key != NULL) && (dsa->pub_key == NULL)) BN_free(pub_key);
140 if ((priv_key != NULL) && (dsa->priv_key == NULL)) BN_free(priv_key);