CryptDeriveKey

基準データから派生した暗号セッション鍵を生成する。

CryptDeriveKey hProv, Algid, hBaseData, dwFlags, phKey

hProv : [int] CryptAcquireContext の呼び出しで作成された CSP の HCRYPTPROV ハンドル。
Algid : [int] 鍵を生成する対称暗号アルゴリズムを識別する ALG_ID 構造体。利用できるアルゴリズムは CSP ごとに異なる可能性が高い。AT_KEYEXCHANGE と AT_SIGNATURE のキー仕様に対して各プロバイダが使用するアルゴリズム識別子の詳細は ALG_ID を参照。Microsoft Base Cryptographic Provider で使用する ALG_ID 値の詳細は Base Provider Algorithms を参照。Microsoft Strong Cryptographic Provider や Microsoft Enhanced Cryptographic Provider で使用する ALG_ID 値の詳細は Enhanced Provider Algorithms を参照。
hBaseData : [int] 基準データが与えられたハッシュオブジェクトへのハンドル。このハンドルを取得するには、アプリケーションはまず CryptCreateHash でハッシュオブジェクトを作成し、次に CryptHashData で基準データをハッシュオブジェクトに追加する必要がある。この処理の詳細は Hashes and Digital Signatures を参照。
dwFlags : [int] 生成される鍵の種類を指定する。鍵生成時にセッション鍵のサイズを設定できる。鍵サイズ (鍵のモジュラス長をビットで表したもの) は、このパラメータの上位 16 ビットで設定する。したがって、128 ビット RC4 セッション鍵を生成する場合は値 0x00800000 を、他の dwFlags 事前定義値とビット単位の OR 演算で組み合わせる。輸出規制の変更により、既定の CSP と既定の鍵長は OS リリース間で変わる可能性がある。相互運用性を確保するため、暗号化と復号で同じ CSP を使用し、dwFlags パラメータを使って鍵長を明示的に設定することが重要である。このパラメータの下位 16 ビットはゼロにするか、ビット単位の OR 演算で次のフラグのうちの 1 つ以上を組み合わせて指定できる。
phKey : [var] 新しく生成された鍵のハンドルのアドレスを受け取る HCRYPTKEY 変数へのポインタ。鍵の使用が終わったら、CryptDestroyKey 関数を呼び出してハンドルを解放する。

(プラグイン / モジュール : advapi32.dll)

解説

基準データから派生した暗号セッション鍵を生成する。

[戻り値]
関数が成功した場合はゼロ以外 (TRUE) を返す。失敗した場合はゼロ (FALSE) を返す。拡張エラー情報を取得するには
GetLastError を呼び出す。「NTE」で始まるエラーコードは使用中の特定の CSP
が生成する。次の表は、返される可能性のあるエラーコードの一部を示す。
(以下省略)

[備考]
対称ブロック暗号用の鍵を生成するとき、既定では鍵は初期化ベクトルがゼロの暗号ブロック連鎖 (CBC)
モードで設定される。この暗号モードは大量のデータを一括暗号化するための良好な既定手法である。これらのパラメータを変更するには
CryptSetKeyParam 関数を使用する。CryptDeriveKey 関数はハッシュを確定させる。CryptDeriveKey
が呼び出された後はハッシュにデータを追加できない。CryptHashData または CryptHashSessionKey
の追加呼び出しは失敗する。アプリケーションがハッシュの使用を終えた後は、CryptDestroyHash
を呼び出してハッシュオブジェクトを破棄しなければならない。適切な鍵長を選択するには、次の方法が推奨される。
(以下省略)

情報

プラグイン / モジュールadvapi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の advapi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_advapi32_gen2.hs