cryptGetUserKey 函数 (wincrypt.h)

重要 此 API 已弃用。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
 
CryptGetUserKey 函数检索用户的两个公钥/私钥对之一的句柄。 此函数仅由公钥/私钥对的所有者使用,并且仅当 加密服务提供程序 的句柄 (CSP) 及其关联的 密钥容器 可用时。 如果 CSP 句柄不可用,并且用户的证书为 ,请使用 CryptAcquireCertificatePrivateKey

语法

BOOL CryptGetUserKey(
  [in]  HCRYPTPROV hProv,
  [in]  DWORD      dwKeySpec,
  [out] HCRYPTKEY  *phUserKey
);

参数

[in] hProv

通过调用 CryptAcquireContext 创建的加密服务提供程序 (CSP) 的 HCRYPTPROV 句柄。

[in] dwKeySpec

标识要从密钥容器使用的私钥。 它可以AT_KEYEXCHANGE或AT_SIGNATURE。

此外,某些提供程序允许通过此函数访问其他用户特定的密钥。 有关详细信息,请参阅有关特定提供程序的文档。

[out] phUserKey

指向检索到的密钥的 HCRYPTKEY 句柄的指针。 使用完密钥后,通过调用 CryptDestroyKey 函数删除句柄。

返回值

如果函数成功,则返回值为非零 (TRUE) 。

如果函数失败,则返回值为零 (FALSE) 。 有关扩展的错误信息,请调用 GetLastError

以“NTE”开头的错误代码由使用的特定 CSP 生成。 下面是一些可能的错误代码。

返回代码 说明
ERROR_INVALID_HANDLE
其中一个参数指定无效的句柄。
ERROR_INVALID_PARAMETER
其中一个参数包含无效的值。 这通常是无效的指针。
NTE_BAD_KEY
dwKeySpec 参数包含无效的值。
NTE_BAD_UID
hProv 参数不包含有效的上下文句柄。
NTE_NO_KEY
dwKeySpec 参数请求的密钥不存在。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 wincrypt.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

CryptAcquireContext

CryptDestroyKey

CryptGenKey

密钥生成和交换函数