CryptGetKeyParam 関数 (wincrypt.h)
構文
BOOL CryptGetKeyParam(
[in] HCRYPTKEY hKey,
[in] DWORD dwParam,
[out] BYTE *pbData,
[in, out] DWORD *pdwDataLen,
[in] DWORD dwFlags
);
パラメーター
[in] hKey
クエリ対象のキーのハンドル。
[in] dwParam
作成するクエリの種類を指定します。
すべてのキー型について、このパラメーターには次のいずれかの値を含めることができます。
値 | 意味 |
---|---|
|
キー アルゴリズムを取得します。 pbData パラメーターは、キーの作成時に指定されたアルゴリズムの識別子を受け取るALG_ID値へのポインターです。
CryptGenKey 関数のAlgid パラメーターにAT_KEYEXCHANGEまたはAT_SIGNATUREが指定されている場合、キーの生成に使用されるアルゴリズム識別子は、使用されるプロバイダーによって異なります。 詳細については、「 ALG_ID」を参照してください。 |
|
セッション キーが hKey パラメーターで指定されている場合は、キー暗号のブロック長を取得します。 pbData パラメーターは、ブロック長をビット単位で受け取る DWORD 値へのポインターです。 ストリーム暗号の場合、この値は常に 0 です。
公開キーと秘密キーのペアが hKey で指定されている場合は、キー ペアの暗号化の細分性を取得します。 pbData パラメーターは、暗号化粒度を受け取る DWORD 値へのポインターです (ビット単位)。 たとえば、 Microsoft Base Cryptographic Provider は 512 ビット RSA キー ペアを生成するため、これらのキーに対して値 512 が返されます。 公開キー アルゴリズムで暗号化がサポートされていない場合、取得された値は未定義です。 |
|
pbData は、Distinguished Encoding Rules (DER) を使用してエンコードされた X.509 証明書を受信するバッファーのアドレスです。 証明書の公開キーは、対応する署名または交換キーと一致する必要があります。 |
|
この値は使用されません。 |
|
キーの実際の長さを取得します。 pbData パラメーターは、キーの長さをビット単位で受け取る DWORD 値へのポインターです。 KP_KEYLEN を使用して、任意のキー型の長さを取得できます。 Microsoft 暗号化サービス プロバイダー (CSP) は、CALG_DESの場合は 64 ビット、 CALG_3DES_112の場合は 128 ビット、 CALG_3DESの場合は 192 ビットのキー長を返します。 これらの長さは、CryptGetProvParam 関数の dwParam 値を PP_ENUMALGS に設定してアルゴリズムを列挙するときに返される長さとは異なります。 この呼び出しによって返される長さは、キーに含まれるパリティ ビットを含む、キーの実際のサイズです。
CALG_CYLINK_MEKをサポートする Microsoft CSP ALG_IDは、そのアルゴリズムに対して 64 ビットを返します。 CALG_CYLINK_MEK は 40 ビットのキーですが、キー長を 64 ビットにするためにパリティとゼロキー ビットがあります。 |
|
キーの salt 値 を取得します。 pbData パラメーターは、リトル エンディアン形式で salt 値を受け取る BYTE 配列へのポインターです。 塩の値のサイズは、使用されている CSP とアルゴリズムによって異なります。 Salt 値は 、公開キーと秘密キーのペアには適用されません。 |
|
キーのアクセス許可を取得します。 pbData パラメーターは、キーのアクセス許可フラグを受け取る DWORD 値へのポインターです。
現在、次のアクセス許可識別子が定義されています。 キーのアクセス許可には、0 または次の値の 1 つ以上の組み合わせを指定できます。
|
デジタル署名標準 (DSS) キーが hKey パラメーターで指定されている場合は、dwParam 値を次のいずれかの値に設定することもできます。
ブロック 暗号セッション キー が hKey パラメーターで指定されている場合は、 dwParam 値を次のいずれかの値に設定することもできます。
値 | 意味 |
---|---|
|
RC2 キーの有効なキー長を取得します。 pbData パラメーターは、有効なキー長を受け取る DWORD 値へのポインターです。 |
|
キーの初期化ベクトルを取得します。 pbData パラメーターは、初期化ベクトルを受け取る BYTE 配列へのポインターです。 この配列のサイズは、ブロック サイズ (バイト単位) です。 たとえば、ブロック長が 64 ビットの場合、初期化ベクトルは 8 バイトで構成されます。 |
|
パディング モードを取得します。 pbData パラメーターは、暗号で使用される埋め込みメソッドを識別する数値識別子を受け取る DWORD 値へのポインターです。 これには、次のいずれかの値を指定できます。 |
|
暗号モードを取得します。 pbData パラメーターは、暗号モード識別子を受け取る DWORD 値へのポインターです。 暗号モードの詳細については、「 データ暗号化と暗号化解除」を参照してください。
現在、次の暗号モード識別子が定義されています。
|
|
フィード バックするビット数を取得します。 pbData パラメーターは、OFB 暗号モードまたは CFB 暗号モードが使用されるときにサイクルごとに処理されるビット数を受け取る DWORD 値へのポインターです。 |
Diffie-Hellman アルゴリズムまたはデジタル署名アルゴリズム (DSA) キーが hKey で指定されている場合は、dwParam 値を次の値に設定することもできます。
値 | 意味 |
---|---|
|
Diffie-Hellman アルゴリズムまたは DSA キーのパラメーターを検証します。 pbData パラメーターは使用されず、pdwDataLen が指す値は 0 を受け取ります。
この関数は、キー パラメーターが有効な場合は 0 以外の値を返し、それ以外の場合は 0 を返します。 |
|
この値は使用されません。
Windows Vista、Windows Server 2003、Windows XP: CALG_AGREEDKEY_ANY型のインポートされた Diffie-Hellman アルゴリズム キーから秘密契約値 を取得します。 pbData パラメーターは、シークレット アグリーメント値を受け取るバッファーのアドレスです (リトル エンディアン形式)。 このバッファーは、キーと同じ長さである必要があります。 dwFlags パラメーターは、0xF42A19B6に設定する必要があります。 このプロパティは、ローカル システム アカウントで実行されているスレッドによってのみ取得できます。このプロパティは、上記のオペレーティング システムで使用できます。 今後のバージョンでは変更されるか、利用できなくなる場合もあります。 |
証明書が hKey で指定されている場合は、dwParam 値を次の値に設定することもできます。
値 | 意味 |
---|---|
|
DER でエンコードされた X.509 証明書を含むバッファー。 pbData パラメーターは使用されず、pdwDataLen が指す値は 0 を受け取ります。
この関数は、キー パラメーターが有効な場合は 0 以外の値を返し、それ以外の場合は 0 を返します。 |
[out] pbData
データを受信するバッファーへのポインター。 このデータの形式は 、dwParam の値によって異なります。
このバッファーのサイズがわからない場合は、このパラメーターに NULL を 渡し、 pdwDataLen が指す値を 0 に設定することで、実行時に必要なサイズを取得できます。 この関数は、 pdwDataLen が指す値にバッファーの必要なサイズをバイト単位で配置します。 詳細については、「 不明な長さのデータの取得」を参照してください。
[in, out] pdwDataLen
入力時に pbData パラメーターが指すバッファーのサイズ (バイト単位) を含む DWORD 値へのポインター。 関数が戻ると、 DWORD 値にはバッファーに格納されているバイト数が含まれます。
[in] dwFlags
このパラメーターは将来使用するために予約されており、0 に設定する必要があります。
戻り値
関数が成功した場合、関数は 0 以外の値を返します。
関数が失敗すると、0 が返されます。 拡張エラー情報については、 GetLastError を呼び出します。
"NTE" の前にあるエラー コードは、使用されている特定の CSP によって生成されます。 考えられるエラー コードには、次のようなものがあります。
リターン コード | 説明 |
---|---|
|
パラメーターの 1 つは、無効なハンドルを指定します。 |
|
パラメーターの 1 つに無効な値が含まれています。 これは、ほとんどの場合、無効なポインターです。 |
|
pbData パラメーターで指定されたバッファーが、返されたデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATA コードを設定し、必要なバッファー サイズをバイト単位で pdwDataLen が指す変数に格納します。 |
|
dwFlags パラメーターは 0 以外です。 |
|
hKey パラメーターで指定されたキーが無効です。 |
|
dwParam パラメーターは、不明な値番号を指定します。 |
|
キーの作成時に指定された CSP コンテキスト が見つかりません。 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示