Make ecdsatest work with nonces.
authorDr. Stephen Henson <steve@openssl.org>
Fri, 19 Jul 2013 13:11:43 +0000 (14:11 +0100)
committerDr. Stephen Henson <steve@openssl.org>
Fri, 19 Jul 2013 13:11:43 +0000 (14:11 +0100)
Update ecdsatest to use ECDSA_sign_setup and ECDSA_sign_ex, this
avoids the nonce generation which would otherwise break the test.

Reinstate ecdsatest.

crypto/ecdsa/ecdsatest.c
test/Makefile

index 22c00a7df42cf4716f0392c407c150d3dc14aad1..87c0a65abf42a118802e0d706a99114dff2f0476 100644 (file)
@@ -193,6 +193,7 @@ int x9_62_test_internal(BIO *out, int nid, const char *r_in, const char *s_in)
        EC_KEY    *key = NULL;
        ECDSA_SIG *signature = NULL;
        BIGNUM    *r = NULL, *s = NULL;
+       BIGNUM    *kinv = NULL, *rp = NULL;
 
        EVP_MD_CTX_init(&md_ctx);
        /* get the message digest */
@@ -212,7 +213,10 @@ int x9_62_test_internal(BIO *out, int nid, const char *r_in, const char *s_in)
        (void)BIO_flush(out);
        /* create the signature */
        use_fake = 1;
-       signature = ECDSA_do_sign(digest, 20, key);
+       /* Use ECDSA_sign_setup to avoid use of ECDSA nonces */
+       if (!ECDSA_sign_setup(key, NULL, &kinv, &rp))
+               goto x962_int_err;
+       signature = ECDSA_do_sign_ex(digest, 20, kinv, rp, key);
        if (signature == NULL)
                goto x962_int_err;
        BIO_printf(out, ".");
@@ -247,6 +251,10 @@ x962_int_err:
        if (s)
                BN_free(s);
        EVP_MD_CTX_cleanup(&md_ctx);
+       if (kinv)
+               BN_clear_free(kinv);
+       if (rp)
+               BN_clear_free(rp);
        return ret;
        }
 
index e3bc468da18a47159dd59aeb290d2ee2008765a2..52056e28dc78786c288e81b9645333bffd43581f 100644 (file)
@@ -293,7 +293,7 @@ test_ec: $(ECTEST)
 
 test_ecdsa: $(ECDSATEST)
        @echo 'test ecdsa'
-       ../util/shlib_wrap.sh ./$(ECDSATEST)
+       ../util/shlib_wrap.sh ./$(ECDSATEST)
 
 test_ecdh: $(ECDHTEST)
        @echo 'test ecdh'