Add secure DSA nonce flag.
[openssl.git] / crypto / dsa / dsa_sign.c
index 599093a4a86d647b9271060583d22e57fcd7fd2b..b7e4caab2aff91ac2d37ced1621f080ef717ce78 100644 (file)
@@ -72,5 +72,12 @@ DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
 
 int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
        {
-       return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp);
+       if (dsa->flags & DSA_FLAG_NONCE_FROM_HASH)
+               {
+               /* One cannot precompute the DSA nonce if it is required to
+                * depend on the message. */
+               DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_NONCE_CANNOT_BE_PRECOMPUTED);
+               return 0;
+               }
+       return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp, NULL, 0);
        }