1
メッセージのデジタル署名を検証する方法については、Cで書かれている例がたくさんありますが、ユースケースではメッセージハッシュのみを提供する必要があります。ハッシュと公開鍵を使ってデジタル署名を検証する方法は?
EVP_DigestVerifyUpdate(mdctx, msg, strlen(msg));
には、ハッシュを直接提供できる代替品がありますか?
メッセージのデジタル署名を検証する方法については、Cで書かれている例がたくさんありますが、ユースケースではメッセージハッシュのみを提供する必要があります。ハッシュと公開鍵を使ってデジタル署名を検証する方法は?
EVP_DigestVerifyUpdate(mdctx, msg, strlen(msg));
には、ハッシュを直接提供できる代替品がありますか?
これはあなたが探しているものですか?
EVP_PKEY *public_key = ...;
EVP_PKEY_CTX *public_key_ctx = EVP_PKEY_CTX_new(public_key, NULL);
EVP_PKEY_verify_init(public_key_ctx);
if (1 != EVP_PKEY_verify(public_key_ctx, sig, siglen, hash, hashlen))
// invalid signature
これは不可能ではありませんが、EVPではこれまで見たことがありません(しかし、常に喜んで学んでいます)。私が(RSA_signとRSA_verify)(https://www.openssl.org/docs)を使用しなければならなかった、私が既にダイジェストを持っている署名です。 /man1.0.2/crypto/RSA_verify.html)を直接使用する必要があります。これには、元のメッセージではなく、メッセージダイジェストが必要です。 RSAを使用している場合(私はあなたがそうではないとは想像できません)、それはあなたのためのオプションかもしれません。 – WhozCraig
残念ながら私はECDSAを使用しています:/ –