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

BCryptImportKeyPairFn

コールバック

シグネチャ

NTSTATUS BCryptImportKeyPairFn(
    BCRYPT_ALG_HANDLE hAlgorithm,
    BCRYPT_KEY_HANDLE hImportKey,
    LPWSTR pszBlobType,
    BCRYPT_KEY_HANDLE* phKey,
    BYTE* pbInput,
    DWORD cbInput,
    DWORD dwFlags
);

パラメーター

フィールド型説明
hAlgorithmBCRYPT_ALG_HANDLE非対称キーのペアを使用するアルゴリズムプロバイダーのハンドルです。アルゴリズムの種類の例としては、署名、非対称暗号化、キー合意、キーカプセル化メカニズムなどがあります。このハンドルは BCryptOpenAlgorithmProvider 関数を呼び出して取得します。CNG アルゴリズム疑似ハンドルを指定することもできます。
hImportKeyBCRYPT_KEY_HANDLEこのパラメーターは現在使用されていません。NULL を指定してください。
pszBlobTypeLPWSTR

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

値 意味
BCRYPT_DH_PRIVATE_BLOB BLOB は Diffie-Hellman の公開キー/秘密キーのペアの BLOB です。pbInput バッファーには、BCRYPT_DH_KEY_BLOB 構造体と、その直後に続くキーデータが格納されている必要があります。
BCRYPT_DH_PUBLIC_BLOB BLOB は Diffie-Hellman の公開キー BLOB です。pbInput バッファーには、BCRYPT_DH_KEY_BLOB 構造体と、その直後に続くキーデータが格納されている必要があります。
BCRYPT_DSA_PRIVATE_BLOB BLOB は DSA の公開キー/秘密キーのペアの BLOB です。pbInput バッファーには、BCRYPT_DSA_KEY_BLOB または BCRYPT_DSA_KEY_BLOB_V2 構造体と、その直後に続くキーデータが格納されている必要があります。BCRYPT_DSA_KEY_BLOB は 512 ビットから 1024 ビットまでのキー長に使用します。BCRYPT_DSA_KEY_BLOB_V2 は 1024 ビットを超え 3072 ビット以下のキー長に使用します。

Windows 8: BCRYPT_DSA_KEY_BLOB_V2 のサポートが開始されます。
BCRYPT_DSA_PUBLIC_BLOB BLOB は DSA の公開キー BLOB です。pbInput バッファーには、BCRYPT_DSA_KEY_BLOB または BCRYPT_DSA_KEY_BLOB_V2 構造体と、その直後に続くキーデータが格納されている必要があります。BCRYPT_DSA_KEY_BLOB は 512 ビットから 1024 ビットまでのキー長に使用します。BCRYPT_DSA_KEY_BLOB_V2 は 1024 ビットを超え 3072 ビット以下のキー長に使用します。

Windows 8: BCRYPT_DSA_KEY_BLOB_V2 のサポートが開始されます。
BCRYPT_ECCPRIVATE_BLOB BLOB は楕円曲線暗号 (ECC) の秘密キーです。pbInput バッファーには、BCRYPT_ECCKEY_BLOB 構造体と、その直後に続くキーデータが格納されている必要があります。
BCRYPT_ECCPUBLIC_BLOB BLOB は ECC の公開キーです。pbInput バッファーには、BCRYPT_ECCKEY_BLOB 構造体と、その直後に続くキーデータが格納されている必要があります。
BCRYPT_MLKEM_PRIVATE_SEED_BLOB BLOB は ML-KEM の秘密シードです。pbInput バッファーには、BCRYPT_MLKEM_SEED_MAGIC を指定した BCRYPT_MLKEM_KEY_BLOB 構造体と、その直後に続くパラメーターセットおよびキーデータが格納されている必要があります。

Windows Insiders (build 27843): ML-KEM のサポートが開始されます。
BCRYPT_MLKEM_PRIVATE_BLOB BLOB は ML-KEM の秘密キー (カプセル化解除キー) です。pbInput バッファーには、BCRYPT_MLKEM_PRIVATE_MAGIC を指定した BCRYPT_MLKEM_KEY_BLOB 構造体と、その直後に続くパラメーターセットおよびキーデータが格納されている必要があります。

Windows Insiders (build 27843): ML-KEM のサポートが開始されます。
BCRYPT_MLKEM_PUBLIC_BLOB BLOB は ML-KEM の公開キー (カプセル化キー) です。pbInput バッファーには、BCRYPT_MLKEM_PUBLIC_MAGIC を指定した BCRYPT_MLKEM_KEY_BLOB 構造体と、その直後に続くパラメーターセットおよびキーデータが格納されている必要があります。

Windows Insiders (build 27843): ML-KEM のサポートが開始されます。
BCRYPT_PQDSA_PRIVATE_SEED_BLOB BLOB は耐量子デジタル署名アルゴリズム (PQDSA) の秘密シードキーです。pbInput バッファーには、適切なマジック値を指定した BCRYPT_PQDSA_KEY_BLOB 構造体と、その直後に続くパラメーターセットおよびキーデータが格納されている必要があります。

Windows Insiders (build 27843): ML-DSA のサポートが開始されます。
BCRYPT_PQDSA_PRIVATE_BLOB BLOB は PQDSA の秘密キーです。pbInput バッファーには、適切なマジック値を指定した BCRYPT_PQDSA_KEY_BLOB 構造体と、その直後に続くパラメーターセットおよびキーデータが格納されている必要があります。

