暗号化サービス プロバイダーのコンテキスト

暗号化 API を使用するアプリケーションによって呼び出される最初の CryptoAPI 関数は 、CryptAcquireContext 関数です。 この関数は、CSP 内の特定の キー コンテナー の仕様を含む特定の CSP へのハンドルを返します。 このキー コンテナーは、特に要求されたキー コンテナーであるか、現在ログオンしているユーザーの既定のキー コンテナーです。

CryptAcquireContext では、新しいキー コンテナーを作成することもできます。 詳細については、「C プログラム例: キー コンテナーの作成とキーの生成」および「サンプル C プログラム: CryptAcquireContext の使用」を参照してください。

暗号化サービス プロバイダー (CSP) には、名前と種類の両方があります。 たとえば、オペレーティング システムに現在付属している CSP の 1 つの名前は 、Microsoft Base Cryptographic Provider ですこれはPROV_RSA_FULL型プロバイダーです。 各プロバイダーの名前は一意です。プロバイダーの種類は無効です。

アプリケーションが CryptAcquireContext を呼び出して CSP ハンドルを取得すると、プロバイダーの種類と、必要に応じてプロバイダー名が指定されます。 型と名前の両方が指定されている場合、関数は一致するプロバイダーの種類とプロバイダー名を持つ CSP を読み込みます。 この関数は、CSP と CSP 内の キー コンテナー の両方へのアクセスを提供する CSP のハンドルを返します。

アプリケーションが CryptAcquireContext を呼び出し、プロバイダーの種類を指定してもプロバイダー名を指定しない場合、関数は名前付きプロバイダーを検索します。まず、ログオン しているユーザーに関連付けられている既定の名前付きプロバイダーの一覧を確認し、失敗した場合は、コンピューターに関連付けられている既定の名前付きプロバイダーの一覧から確認します。 プロバイダー名が特定されると、 CryptAcquireContext 関数はそのプロバイダーの CSP を検索して読み込み、ハンドルを返します。

CSP ハンドルの使用が完了したら、 CryptReleaseContext 関数を呼び出して解放します。