check more precise result of EVP_DigestVerify

This commit is contained in:
orignal 2025-06-12 16:05:17 -04:00
parent 5974d2b5ac
commit bb2b34ff4f
3 changed files with 6 additions and 8 deletions

View file

@ -53,7 +53,7 @@ namespace crypto
// verify // verify
EVP_MD_CTX * ctx = EVP_MD_CTX_create (); EVP_MD_CTX * ctx = EVP_MD_CTX_create ();
EVP_DigestVerifyInit (ctx, NULL, EVP_sha1(), NULL, m_PublicKey); EVP_DigestVerifyInit (ctx, NULL, EVP_sha1(), NULL, m_PublicKey);
auto ret = EVP_DigestVerify (ctx, sign, l, buf, len); auto ret = EVP_DigestVerify (ctx, sign, l, buf, len) == 1;
EVP_MD_CTX_destroy (ctx); EVP_MD_CTX_destroy (ctx);
return ret; return ret;
} }
@ -132,7 +132,7 @@ namespace crypto
DSA_SIG * sig = DSA_SIG_new(); DSA_SIG * sig = DSA_SIG_new();
DSA_SIG_set0 (sig, BN_bin2bn (signature, DSA_SIGNATURE_LENGTH/2, NULL), BN_bin2bn (signature + DSA_SIGNATURE_LENGTH/2, DSA_SIGNATURE_LENGTH/2, NULL)); DSA_SIG_set0 (sig, BN_bin2bn (signature, DSA_SIGNATURE_LENGTH/2, NULL), BN_bin2bn (signature + DSA_SIGNATURE_LENGTH/2, DSA_SIGNATURE_LENGTH/2, NULL));
// DSA verification // DSA verification
int ret = DSA_do_verify (digest, 20, sig, m_PublicKey); int ret = DSA_do_verify (digest, 20, sig, m_PublicKey) == 1;
DSA_SIG_free(sig); DSA_SIG_free(sig);
return ret; return ret;
} }
@ -229,7 +229,7 @@ namespace crypto
// verify // verify
EVP_MD_CTX * ctx = EVP_MD_CTX_create (); EVP_MD_CTX * ctx = EVP_MD_CTX_create ();
EVP_DigestVerifyInit (ctx, NULL, m_Hash, NULL, m_PublicKey); EVP_DigestVerifyInit (ctx, NULL, m_Hash, NULL, m_PublicKey);
auto ret = EVP_DigestVerify (ctx, sign.data (), l, buf, len); auto ret = EVP_DigestVerify (ctx, sign.data (), l, buf, len) == 1;
EVP_MD_CTX_destroy (ctx); EVP_MD_CTX_destroy (ctx);
return ret; return ret;
} }
@ -325,7 +325,7 @@ namespace crypto
{ {
EVP_MD_CTX * ctx = EVP_MD_CTX_create (); EVP_MD_CTX * ctx = EVP_MD_CTX_create ();
EVP_DigestVerifyInit (ctx, NULL, NULL, NULL, m_Pkey); EVP_DigestVerifyInit (ctx, NULL, NULL, NULL, m_Pkey);
auto ret = EVP_DigestVerify (ctx, signature, 64, buf, len); auto ret = EVP_DigestVerify (ctx, signature, 64, buf, len) == 1;
EVP_MD_CTX_destroy (ctx); EVP_MD_CTX_destroy (ctx);
return ret; return ret;
} }
@ -509,7 +509,7 @@ namespace crypto
OSSL_PARAM_END OSSL_PARAM_END
}; };
EVP_PKEY_verify_message_init (vctx, sig, params); EVP_PKEY_verify_message_init (vctx, sig, params);
ret = EVP_PKEY_verify (vctx, signature, GetSignatureLen (), buf, len); ret = EVP_PKEY_verify (vctx, signature, GetSignatureLen (), buf, len) == 1;
EVP_SIGNATURE_free (sig); EVP_SIGNATURE_free (sig);
} }
EVP_PKEY_CTX_free (vctx); EVP_PKEY_CTX_free (vctx);

View file

@ -263,7 +263,7 @@ namespace crypto
auto s = BN_bin2bn (signature + GetSignatureLen ()/2, GetSignatureLen ()/2, NULL); auto s = BN_bin2bn (signature + GetSignatureLen ()/2, GetSignatureLen ()/2, NULL);
ECDSA_SIG_set0(sig, r, s); ECDSA_SIG_set0(sig, r, s);
// ECDSA verification // ECDSA verification
int ret = ECDSA_do_verify (digest, Hash::hashLen, sig, m_PublicKey); int ret = ECDSA_do_verify (digest, Hash::hashLen, sig, m_PublicKey) == 1;
ECDSA_SIG_free(sig); ECDSA_SIG_free(sig);
return ret; return ret;
} }

View file

@ -58,9 +58,7 @@ int main ()
uint8_t s[64]; uint8_t s[64];
i2p::crypto::EDDSA25519Signer signer (key); i2p::crypto::EDDSA25519Signer signer (key);
signer.Sign (msg, 1023, s); signer.Sign (msg, 1023, s);
#if OPENSSL_EDDSA
assert(memcmp (s, sig, 64) == 0); assert(memcmp (s, sig, 64) == 0);
#endif
i2p::crypto::EDDSA25519Verifier verifier; i2p::crypto::EDDSA25519Verifier verifier;
verifier.SetPublicKey (pub); verifier.SetPublicKey (pub);