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

密碼編譯函式 CryptDecryptMessage、CryptSignMessage、CryptDecryptAndVerifyMessageSignature 和 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 呼叫的數目降到最低。 關閉存放區時,會自動釋放已保持開啟的密鑰提供者句柄。

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