CryptAcquireContextW

特定の暗号化サービスプロバイダ (CSP) 内の特定のキーコンテナへのハンドルを取得するために使用する。返されたハンドルは、選択した CSP を使用する CryptoAPI 関数の呼び出しで使用される。(Unicode)

CryptAcquireContextW phProv, szContainer, szProvider, dwProvType, dwFlags

phProv : [var] CSP のハンドルへのポインタ。CSP の使用が終わったら、CryptReleaseContext 関数を呼び出してハンドルを解放する。
szContainer : [wstr] キーコンテナ名。CSP にキーコンテナを識別させる null 終端文字列である。この名前は、鍵の格納方法とは無関係である。CSP によってはキーコンテナを内部 (ハードウェア内) に格納するものもあれば、システムのレジストリを使用するもの、ファイルシステムを使用するものもある。ほとんどの場合、dwFlags が CRYPT_VERIFYCONTEXT に設定されているとき、pszContainer は NULL に設定する必要がある。ただし、スマートカード CSP のようなハードウェアベースの CSP の場合、指定したコンテナ内で公開されている情報にアクセスできる。pszContainer パラメータの使用方法の詳細は「Remarks」を参照。
szProvider : [wstr] 使用する CSP の名前を格納する null 終端文字列。
dwProvType : [int] 取得するプロバイダの種類を指定する。定義されているプロバイダの種類については Cryptographic Provider Types を参照。
dwFlags : [int] 以下のフラグのうちの 1 つ以上。ほとんどのアプリケーションでは、デジタル署名の作成やメッセージの復号が必要でない限り、CRYPT_VERIFYCONTEXT フラグを設定することが推奨される。

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

解説

特定の暗号化サービスプロバイダ (CSP) 内の特定のキーコンテナへのハンドルを取得するために使用する。返されたハンドルは、選択した
CSP を使用する CryptoAPI 関数の呼び出しで使用される。(Unicode)

[戻り値]
関数が成功した場合はゼロ以外 (TRUE) を返す。失敗した場合はゼロ (FALSE) を返す。拡張エラー情報を取得するには
GetLastError を呼び出す。NTE で始まるエラーコードは使用中の特定の CSP が生成する。Winerror.h
で定義されている主なエラーコードを以下に示す。
(以下省略)

[備考]
pszContainer パラメータは、鍵を保持するために使用するコンテナの名前を指定する。各コンテナには 1
つの鍵を格納できる。鍵を作成する際に既存のコンテナ名を指定すると、新しい鍵は既存の鍵を上書きする。CSP
名とキーコンテナ名の組み合わせにより、システム上で 1
つの鍵が一意に識別される。あるアプリケーションが使用中のキーコンテナを別のアプリケーションが変更しようとすると、予期しない動作を招く可能性がある。pszContainer
パラメータを NULL に設定すると、既定のキーコンテナ名が使用される。Microsoft ソフトウェア CSP
をこの方法で呼び出した場合、CryptAcquireContext 関数が呼び出されるたびに新しいコンテナが作成される。ただし、CSP
によって挙動は異なる可能性がある。特に、CSP が CSP にアクセスするすべてのアプリケーション間で共有される既定のコンテナを 1
つだけ持つ場合がある。したがって、アプリケーションは秘密鍵の格納に既定のキーコンテナを使用してはならない。代わりに、dwFlags
パラメータに CRYPT_VERIFYCONTEXT
フラグを渡して鍵の格納を抑止するか、他のアプリケーションで使用される可能性が低いアプリケーション固有のコンテナを使用する。アプリケーションは
CryptGetProvParam 関数で PP_CONTAINER
値を読み取ることで、使用中のキーコンテナ名を取得できる。パフォーマンス上の理由から、永続化された鍵が必要でない場合は、pszContainer
パラメータを NULL に、dwFlags パラメータを CRYPT_VERIFYCONTEXT
に設定することを推奨する。特に次のような場面では pszContainer を NULL、dwFlags を
CRYPT_VERIFYCONTEXT に設定することを検討すべきである。
(以下省略)

情報

プラグイン / モジュール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