return ret;
}
+int FIPS_ecdsa_verify(EC_KEY *key, const unsigned char *msg, size_t msglen,
+ const EVP_MD *mhash, ECDSA_SIG *s)
+ {
+ int ret=-1;
+ unsigned char dig[EVP_MAX_MD_SIZE];
+ unsigned int dlen;
+ FIPS_digest(msg, msglen, dig, &dlen, mhash);
+ ret=FIPS_ecdsa_verify_digest(key, dig, dlen, s);
+ OPENSSL_cleanse(dig, dlen);
+ return ret;
+ }
+
+ECDSA_SIG * FIPS_ecdsa_sign(EC_KEY *key,
+ const unsigned char *msg, size_t msglen,
+ const EVP_MD *mhash)
+ {
+ ECDSA_SIG *s;
+ unsigned char dig[EVP_MAX_MD_SIZE];
+ unsigned int dlen;
+ FIPS_digest(msg, msglen, dig, &dlen, mhash);
+ s = FIPS_dsa_sign_digest(key, dig, dlen);
+ OPENSSL_cleanse(dig, dlen);
+ return s;
+ }
+