ランダムな暗号セッション鍵または公開/秘密鍵ペアを生成する。鍵または鍵ペアへのハンドルが phKey に返される。このハンドルは、鍵ハンドルを必要とする任意の CryptoAPI 関数で使用できる。
CryptGenKey hProv, Algid, dwFlags, phKey
hProv : [int] CryptAcquireContext の呼び出しで作成された暗号化サービスプロバイダ (CSP) へのハンドル。 Algid : [int] 鍵を生成するアルゴリズムを識別する ALG_ID 値。このパラメータの値は使用する CSP によって異なる。Microsoft Base Cryptographic Provider で使用する ALG_ID 値については Base Provider Algorithms を参照。Microsoft Strong Cryptographic Provider や Microsoft Enhanced Cryptographic Provider で使用する ALG_ID 値については Enhanced Provider Algorithms を参照。 dwFlags : [int] 生成される鍵の種類を指定する。セッション鍵、RSA 署名鍵、RSA 鍵交換鍵のサイズは鍵生成時に設定できる。鍵サイズ (鍵のモジュラス長をビットで表したもの) は、このパラメータの上位 16 ビットで設定する。したがって 2048 ビット RSA 署名鍵を生成する場合は、値 0x08000000 を他の dwFlags 事前定義値とビット単位の OR 演算で組み合わせる。0x08000000 の上位 16 ビットは 0x0800 (10 進で 2048) となる。RSA1024BIT_KEY 値を使用して 1024 ビット RSA 鍵を指定できる。輸出規制の変更により、既定の CSP と既定の鍵長は OS のバージョン間で変わる可能性がある。相互運用性を確保するため、暗号化と復号で同じ CSP を使用し、dwFlags パラメータで鍵長を明示的に設定することが重要である。特に、既定の RSA Full Cryptographic Service Provider は Microsoft RSA Strong Cryptographic Provider である。既定の DSS Signature Diffie-Hellman Cryptographic Service Provider は Microsoft Enhanced DSS Diffie-Hellman Cryptographic Provider である。いずれの CSP も、RC2 および RC4 の既定の対称鍵長は 128 ビット、公開鍵アルゴリズムの既定の鍵長は 1024 ビットである。上位 16 ビットがゼロの場合、既定の鍵サイズが生成される。最大値より大きいか最小値より小さい鍵を指定すると、呼び出しは ERROR_INVALID_PARAMETER で失敗する。次の表は Windows XP 以降の署名鍵と交換鍵の最小、既定、最大の長さを示す。 phKey : [var] 関数が新しく生成された鍵のハンドルをコピーするアドレス。鍵の使用が終わったら、CryptDestroyKey 関数を呼び出して鍵のハンドルを削除する。
(プラグイン / モジュール : advapi32.dll)
ランダムな暗号セッション鍵または公開/秘密鍵ペアを生成する。鍵または鍵ペアへのハンドルが phKey に返される。このハンドルは、鍵ハンドルを必要とする任意の CryptoAPI 関数で使用できる。 [戻り値] 成功した場合はゼロ以外、そうでなければゼロを返す。拡張エラー情報を取得するには GetLastError を呼び出す。「NTE」で始まるエラーコードは使用中の特定の CSP が生成する。次の表は、返される可能性のあるエラーコードの一部を示す。 (以下省略) [備考] 対称ブロック暗号用の鍵を生成するとき、既定では鍵は初期化ベクトルがゼロの暗号ブロック連鎖 (CBC) モードで設定される。この暗号モードは大量のデータを暗号化するための良好な既定手法である。これらのパラメータを変更するには CryptSetKeyParam 関数を使用する。適切な鍵長を選択するには、次の方法が推奨される。 (以下省略)
| プラグイン / モジュール | advapi32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の advapi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_advapi32_gen2.hs |