次の方法で共有


CRYPT_KEY_PROV_INFO構造体 (wincrypt.h)

CRYPT_KEY_PROV_INFO構造体には、暗号化サービス プロバイダー (CSP) 内のキー コンテナーに関する情報が含まれています。

構文

typedef struct _CRYPT_KEY_PROV_INFO {
  LPWSTR                pwszContainerName;
  LPWSTR                pwszProvName;
  DWORD                 dwProvType;
  DWORD                 dwFlags;
  DWORD                 cProvParam;
  PCRYPT_KEY_PROV_PARAM rgProvParam;
  DWORD                 dwKeySpec;
} CRYPT_KEY_PROV_INFO, *PCRYPT_KEY_PROV_INFO;

メンバー

pwszContainerName

キー コンテナーの名前を含む null で終わる Unicode 文字列へのポインター。

dwProvType メンバーが 0 の場合、この文字列には CNG キー ストレージ プロバイダー内のキーの名前が含まれます。 この文字列は pwszKeyName パラメーターとして NCryptOpenKey 関数に渡されます。

pwszProvName

CSP の名前を含む null で終わる Unicode 文字列へのポインター。

dwProvType メンバーが 0 の場合、この文字列には CNG キー ストレージ プロバイダーの名前が含まれます。 この文字列は pwszProviderName パラメーターとして NCryptOpenStorageProvider 関数に渡されます。

dwProvType

CSP の種類を指定します。 これには、0 または 暗号化プロバイダーの種類のいずれかを指定できます。

このメンバーが 0 の場合、キー コンテナーは CNG キー ストレージ プロバイダーのいずれかです。

dwFlags

プロバイダーに関する追加情報を示すフラグのセット。 0 または次のいずれかの値を指定できます。

意味
CERT_SET_KEY_PROV_HANDLE_PROP_ID/CERT_SET_KEY_CONTEXT_PROP_ID
キー プロバイダーへのハンドルを、その後の暗号化関数の呼び出しのために開いたままにします。
CRYPT_MACHINE_KEYSET/NCRYPT_MACHINE_KEY_FLAG
キー コンテナーにはマシン キーが含まれています。 このフラグが存在しない場合、キー コンテナーにはユーザー キーが含まれます。
CRYPT_SILENT/NCRYPT_SILENT_FLAG
キー コンテナーは、ユーザー インターフェイスプロンプトなしでキーをサイレントに開こうとします。
 

暗号化関数 CryptDecryptMessageCryptSignMessageCryptDecryptAndVerifyMessageSignatureおよび CryptSignAndEncryptMessage は、証明書のCRYPT_KEY_PROV_INFOを使用して内部的に CryptAcquireContext 操作を実行します。 CERT_SET_KEY_CONTEXT_PROP_IDまたはCERT_SET_KEY_PROV_HANDLE_PROP_ID フラグが設定されている場合、これらの暗号化関数は、CERT_KEY_CONTEXT_PROP_IDを使用して CertSetCertificateContextProperty を呼び出すことができます。 この呼び出しにより、キー プロバイダーへのハンドルは、同じ証明書を使用する前述の暗号化関数の後続の呼び出しに対して開いたままにすることができます。これにより、 CryptAcquireContext への追加の呼び出しを実行する必要がなくなり、効率が向上します。 また、一部のプロバイダーでは 、CryptAcquireContext の呼び出しにパスワードを入力する必要があるため、アプリケーションでは CryptAcquireContext 呼び出しの数を最小限に抑える必要があります。 開いたままにされたキー プロバイダーへのハンドルは、ストアが閉じられると自動的に解放されます。

たとえば、5 つの暗号化されたメッセージが受信され、すべて同じ証明書の公開キーで暗号化された電子メール アプリケーションがあるとします。 キー プロバイダーへのハンドルが最初のメッセージの処理後も開いたままになっている場合、残りの 4 つのメッセージに 対して CryptAcquireContext の呼び出しは必要ありません。

cProvParam

rgProvParam 配列内の要素の数。

dwProvType メンバーが 0 の場合、このメンバーは使用されず、0 である必要があります。

rgProvParam

キー コンテナーのパラメーターを含む CRYPT_KEY_PROV_PARAM 構造体の配列。 cProvParam メンバーには、この配列内の要素の数が含まれています。

dwProvType メンバーが 0 の場合、このメンバーは使用されず、NULL である必要があります。

dwKeySpec

取得する秘密キーの指定。

既定のプロバイダーには、次の値が定義されています。

dwProvType メンバーが 0 の場合、この値は dwLegacyKeySpec パラメーターとして NCryptOpenKey 関数に渡されます。

意味
AT_KEYEXCHANGE
セッション キーの暗号化/暗号化解除に使用されるキー。
AT_SIGNATURE
デジタル署名の作成と検証に使用されるキー。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header wincrypt.h

こちらもご覧ください

CRYPT_KEY_PROV_PARAM

CertGetCertificateContextProperty

CertSetCertificateContextProperty