NCryptOpenKey 函式 (ncrypt.h)
NCryptOpenKey 函式會開啟存在於指定 CNG 金鑰儲存提供者中的金鑰。
語法
SECURITY_STATUS NCryptOpenKey(
[in] NCRYPT_PROV_HANDLE hProvider,
[out] NCRYPT_KEY_HANDLE *phKey,
[in] LPCWSTR pszKeyName,
[in] DWORD dwLegacyKeySpec,
[in] DWORD dwFlags
);
參數
[in] hProvider
要從中開啟金鑰的金鑰儲存提供者句柄。
[out] phKey
接收金鑰句柄 之NCRYPT_KEY_HANDLE 變數的指標。 當您完成使用此句柄時,請將它傳遞給 NCryptFreeObject 函式來釋放它。
[in] pszKeyName
Null 終止 Unicode 字串的指標,其中包含要擷取的索引鍵名稱。
[in] dwLegacyKeySpec
指定金鑰類型的舊版識別碼。 這可以是下列其中一個值。
值 | 意義 |
---|---|
|
金鑰是金鑰交換金鑰。 |
|
金鑰是簽章金鑰。 |
|
索引鍵不是上述類型。 |
[in] dwFlags
修改函式行為的旗標。 這可以是零或下列一或多個值的組合。
值 | 意義 |
---|---|
|
開啟本機計算機的金鑰。 如果這個旗標不存在,則會開啟目前的使用者密鑰。 |
|
要求金鑰服務提供者 (KSP) 不會顯示任何使用者介面。 如果提供者必須顯示要運作的UI,呼叫會失敗,KSP應該將 NTE_SILENT_CONTEXT 錯誤碼設定為最後一個錯誤。 |
傳回值
傳回狀態代碼,指出函式的成功或失敗。
可能的傳回碼包括但不限於下列專案。
傳回碼 | Description |
---|---|
|
函式成功。 |
|
dwFlags 參數包含無效的值。 |
|
找不到指定的索引鍵。 |
|
hProvider 參數無效。 |
|
一或多個參數無效。 |
|
發生記憶體配置失敗。 |
備註
服務不得從它的 StartService 函式呼叫此函式。 如果服務從其 StartService 函式呼叫此函式,可能會發生死結,而且服務可能會停止回應。
基於效能考慮,只要金鑰的句柄開啟,Microsoft 軟體型 KSP 會快取本地安全機構 (LSA) 中的私鑰數據。 LSA 是特殊許可權的系統進程。 因此,除非使用者擁有系統上的系統管理員許可權,否則其他使用者無法存取此快取的密鑰複本。 此行為無法透過組態改變。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | ncrypt.h |
程式庫 | Ncrypt.lib |
Dll | Ncrypt.dll |