Looks like there is some problem in higher-level EVP_ functions.
EVP_DigestInit(Ctx, EVP_sha256());
EVP_DigestUpdate(Ctx, dt.data(), dt.size());
QByteArray Digest;
Digest.resize(EVP_MAX_MD_SIZE);
unsigned int Len;
EVP_DigestFinal(Ctx, reinterpret_cast<unsigned char *>(Digest.data()), &Len);
Digest.resize(Len);
BIO * Bio = BIO_new_mem_buf(pk.data(), pk.size());
EC_KEY *ECKey = PEM_read_bio_ECPrivateKey(Bio, nullptr, nullptr, nullptr);
ECDSA_SIG *Signature = ECDSA_do_sign(reinterpret_cast<unsigned char *>(Digest.data()), Digest.size(), ECKey);
I completely rewrote the example using lower-level ECDSA_do_sign and it started to work always.
Here is the code:
EVP_MD_CTX *Ctx = EVP_MD_CTX_create();EVP_DigestInit(Ctx, EVP_sha256());
EVP_DigestUpdate(Ctx, dt.data(), dt.size());
QByteArray Digest;
Digest.resize(EVP_MAX_MD_SIZE);
unsigned int Len;
EVP_DigestFinal(Ctx, reinterpret_cast<unsigned char *>(Digest.data()), &Len);
Digest.resize(Len);
BIO * Bio = BIO_new_mem_buf(pk.data(), pk.size());
EC_KEY *ECKey = PEM_read_bio_ECPrivateKey(Bio, nullptr, nullptr, nullptr);
ECDSA_SIG *Signature = ECDSA_do_sign(reinterpret_cast<unsigned char *>(Digest.data()), Digest.size(), ECKey);
-- openssl-users mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users