Win32 API 日本語リファレンス
ホーム › Security.Cryptography › NCryptVerifySignatureFn

NCryptVerifySignatureFn

コールバック

シグネチャ

HRESULT NCryptVerifySignatureFn(
    NCRYPT_PROV_HANDLE hProvider,
    NCRYPT_KEY_HANDLE hKey,
    void* pPaddingInfo,
    BYTE* pbHashValue,
    DWORD cbHashValue,
    BYTE* pbSignature,
    DWORD cbSignature,
    DWORD dwFlags
);

パラメーター

フィールド型説明
hProviderNCRYPT_PROV_HANDLE
hKeyNCRYPT_KEY_HANDLE署名の検証に使用するキーのハンドルです。これには、NCryptSignHash 関数でデータに署名する際に使用したキーペアの公開キー部分が含まれている必要があります。
pPaddingInfovoid*パディング情報を格納する構造体へのポインターです。このパラメーターが指す構造体の実際の型は、dwFlags パラメーターの値によって異なります。dwFlags が 0 の場合、このパラメーターは NULL でなければなりません。
pbHashValueBYTE*

検証対象の入力を格納するバッファーのアドレスです。cbHashValue パラメーターには、このバッファーのサイズを指定します。

注: パラメーター名 pbHashValue は、この API の経緯に由来する不適切な名称です。

多くの署名アルゴリズム (DSA、RSA、ECDSA、HashML-DSA など) では、検証ルーチンはハッシュ関数の結果を入力として受け取るものとして定義されています。これらのアルゴリズムでは、検証対象の元のメッセージをまずハッシュ化し、得られたハッシュ値 (プリハッシュ) を pbHashValue バッファーで渡します。

ただし、一部の署名アルゴリズム (pure ML-DSA、pure SLH-DSA など) は、任意のサイズのデータに直接署名できます。これらのアルゴリズムでは、pbHashValue バッファーは検証対象の入力そのものを表します。署名者と検証者はこの入力の構成方法について合意する必要がありますが、プリハッシュを用いる必要はありません。

いずれの場合も、pbHashValue バッファーは検証対象のデータを表します。

cbHashValueDWORDpbHashValue バッファーのサイズ (バイト単位) です。
pbSignatureBYTE*データの署名を格納するバッファーのアドレスです。署名の作成には NCryptSignHash 関数を使用します。cbSignature パラメーターには、このバッファーのサイズを指定します。
cbSignatureDWORDpbSignature バッファーのサイズ (バイト単位) です。署名の作成には NCryptSignHash 関数を使用します。
dwFlagsDWORD

関数の動作を変更するフラグです。指定できるフラグの組み合わせは、hKey パラメーターで指定したキーの種類によって異なります。

0 を指定するか、次の値の 1 つ以上を組み合わせて指定できます。

値 意味
NCRYPT_PAD_PKCS1_FLAG 署名の作成時に RSA PKCS1 パディング方式が使用されました。pPaddingInfo パラメーターは BCRYPT_PKCS1_PADDING_INFO 構造体へのポインターです。
NCRYPT_PAD_PSS_FLAG 署名の作成時に RSA 確率的署名方式 (PSS) のパディング方式が使用されました。pPaddingInfo パラメーターは BCRYPT_PSS_PADDING_INFO 構造体へのポインターです。
NCRYPT_PAD_PQDSA_FLAG 耐量子デジタル署名アルゴリズム (PQDSA) の署名がどのように計算されたかを指定するために、追加の情報が必要です。pPaddingInfo パラメーターは BCRYPT_PQDSA_PADDING_INFO 構造体へのポインターです。

注: プリハッシュを用いる PQDSA のバリアントを使用する場合は、これを設定する必要があります。

Windows Insiders (ビルド 27843): PQDSA のサポートが開始されます。
NCRYPT_SILENT_FLAG キーストレージプロバイダー (KSP) がユーザーインターフェイスを表示しないように要求します。プロバイダーが動作するために UI を表示しなければならない場合、呼び出しは失敗し、KSP は最後のエラーとして NTE_SILENT_CONTEXT エラーコードを設定します。

公式ドキュメント

NCryptVerifySignature 関数は、指定された署名が指定されたデータと一致することを検証します。

戻り値

関数の成功または失敗を示すステータスコードを返します。

返される可能性のあるコードには、次のものが含まれます (ただし、これらに限定されません)。

戻り値 説明
ERROR_SUCCESS 関数は成功しました。
NTE_BAD_SIGNATURE 署名は検証されませんでした。
NTE_INVALID_HANDLE hKey パラメーターが有効ではありません。
NTE_NO_MEMORY メモリの割り当てに失敗しました。
NTE_NOT_SUPPORTED hKey パラメーターで指定されたキーハンドルの作成に使用されたアルゴリズムプロバイダーが、署名アルゴリズムではありません。

解説(Remarks)

サービスは、この関数を StartService Function から呼び出してはなりません。サービスが StartService 関数からこの関数を呼び出すと、デッドロックが発生し、サービスが応答しなくなる可能性があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)