CryptVerifySignature

デジタル署名がこのデータに対して有効かどうかを検証します。

構文 

CryptVerifySignature (データ ; アルゴリズム ; パブリック RSA キー ; 署名)

引数 

データ - 署名に対して検証するデータを表すテキスト式

アルゴリズム - 使用する暗号化アルゴリズムの名前 (CryptAuthCode 関数を参照)

パブリック RSA キー - 署名の生成に使用されたプライベートキーに対応する PEM 形式の PKCS #1 RSA パブリックキーを表すテキスト

署名 - CryptGenerateSignature 関数 によって返される値などのデータに対して検証するバイナリ RSA 署名

戻り値のデータタイプ 

数字

起点バージョン 

18.0

説明 

この関数では、署名を検証するため、データのメッセージダイジェストと、パブリック RSA キーを使用して署名を復号することで取得したダイジェストを (指定されたアルゴリズムを使用して) 比較します。

RSA パブリックキーは次の形式にする必要があります:

コピー
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqqDiwrPQwVaJzOzfFVBd
...
egkXva5cYBb8PNifmlPXVb8CAwEAAQ==
-----END PUBLIC KEY-----

署名がデータに対して有効な場合、この関数は「1」(真) を返します。署名が無効な場合は、「0」(偽) を返します。引数のいずれかが無効な場合は、「?」を返します。

例 1 

SHA-512 アルゴリズムを使用して「Table::SignedText」のダイジェストを生成します。「Table::Signature」テキストフィールドに保存された署名を Base64 でデコードし、それをオブジェクトデータとして返します。「Table::PublicRSAKey」フィールド内の値を使用して署名を復号し、その署名ダイジェストと「Table::SignedText」フィールドに基づくダイジェストを比較します。署名が有効な場合は、「1」を返します。

コピー
CryptVerifySignature ( 
    Table::SignedText ; "SHA512" ; Table::PublicRSAKey ;     
    Base64Decode (         
        Table::Signature ; "sig.data"     
    ) 
)