CryptExportPublicKeyInfoFromBCryptKeyHandle 函数 (wincrypt.h)

CryptExportPublicKeyInfoFromBCryptKeyHandle 函数导出与提供程序的相应私钥关联的公钥信息。

语法

BOOL CryptExportPublicKeyInfoFromBCryptKeyHandle(
  [in]            BCRYPT_KEY_HANDLE     hBCryptKey,
  [in]            DWORD                 dwCertEncodingType,
  [in, optional]  LPSTR                 pszPublicKeyObjId,
  [in]            DWORD                 dwFlags,
  [in, optional]  void                  *pvAuxInfo,
  [out, optional] PCERT_PUBLIC_KEY_INFO pInfo,
  [in, out]       DWORD                 *pcbInfo
);

参数

[in] hBCryptKey

要从中导出公钥信息的密钥句柄。

[in] dwCertEncodingType

指定要匹配的编码类型。

此值可以是当前定义的编码类型的按位组合:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in, optional] pszPublicKeyObjId

指向 对象标识符 的指针 (OID) ,用于标识用于导出密钥的可安装函数。 如果 OID 的高阶字非零, pszPublicKeyObjId 是指向 OID 字符串(如“2.5.29.1”)或 ASCII 字符串(如“file”)的指针。如果 OID 的高阶字为零,则低序字将指定要用作对象标识符的整数标识符。

[in] dwFlags

指示如何导出公钥信息的 DWORD 值。

含义
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
0x80000000
跳过 使用 CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG 标志显式标记的 CRYPT_PUBKEY_ALG_OID_GROUP_ID 组中的公钥。
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
0x40000000
跳过CRYPT_PUBKEY_ALG_OID_GROUP_ID组中使用 CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG 标志显式标记 公钥。

[in, optional] pvAuxInfo

此参数保留供将来使用,必须设置为 NULL

[out, optional] pInfo

指向 CERT_PUBLIC_KEY_INFO 结构的指针,用于接收要导出的公钥信息。

此参数可以为 NULL ,用于设置此信息的大小,以便进行内存分配。 有关详细信息,请参阅 检索长度未知的数据

[in, out] pcbInfo

指向 DWORD 的指针,其中包含 pInfo 参数指向的缓冲区的大小(以字节为单位)。 函数返回时, DWORD 包含缓冲区中存储的字节数。

返回值

如果该函数成功,则返回 TRUE ;否则,它将返回 FALSE

注解

如果 CryptExportPublicKeyInfoFromBCryptKeyHandle 函数无法为 pszPublicKeyObjId 参数指定的 OID 找到可安装的 OID 函数,则会尝试将密钥导出为 RSA 公钥 (szOID_RSA_RSA) 。 如果将密钥导出为 RSA 公钥,则不使用 dwFlagspvAuxInfo 参数的值。

要求

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