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

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
);

パラメーター

フィールド型説明
hAlgorithmBCRYPT_ALG_HANDLEキーをインポートするアルゴリズムプロバイダーのハンドルです。このハンドルは、BCryptOpenAlgorithmProvider 関数を呼び出して取得します。
hImportKeyBCRYPT_KEY_HANDLE

pbInput パラメーターのキー BLOB をアンラップするために必要な、キー暗号化キーのハンドルです。

メモ このハンドルは、インポートされるキーを提供したものと同じプロバイダーから提供される必要があります。

Windows Server 2008 および Windows Vista: このパラメーターは使用されません。NULL を設定してください。

pszBlobTypeLPWSTR

pbInput バッファーに格納されている BLOB の種類を指定する識別子を含む、null で終わる Unicode 文字列です。次のいずれかの値を指定できます。

値 意味
BCRYPT_AES_WRAP_KEY_BLOB
AES キーラップされたキー BLOB から対称キーをインポートします。hImportKey パラメーターには、キー暗号化キーを指す有効な BCRYPT_KEY_HANDLE ポインターを指定する必要があります。

Windows Server 2008 および Windows Vista: この BLOB の種類はサポートされていません。

BCRYPT_KEY_DATA_BLOB
データ BLOB から対称キーをインポートします。pbInput パラメーターは BCRYPT_KEY_DATA_BLOB_HEADER 構造体へのポインターであり、その直後にキー BLOB が続きます。
BCRYPT_OPAQUE_KEY_BLOB
単一の CSP に固有の形式で対称キー BLOB をインポートします。opaque BLOB は転送可能ではなく、その BLOB を生成したものと同じ CSP を使用してインポートする必要があります。opaque BLOB はキーのプロセス間転送のみを目的としており、永続化してプロバイダーのバージョンをまたいで読み取る用途には適していません。
phKeyBCRYPT_KEY_HANDLE*インポートされたキーのハンドルを受け取る BCRYPT_KEY_HANDLE へのポインターです。このハンドルは、BCryptEncrypt など、キーを必要とする後続の関数で使用します。このハンドルが不要になったら、BCryptDestroyKey 関数に渡して解放する必要があります。
pbKeyObjectBYTE*

インポートされたキーオブジェクトを受け取るバッファーへのポインターです。cbKeyObject パラメーターには、このバッファーのサイズを指定します。必要なバッファーのサイズは、BCryptGetProperty 関数を呼び出して BCRYPT_OBJECT_LENGTH プロパティを取得することで求められます。これにより、指定したアルゴリズムのキーオブジェクトのサイズが得られます。

このメモリは、phKey のキーハンドルが破棄された後でのみ解放できます。

cbKeyObjectDWORDpbKeyObject バッファーのサイズ (バイト単位) です。
pbInputBYTE*インポートするキー BLOB が格納されたバッファーのアドレスです。cbInput パラメーターには、このバッファーのサイズを指定します。このバッファーに格納されているキー BLOB の種類は、pszBlobType パラメーターで指定します。
cbInputDWORDpbInput バッファーのサイズ (バイト単位) です。
dwFlagsDWORDこの関数の動作を変更するフラグの組み合わせです。現在定義されているフラグはないため、このパラメーターには 0 を指定します。

公式ドキュメント

BCryptImportKey 関数は、キー BLOB から対称キーをインポートします。BCryptImportKeyPair 関数は、公開キー/秘密キーのペアをインポートするために使用します。

戻り値

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

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

戻り値 説明
STATUS_SUCCESS
関数は成功しました。
STATUS_BUFFER_TOO_SMALL
cbKeyObject パラメーターで指定されたキーオブジェクトのサイズが、キーオブジェクトを格納するには十分ではありません。
STATUS_INVALID_HANDLE
hAlgorithm パラメーターのアルゴリズムハンドルが無効です。
STATUS_INVALID_PARAMETER
1 つ以上のパラメーターが無効です。
STATUS_NOT_SUPPORTED
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 の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)