共用方式為


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 成員為零時,此字串會包含 CNG 金鑰儲存提供者內的金鑰名稱。 此字串會當做 pwszKeyName 參數傳遞至 NCryptOpenKey 函式。

pwszProvName

包含 CSP 名稱之 Null 終止 Unicode 字串的指標。

dwProvType 成員為零時,此字串會包含 CNG 金鑰儲存提供者的名稱。 此字串會當做 pwszProviderName 參數傳遞至 NCryptOpenStorageProvider 函式。

dwProvType

指定 CSP 類型。 這可以是零或其中一個 密碼編譯提供者類型

如果這個成員是零,密鑰容器就是其中一個 CNG 金鑰儲存提供者。

dwFlags

一組旗標,指出提供者的其他資訊。 這可以是零或下列其中一個值。

意義
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
密鑰容器會嘗試以無訊息方式開啟任何密鑰,而不會提示任何使用者介面。
 

密碼編譯函式 CryptDecryptMessageCryptSignMessageCryptDecryptAndVerifyMessageSignatureCryptSignAndEncryptMessage 會在內部使用憑證的 CRYPT_KEY_PROV_INFO來執行 CryptAcquireContext 作業。 設定CERT_SET_KEY_CONTEXT_PROP_IDCERT_SET_KEY_PROV_HANDLE_PROP_ID旗標時,這些密碼編譯函式接著可以使用 CERT_KEY_CONTEXT_PROP_ID 呼叫 CertSetCertificateContextProperty。 此呼叫可讓密鑰提供者的句柄保持開啟,以供後續呼叫使用該相同憑證的密碼編譯函式保持開啟,這樣就不需要對 CryptAcquireContext 執行其他呼叫,進而提升效率。 此外,由於某些提供者可能需要輸入密碼才能呼叫 CryptAcquireContext,因此應用程式需要將進行 CryptAcquireContext 呼叫的數目降到最低。 關閉存放區時,會自動釋放已保持開啟的密鑰提供者句柄。

例如,假設有一個電子郵件應用程式收到五個加密的郵件,全部都以相同憑證的公鑰加密。 如果在處理第一個訊息之後,密鑰提供者的句柄保持開啟狀態,則四個剩餘訊息不需要對 CryptAcquireContext 的呼叫。

cProvParam

rgProvParam 陣列中的項目數目。

dwProvType 成員為零時,不會使用這個成員,而且必須是零。

rgProvParam

包含索引鍵容器參數 之CRYPT_KEY_PROV_PARAM 結構的陣列。 cProvParam成員包含這個數位中的元素數目。

dwProvType 成員為零時,不會使用這個成員,而且必須是 NULL

dwKeySpec

要擷取之私鑰的規格。

預設提供者定義了下列值。

dwProvType 成員為零時,這個值會當做 dwLegacyKeySpec 參數傳遞至 NCryptOpenKey 函式。

意義
AT_KEYEXCHANGE
用來加密/解密會話金鑰的金鑰。
AT_SIGNATURE
用來建立和驗證數位簽名的金鑰。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
標頭 wincrypt.h

另請參閱

CRYPT_KEY_PROV_PARAM

CertGetCertificateContextProperty

CertSetCertificateContextProperty