2017-01-28 16 views
1

メッセージのデジタル署名を検証する方法については、Cで書かれている例がたくさんありますが、ユースケースではメッセージハッシュのみを提供する必要があります。ハッシュと公開鍵を使ってデジタル署名を検証する方法は?

EVP_DigestVerifyUpdate(mdctx, msg, strlen(msg));には、ハッシュを直接提供できる代替品がありますか?

+0

これは不可能ではありませんが、EVPではこれまで見たことがありません(しかし、常に喜んで学んでいます)。私が(RSA_signとRSA_verify)(https://www.openssl.org/docs)を使用しなければならなかった、私が既にダイジェストを持っている署名です。 /man1.0.2/crypto/RSA_verify.html)を直接使用する必要があります。これには、元のメッセージではなく、メッセージダイジェストが必要です。 RSAを使用している場合(私はあなたがそうではないとは想像できません)、それはあなたのためのオプションかもしれません。 – WhozCraig

+0

残念ながら私はECDSAを使用しています:/ –

答えて

1

これはあなたが探しているものですか?

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 
関連する問題