NCryptVerifySignatureFn
コールバックシグネチャ
HRESULT NCryptVerifySignatureFn(
NCRYPT_PROV_HANDLE hProvider,
NCRYPT_KEY_HANDLE hKey,
void* pPaddingInfo,
BYTE* pbHashValue,
DWORD cbHashValue,
BYTE* pbSignature,
DWORD cbSignature,
DWORD dwFlags
);パラメーター
| フィールド | 型 | 説明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hProvider | NCRYPT_PROV_HANDLE | |||||||||||
| hKey | NCRYPT_KEY_HANDLE | 署名の検証に使用するキーのハンドルです。これには、NCryptSignHash 関数でデータに署名する際に使用したキーペアの公開キー部分が含まれている必要があります。 | ||||||||||
| pPaddingInfo | void* | パディング情報を格納する構造体へのポインターです。このパラメーターが指す構造体の実際の型は、dwFlags パラメーターの値によって異なります。dwFlags が 0 の場合、このパラメーターは NULL でなければなりません。 | ||||||||||
| pbHashValue | BYTE* | 検証対象の入力を格納するバッファーのアドレスです。cbHashValue パラメーターには、このバッファーのサイズを指定します。 注: パラメーター名 pbHashValue は、この API の経緯に由来する不適切な名称です。 多くの署名アルゴリズム (DSA、RSA、ECDSA、HashML-DSA など) では、検証ルーチンはハッシュ関数の結果を入力として受け取るものとして定義されています。これらのアルゴリズムでは、検証対象の元のメッセージをまずハッシュ化し、得られたハッシュ値 (プリハッシュ) を pbHashValue バッファーで渡します。 ただし、一部の署名アルゴリズム (pure ML-DSA、pure SLH-DSA など) は、任意のサイズのデータに直接署名できます。これらのアルゴリズムでは、pbHashValue バッファーは検証対象の入力そのものを表します。署名者と検証者はこの入力の構成方法について合意する必要がありますが、プリハッシュを用いる必要はありません。 いずれの場合も、pbHashValue バッファーは検証対象のデータを表します。 | ||||||||||
| cbHashValue | DWORD | pbHashValue バッファーのサイズ (バイト単位) です。 | ||||||||||
| pbSignature | BYTE* | データの署名を格納するバッファーのアドレスです。署名の作成には NCryptSignHash 関数を使用します。cbSignature パラメーターには、このバッファーのサイズを指定します。 | ||||||||||
| cbSignature | DWORD | pbSignature バッファーのサイズ (バイト単位) です。署名の作成には NCryptSignHash 関数を使用します。 | ||||||||||
| dwFlags | DWORD | 関数の動作を変更するフラグです。指定できるフラグの組み合わせは、hKey パラメーターで指定したキーの種類によって異なります。 0 を指定するか、次の値の 1 つ以上を組み合わせて指定できます。
|
公式ドキュメント
NCryptVerifySignature 関数は、指定された署名が指定されたデータと一致することを検証します。
戻り値
関数の成功または失敗を示すステータスコードを返します。
返される可能性のあるコードには、次のものが含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| ERROR_SUCCESS | 関数は成功しました。 |
| NTE_BAD_SIGNATURE | 署名は検証されませんでした。 |
| NTE_INVALID_HANDLE | hKey パラメーターが有効ではありません。 |
| NTE_NO_MEMORY | メモリの割り当てに失敗しました。 |
| NTE_NOT_SUPPORTED | hKey パラメーターで指定されたキーハンドルの作成に使用されたアルゴリズムプロバイダーが、署名アルゴリズムではありません。 |
解説(Remarks)
サービスは、この関数を StartService Function から呼び出してはなりません。サービスが StartService 関数からこの関数を呼び出すと、デッドロックが発生し、サービスが応答しなくなる可能性があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)