CryptVerifySignatureW

ハッシュオブジェクトの署名を検証する。(Unicode)

CryptVerifySignatureW hHash, pbSignature, dwSigLen, hPubKey, szDescription, dwFlags

hHash : [int] 検証するハッシュオブジェクトへのハンドル。
pbSignature : [var] 検証する署名データのアドレス。
dwSigLen : [int] pbSignature 署名データのバイト数。
hPubKey : [int] 署名を認証するために使用する公開鍵へのハンドル。この公開鍵は、元々デジタル署名を作成するために使用された鍵ペアに属している必要がある。
szDescription : [wstr] このパラメータはもはや使用すべきではなく、セキュリティ上の脆弱性を防ぐために NULL に設定しなければならない。ただし、Microsoft Base Cryptographic Provider の後方互換性のため、引き続きサポートされている。
dwFlags : [int] 以下のフラグ値が定義されている。

(プラグイン / モジュール : advapi32.dll)

解説

ハッシュオブジェクトの署名を検証する。(Unicode)

[戻り値]
関数が成功した場合、戻り値は TRUE となる。失敗した場合、戻り値は FALSE となる。拡張エラー情報を取得するには
GetLastError を呼び出す。「NTE」で始まるエラーコードは使用中の特定の CSP
が生成する。以下のエラーコードが返される可能性がある。
(以下省略)

[備考]
CryptVerifySignature
関数はハッシュを確定させる。この呼び出しの後は、ハッシュにデータを追加できない。CryptHashDataCryptHashSessionKey
の追加呼び出しは失敗する。アプリケーションがハッシュの使用を終えた後は、CryptDestroyHash
を呼び出してハッシュオブジェクトを破棄する。.NET Framework API で署名を生成し、それを
CryptVerifySignature 関数で検証しようとすると、関数は失敗し GetLastError は
NTE_BAD_SIGNATURE を返す。これはネイティブ Win32 API と .NET Framework API
でバイト順序が異なるためである。ネイティブ暗号 API はリトルエンディアンのバイト順を使用するが、.NET Framework API
はビッグエンディアンのバイト順を使用する。.NET Framework API
で生成した署名を検証する場合は、CryptVerifySignature
関数を呼び出して署名を検証する前に、署名バイトの順序を入れ替えなければならない。

情報

プラグイン / モジュールadvapi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の advapi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_advapi32_gen2.hs