BCryptImportKeyFn
コールバックシグネチャ
NTSTATUS BCryptImportKeyFn(
BCRYPT_ALG_HANDLE hAlgorithm,
BCRYPT_KEY_HANDLE hImportKey,
LPWSTR pszBlobType,
BCRYPT_KEY_HANDLE* phKey,
BYTE* pbKeyObject,
DWORD cbKeyObject,
BYTE* pbInput,
DWORD cbInput,
DWORD dwFlags
);パラメーター
| フィールド | 型 | 説明 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| hAlgorithm | BCRYPT_ALG_HANDLE | キーをインポートするアルゴリズムプロバイダーのハンドルです。このハンドルは、BCryptOpenAlgorithmProvider 関数を呼び出して取得します。 | ||||||||
| hImportKey | BCRYPT_KEY_HANDLE | pbInput パラメーターのキー BLOB をアンラップするために必要な、キー暗号化キーのハンドルです。 メモ このハンドルは、インポートされるキーを提供したものと同じプロバイダーから提供される必要があります。
Windows Server 2008 および Windows Vista: このパラメーターは使用されません。NULL を設定してください。 | ||||||||
| pszBlobType | LPWSTR | pbInput バッファーに格納されている BLOB の種類を指定する識別子を含む、null で終わる Unicode 文字列です。次のいずれかの値を指定できます。
| ||||||||
| phKey | BCRYPT_KEY_HANDLE* | インポートされたキーのハンドルを受け取る BCRYPT_KEY_HANDLE へのポインターです。このハンドルは、BCryptEncrypt など、キーを必要とする後続の関数で使用します。このハンドルが不要になったら、BCryptDestroyKey 関数に渡して解放する必要があります。 | ||||||||
| pbKeyObject | BYTE* | インポートされたキーオブジェクトを受け取るバッファーへのポインターです。cbKeyObject パラメーターには、このバッファーのサイズを指定します。必要なバッファーのサイズは、BCryptGetProperty 関数を呼び出して BCRYPT_OBJECT_LENGTH プロパティを取得することで求められます。これにより、指定したアルゴリズムのキーオブジェクトのサイズが得られます。 このメモリは、phKey のキーハンドルが破棄された後でのみ解放できます。 | ||||||||
| cbKeyObject | DWORD | pbKeyObject バッファーのサイズ (バイト単位) です。 | ||||||||
| pbInput | BYTE* | インポートするキー BLOB が格納されたバッファーのアドレスです。cbInput パラメーターには、このバッファーのサイズを指定します。このバッファーに格納されているキー BLOB の種類は、pszBlobType パラメーターで指定します。 | ||||||||
| cbInput | DWORD | pbInput バッファーのサイズ (バイト単位) です。 | ||||||||
| dwFlags | DWORD | この関数の動作を変更するフラグの組み合わせです。現在定義されているフラグはないため、このパラメーターには 0 を指定します。 |
公式ドキュメント
BCryptImportKey 関数は、キー BLOB から対称キーをインポートします。BCryptImportKeyPair 関数は、公開キー/秘密キーのペアをインポートするために使用します。
戻り値
関数の成功または失敗を示すステータスコードを返します。
返される可能性のあるコードには、次のものが含まれます (これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| 関数は成功しました。 | |
| cbKeyObject パラメーターで指定されたキーオブジェクトのサイズが、キーオブジェクトを格納するには十分ではありません。 | |
| hAlgorithm パラメーターのアルゴリズムハンドルが無効です。 | |
| 1 つ以上のパラメーターが無効です。 | |
| hAlgorithm パラメーターで指定されたアルゴリズムプロバイダーが、pszBlobType パラメーターで指定された BLOB の種類をサポートしていません。 |
解説(Remarks)
サポートされているアルゴリズムプロバイダーを使用する場合、BCryptImportKey はユーザーモードとカーネルモードのどちらからでも呼び出せます。カーネルモードの呼び出し元は、PASSIVE_LEVEL IRQL または DISPATCH_LEVEL IRQL のいずれでも実行できます。現在の IRQL レベルが DISPATCH_LEVEL の場合、hAlgorithm パラメーターに指定するハンドルは BCRYPT_PROV_DISPATCH フラグを使用して開かれている必要があり、BCryptImportKey 関数に渡すポインターはページング不可 (またはロックされた) メモリを指している必要があります。
この関数をカーネルモードで呼び出すには、Driver Development Kit (DDK) に含まれる Cng.lib を使用します。Windows Server 2008 および Windows Vista: この関数をカーネルモードで呼び出すには、Ksecdd.lib を使用します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)