CryptSetKeyParam 関数 (wincrypt.h)
Microsoft Base Cryptographic Provider では、キー交換キーまたは署名キーの値の設定は許可されません。ただし、カスタム プロバイダーでは、キーに設定できる値を定義できます。
構文
BOOL CryptSetKeyParam(
[in] HCRYPTKEY hKey,
[in] DWORD dwParam,
[in] const BYTE *pbData,
[in] DWORD dwFlags
);
パラメーター
[in] hKey
値を設定するキーのハンドル。
[in] dwParam
次の表には、使用できる定義済みの値が含まれています。
すべてのキー型に対して、このパラメーターには次のいずれかの値を含めることができます。
価値 | 意味 |
---|---|
|
pbData |
|
pbData |
|
pbData は、0 個以上のアクセス許可フラグを指定する DWORD 値を指します。 これらのフラグの詳細については、CryptGetKeyParam |
|
|
|
pbData |
Digital Signature Standard (DSS) キーが hKey パラメーターで指定されている場合は、dwParam 値を次のいずれかの値に設定することもできます。
価値 | 意味 |
---|---|
|
pbData は、DSS キー BLOBからジェネレーター G を指します。 データは CRYPT_INTEGER_BLOB 構造体の形式で、pbData メンバーは値、cbData メンバーは値の長さです。 この値は、ヘッダー情報がなく、リトル エンディアン 形式 |
|
pbData は、DSS キー BLOB の素数 P を指します。 データは、CRYPT_INTEGER_BLOB 構造の形式です。
pbData メンバーは値、cbData メンバーは値の長さです。 この値は、ヘッダー情報がなく、リトル エンディアン 形式 |
|
pbData は、DSS キー BLOB の素数 Q を指します。 データは、pbData メンバーが値である CRYPT_INTEGER_BLOB 構造体の形式で、cbData メンバーは値の長さです。 この値は、ヘッダー情報がなく、リトル エンディアン 形式 |
|
P、Q、および G の値を設定した後、pbData パラメーター の dwParam および NULL のKP_X値を指定する呼び出しを、CryptSetKeyParam 関数に対して行うことができます。 これにより、X と Y の値が生成されます。 |
価値 | 意味 |
---|---|
|
インポートされた Diffie-Hellman キーの情報を設定します。 pbData パラメーターは、設定するキー情報を含む CMS_DH_KEY_INFO 構造体のアドレスです。 |
|
DSS または Diffie-Hellman キーのパブリック パラメーター (P、Q、G など) を設定します。 このキーのキー ハンドルは、CRYPT_PREGEN フラグで生成された PREGEN 状態である必要があります。 pbData パラメーターは、この構造体内のデータがDHPUBKEY_VER3またはDSSPUBKEY_VER3 BLOB である DATA_BLOB 構造体へのポインターである必要があります。 この関数は、この CRYPT_INTEGER_BLOB 構造体からキー ハンドルにパブリック パラメーターをコピーします。 この呼び出しが行われた後、KP_X パラメーター値を CryptSetKeyParam と共に使用して、実際の秘密キーを作成する必要があります。 KP_PUB_PARAMS パラメーターは、パラメーター値がKP_P、KP_Q、およびKP_Gを持つ複数の呼び出しではなく、1 つの呼び出しとして使用されます。 |
ブロック暗号セッション キー が hKey パラメーターで指定されている場合は、dwParam 値を次のいずれかの値に設定することもできます。
価値 | 意味 |
---|---|
|
この値型は RC2 キーでのみ使用でき、Windows 2000 より前の Microsoft Enhanced Cryptographic Provider で CryptSetKeyParam 関数が実装されているため追加されています。 前の実装では、拡張プロバイダーの RC2 キーは 128 ビットの強度でしたが、キーテーブルにキーを拡張するために使用される有効なキー長はわずか40ビットでした。 これにより、アルゴリズムの強度が 40 ビットに低下しました。 下位互換性を維持するために、前の実装はそのまま残ります。 ただし、有効なキー長は、CryptSetKeyParam 呼び出しでKP_EFFECTIVE_KEYLENを使用して 40 ビットを超える値に設定できます。 有効なキーの長さは、有効なキー長の値を持つ DWORD 値へのポインターとして、pbData パラメーターに渡されます。 Microsoft Base Cryptographic Provider の有効なキーの最小長は 1 で、最大値は 40 です。 Microsoft Enhanced Cryptographic Provider では、最小値は 1、最大値は 1,024 です。 キーを使用して暗号化または復号化する前に、キーの長さを設定する必要があります。 |
|
許可されるトランスポート層セキュリティ (TLS) バージョンの |
|
pbData は、初期化ベクトルを指定する BYTE 配列を指します。 この配列には、/8 要素 BlockLength含まれている必要があります。 たとえば、ブロック長が 64 ビットの場合、初期化ベクトルは 8 バイトで構成されます。
初期化ベクトルは、Microsoft Base Cryptographic Provider の既定では 0 に設定されます。 |
|
Data Encryption Standard (DES) キーのキー値を設定します。 pbData パラメーターは、キーを含むバッファーのアドレスです。 このバッファーは、キーと同じ長さにする必要があります。 このプロパティは DES キーにのみ適用されます。 |
|
パディング モードを設定します。 pbData パラメーターは、暗号で使用される 埋め込み メソッドを識別する数値識別子を受け取る DWORD 値へのポインターです。 次のいずれかの値を指定できます。 |
|
pbData は、使用する 暗号モード を指定する DWORD 値を指します。 定義済みの暗号モードの一覧については、CryptGetKeyParam |
|
pbData は、出力フィードバック (OFB) または 暗号フィードバック (CFB) 暗号モードを使用するときに、サイクルごとに処理されるビット数を示す DWORD 値を指します。 Microsoft Base Cryptographic Provider の場合、サイクルごとに処理されるビット数は既定で 8 に設定されます。 |
hKey パラメーターに RSA キーが指定されている場合、dwParam パラメーターの値は次の値になります。
価値 | 意味 |
---|---|
|
キーの最適非対称暗号化パディング (OAEP) (PKCS #1 バージョン 2) パラメーターを設定します。 pbData パラメーターは、OAEP ラベルを含む CRYPT_DATA_BLOB 構造体のアドレスです。 このプロパティは RSA キーにのみ適用されます。 |
次の値は使用されないことに注意してください。
- KP_ADMIN_PIN
- KP_CMS_KEY_INFO
- KP_INFO
- KP_KEYEXCHANGE_PIN
- KP_PRECOMP_MD5
- KP_PRECOMP_SHA
- KP_PREHASH
- KP_PUB_EX_LEN
- KP_PUB_EX_VAL
- KP_RA
- KP_RB
- KP_ROUNDS
- KP_RP
- KP_SIGNATURE_PIN
- KP_Y
[in] pbData
CryptSetKeyParamを呼び出す前に設定する値で初期化
[in] dwFlags
dwParam
戻り値
関数が成功した場合、戻り値は 0 以外 (TRUE) です。
関数が失敗した場合、戻り値は 0 (FALSE) です。 拡張エラー情報については、GetLastError
"NTE" で開始されるエラー コードは、使用されている特定の CSP によって生成されます。 考えられるエラー コードの一部を次に示します。
リターン コード | 形容 |
---|---|
|
CSP コンテキストは現在、別の プロセスによって使用されています。 |
|
パラメーターの 1 つは無効なハンドルを指定します。 |
|
パラメーターの 1 つに無効な値が含まれています。 これは、多くの場合、無効なポインターです。 |
|
dwFlags パラメーターが 0 以外であるか、pbData バッファーに無効な値が含まれています。 |
|
dwParam パラメーターは、不明なパラメーターを指定します。 |
|
hKey キーが作成されたときに指定された CSP コンテキストが見つかりません。 |
|
予期しない方法で関数が失敗しました。 |
|
一部の CSP には、P、Q、G の値がハードコーディングされています。 その場合、dwParam の値にKP_P、KP_Q、KP_G |
備考
PREGEN Diffie-Hellman または DSS キーにKP_Q、KP_P、またはKP_Xパラメーターが設定されている場合、キーの長さは、
例
この関数を使用する例については、「例 C プログラム: セッション キーの複製」を参照してください。 この関数を使用するその他のコードについては、「サンプル C プログラム: セッション キー パラメーターの設定と取得」 を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | wincrypt.h |
ライブラリ | Advapi32.lib |
DLL | Advapi32.dll |