Make DSA_sign() test for negative p,q,g values.
[openssl.git] / crypto / dsa / dsa_ossl.c
index 822e51786a22cc18fb214c07d8aa0e5807d891fa..38e8fa145233ba5ccb0cd1d47bd3825adf496c4c 100644 (file)
@@ -234,7 +234,10 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
     /* Reject obviously invalid parameters */
     if (BN_is_zero(dsa->params.p)
         || BN_is_zero(dsa->params.q)
-        || BN_is_zero(dsa->params.g)) {
+        || BN_is_zero(dsa->params.g)
+        || BN_is_negative(dsa->params.p)
+        || BN_is_negative(dsa->params.q)
+        || BN_is_negative(dsa->params.g)) {
         ERR_raise(ERR_LIB_DSA, DSA_R_INVALID_PARAMETERS);
         return 0;
     }