Windows Insiders (build 27843): ML-DSA のサポートが開始されます。
BCRYPT_PQDSA_PUBLIC_BLOB BLOB は PQDSA の公開キーです。pbInput バッファーには、適切なマジック値を指定した BCRYPT_PQDSA_KEY_BLOB 構造体と、その直後に続くパラメーターセットおよびキーデータが格納されている必要があります。

Windows Insiders (build 27843): ML-DSA のサポートが開始されます。
BCRYPT_PRIVATE_KEY_BLOB BLOB は任意の種類の汎用的な秘密キーです。この秘密キーには、必ずしも公開キーが含まれるとは限りません。この BLOB に含まれるキーの種類は、BCRYPT_KEY_BLOB 構造体の Magic メンバーによって決まります。
BCRYPT_PUBLIC_KEY_BLOB BLOB は任意の種類の汎用的な公開キーです。この BLOB に含まれるキーの種類は、BCRYPT_KEY_BLOB 構造体の Magic メンバーによって決まります。
BCRYPT_RSAPRIVATE_BLOB BLOB は RSA の公開キー/秘密キーのペアの BLOB です。pbInput バッファーには、BCRYPT_RSAKEY_BLOB 構造体と、その直後に続くキーデータが格納されている必要があります。
BCRYPT_RSAPUBLIC_BLOB BLOB は RSA の公開キー BLOB です。pbInput バッファーには、BCRYPT_RSAKEY_BLOB 構造体と、その直後に続くキーデータが格納されている必要があります。
LEGACY_DH_PUBLIC_BLOB BLOB は、CryptoAPI を使用してエクスポートされた Diffie-Hellman の公開キー BLOB です。Microsoft プリミティブプロバイダーは、この BLOB 型のインポートをサポートしていません。
LEGACY_DH_PRIVATE_BLOB BLOB は、CryptoAPI を使用してエクスポートされた Diffie-Hellman の公開キー/秘密キーのペアを含む、従来の Diffie-Hellman バージョン 3 秘密キー BLOB です。
LEGACY_DSA_PRIVATE_BLOB BLOB は、CryptoAPI を使用してエクスポートされた DSA の公開キー/秘密キーのペアの BLOB です。
LEGACY_DSA_PUBLIC_BLOB BLOB は、CryptoAPI を使用してエクスポートされた DSA の公開キー BLOB です。Microsoft プリミティブプロバイダーは、この BLOB 型のインポートをサポートしていません。
LEGACY_DSA_V2_PRIVATE_BLOB BLOB は、CryptoAPI を使用してインポートできる形式の DSA バージョン 2 の秘密キーです。
LEGACY_RSAPRIVATE_BLOB BLOB は、CryptoAPI を使用してエクスポートされた RSA の公開キー/秘密キーのペアの BLOB です。
LEGACY_RSAPUBLIC_BLOB BLOB は、CryptoAPI を使用してエクスポートされた RSA の公開キー BLOB です。Microsoft プリミティブプロバイダーは、この BLOB 型のインポートをサポートしていません。
phKeyBCRYPT_KEY_HANDLE*インポートされたキーのハンドルを受け取る BCRYPT_KEY_HANDLE へのポインターです。このハンドルは、BCryptSignHash など、キーを必要とする後続の関数で使用します。このハンドルは、不要になった時点で BCryptDestroyKey 関数に渡して解放する必要があります。
pbInputBYTE*インポートするキー BLOB を格納したバッファーのアドレスです。cbInput パラメーターには、このバッファーのサイズを指定します。pszBlobType パラメーターは、このバッファーに格納されているキー BLOB の種類を指定します。
cbInputDWORDpbInput バッファーのサイズ (バイト単位) です。
dwFlagsDWORD

この関数の動作を変更するフラグのセットです。

ゼロまたは次の値を指定できます。

値 意味
BCRYPT_NO_KEY_VALIDATION 該当する FIPS 自己テストを実行しないようにします。

公式ドキュメント

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

戻り値

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

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

戻り値 説明
STATUS_SUCCESS 関数は成功しました。
STATUS_INVALID_BUFFER_SIZE hAlgorithm と pszBlobType の組み合わせに対して、バッファー pbInput のサイズが正しくありません。
STATUS_INVALID_HANDLE hAlgorithm パラメーターのアルゴリズムハンドルが無効です。
STATUS_INVALID_PARAMETER 1 つ以上のパラメーターが無効です。
STATUS_NOT_SUPPORTED hAlgorithm パラメーターで指定されたアルゴリズムプロバイダーは、pszBlobType パラメーターで指定された BLOB 型をサポートしていません。

解説(Remarks)

サポートされているアルゴリズムプロバイダーを使用する場合、BCryptImportKeyPair はユーザーモードとカーネルモードのどちらからでも呼び出せます。カーネルモードの呼び出し元は、PASSIVE_LEVEL IRQL または DISPATCH_LEVEL IRQL のいずれでも実行できます。現在の IRQL レベルが DISPATCH_LEVEL の場合、hAlgorithm パラメーターに指定するハンドルは BCRYPT_PROV_DISPATCH フラグを使用して開かれている必要があり、BCryptImportKeyPair 関数に渡すポインターはすべて、ページング不可 (またはロックされた) メモリを参照している必要があります。

呼び出し元は、キーが不要になった時点で BCryptDestroyKey を使用して hKey を解放してください。

この関数をカーネルモードで呼び出すには、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)