Remove kinv/r fields from DSA structure.
authorDr. Stephen Henson <steve@openssl.org>
Mon, 7 Mar 2016 17:31:00 +0000 (17:31 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Mon, 7 Mar 2016 22:15:04 +0000 (22:15 +0000)
The kinv/r fields in the DSA structure are not used by OpenSSL internally
and should not be used in general.

Reviewed-by: Rich Salz <rsalz@openssl.org>
crypto/dsa/dsa_lib.c
crypto/dsa/dsa_ossl.c
include/openssl/dsa.h

index f89297313a9e578935c8e08236305b609d8098ec..f7795b27bd036a418915df62ca32cbcb2eaaac88 100644 (file)
@@ -180,8 +180,6 @@ void DSA_free(DSA *r)
     BN_clear_free(r->g);
     BN_clear_free(r->pub_key);
     BN_clear_free(r->priv_key);
-    BN_clear_free(r->kinv);
-    BN_clear_free(r->r);
     OPENSSL_free(r);
 }
 
index cbc1e41bb96610e1fd006c325b1215756370979e..0874e89141a8553442faa36225ec7d368c44f218 100644 (file)
@@ -158,16 +158,8 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
     if (ctx == NULL)
         goto err;
  redo:
-    if ((dsa->kinv == NULL) || (dsa->r == NULL)) {
-        if (!dsa_sign_setup(dsa, ctx, &kinv, &r, dgst, dlen))
-            goto err;
-    } else {
-        kinv = dsa->kinv;
-        dsa->kinv = NULL;
-        r = dsa->r;
-        dsa->r = NULL;
-        noredo = 1;
-    }
+    if (!dsa_sign_setup(dsa, ctx, &kinv, &r, dgst, dlen))
+        goto err;
 
     if (dlen > BN_num_bytes(dsa->q))
         /*
index 643fee4731aebfda1887f44b90171d65886b6370..a338eaedca51b21d3077e6e75f99d7e394f3aae5 100644 (file)
@@ -164,8 +164,6 @@ struct dsa_st {
     BIGNUM *g;
     BIGNUM *pub_key;            /* y public key */
     BIGNUM *priv_key;           /* x private key */
-    BIGNUM *kinv;               /* Signing pre-calc */
-    BIGNUM *r;                  /* Signing pre-calc */
     int flags;
     /* Normally used to cache montgomery values */
     BN_MONT_CTX *method_mont_p;