x86[_64]cpuid.pl: add low-level RDSEED.
[openssl.git] / crypto / ecdsa / ecs_sign.c
index 5143923050297d1a42e2c79d360b3a7d95b0a2c4..042b1565ecf1701702136962d0de5a13116f03bf 100644 (file)
@@ -57,6 +57,7 @@
 #ifndef OPENSSL_NO_ENGINE
 #include <openssl/engine.h>
 #endif
+#include <openssl/rand.h>
 
 ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey)
 {
@@ -69,7 +70,7 @@ ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dlen,
        ECDSA_DATA *ecdsa = ecdsa_check(eckey);
        if (ecdsa == NULL)
                return NULL;
-       return ecdsa->meth->ecdsa_do_sign(dgst, dlen, NULL, NULL, eckey);
+       return ecdsa->meth->ecdsa_do_sign(dgst, dlen, kinv, rp, eckey);
 }
 
 int ECDSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char 
@@ -83,6 +84,7 @@ int ECDSA_sign_ex(int type, const unsigned char *dgst, int dlen, unsigned char
        EC_KEY *eckey)
 {
        ECDSA_SIG *s;
+       RAND_seed(dgst, dlen);
        s = ECDSA_do_sign_ex(dgst, dlen, kinv, r, eckey);
        if (s == NULL)
        {
@@ -100,5 +102,5 @@ int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
        ECDSA_DATA *ecdsa = ecdsa_check(eckey);
        if (ecdsa == NULL)
                return 0;
-       return ecdsa->meth->ecdsa_sign_setup(eckey, ctx_in, kinvp, rp); 
+       return ecdsa->meth->ecdsa_sign_setup(eckey, ctx_in, kinvp, rp);
 }