CryptVerifySignatureA 関数 (wincrypt.h)
この関数を呼び出す前に、CryptCreateHash を呼び出してハッシュ オブジェクトのハンドルを作成する必要があります。
CryptVerifySignature が完了すると、hHash ハンドルを使用して、CryptDestroyHash のみを呼び出すことができます。
構文
BOOL CryptVerifySignatureA(
[in] HCRYPTHASH hHash,
[in] const BYTE *pbSignature,
[in] DWORD dwSigLen,
[in] HCRYPTKEY hPubKey,
[in] LPCSTR szDescription,
[in] DWORD dwFlags
);
パラメーター
[in] hHash
検証するハッシュ オブジェクトへのハンドル。
[in] pbSignature
検証する署名データのアドレス。
[in] dwSigLen
pbSignature 署名データ内のバイト数。
[in] hPubKey
署名の認証に使用する 公開キーのハンドル。 この公開キーは、デジタル署名の作成に最初に使用された キー ペア に属している必要があります。
[in] szDescription
このパラメーターは使用されなくなり、セキュリティの脆弱性を防ぐために NULL
[in] dwFlags
次のフラグ値が定義されています。
価値 | 意味 |
---|---|
|
このフラグは RSA プロバイダーで使用されます。 署名を確認するときに、ハッシュ オブジェクト識別子 (OID) が存在しないか、チェックされる必要はありません。 このフラグが設定されていない場合、既定の署名のハッシュ OID は PKCS #7 の DigestInfo の定義で指定されているように検証されます。 |
|
このフラグは使用されません。 |
|
FIPS 186-2 準拠バージョンの RSA (rDSA) に対して X.931 サポートを使用します。 |
戻り値
関数が成功した場合、戻り値は TRUE
関数が失敗した場合、戻り値は FALSE
"NTE" で開始されるエラー コードは、使用している特定の CSP によって生成されます。 考えられるエラー コードの一部を次に示します。
リターン コード | 形容 |
---|---|
|
パラメーターの 1 つは無効なハンドルを指定します。 |
|
パラメーターの 1 つに無効な値が含まれています。 これは、多くの場合、無効なポインターです。 |
|
dwFlags パラメーターは 0 以外です。 |
|
hHash パラメーターで指定されたハッシュ オブジェクトが無効です。 |
|
hPubKey パラメーターには、有効な 公開キーへのハンドルが含まれていません。 |
|
署名が無効でした。 これは、データ自体が変更されたか、説明文字列が一致しなかったか、間違った公開キーが hPubKey このエラーは、ハッシュアルゴリズムまたは署名アルゴリズムが署名の作成に使用されたものと一致しない場合にも返されます。 |
|
ハッシュ オブジェクトの作成時に指定された 暗号化サービス プロバイダー (CSP) コンテキストが見つかりません。 |
|
操作中に CSP のメモリが不足しました。 |
備考
CryptVerifySignature 関数によってハッシュが完了します。 この呼び出しの後、ハッシュにデータを追加することはできません。 CryptHashData または CryptHashSessionKey
.NET Framework API を使用して署名を生成し、
ネイティブ暗号化 API ではリトル エンディアン バイト順が使用され、.NET Framework API ではビッグ エンディアンバイト順が使用されます。 .NET Framework API を使用して生成された署名を確認する場合は、CryptVerifySignature 関数を呼び出して署名を検証する前に、署名バイトの順序を入れ替える必要があります。
例
CryptVerifySignature 関数を使用する例については、「例 C プログラム: ハッシュの署名とハッシュ署名の検証」を参照してください。
手記
wincrypt.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CryptVerifySignature を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | wincrypt.h |
ライブラリ | Advapi32.lib |
DLL | Advapi32.dll |