SslExportKey 函数

SslExportKey 函数将安全套接字层协议 (SSL) 会话密钥或公共临时密钥返回到序列化的 BLOB 中。

语法

SECURITY_STATUS WINAPI SslExportKey(
  _In_      NCRYPT_PROV_HANDLE hSslProvider,
  _In_      NCRYPT_KEY_HANDLE  hKey,
  _In_      LPCWSTR            pszBlobType,
  _Out_opt_ PBYTE              pbOutput,
  _In_      DWORD              cbOutput,
  _Out_     DWORD              *pcbResult,
  _In_      DWORD              dwFlags
);

参数

hSslProvider [in]

SSL 协议提供程序实例的句柄。

hKey [in]

要导出的密钥的句柄。

如果未指定密钥,请将此参数设置为 NULL

注意

通过调用 SslOpenPrivateKey 函数获取 hKey 句柄。 不支持从 NCryptOpenKey 函数获取的句柄。

pszBlobType [in]

一个以 null 结尾的 Unicode 字符串,其中包含指定要导出的 BLOB 类型的标识符。 这可以是以下值之一。

含义
BCRYPT_DH_PUBLIC_BLOB
导出Diffie-Hellman 公钥pbOutput 缓冲区紧随键数据接收BCRYPT_DH_KEY_BLOB结构。
BCRYPT_ECCPUBLIC_BLOB
(ECC) 公钥导出 椭圆曲线加密pbOutput 缓冲区紧随键数据接收BCRYPT_ECCKEY_BLOB结构。
BCRYPT_OPAQUE_KEY_BLOB
导出特定于单个加密服务提供程序 (云解决方案提供商) 的格式的对称密钥。 不透明 BLOB 不可传输,必须使用生成 BLOB 的同一加密服务提供程序 (云解决方案提供商) 导入。
BCRYPT_RSAPUBLIC_BLOB
导出 RSA 公钥。 pbOutput 缓冲区立即接收BCRYPT_RSAKEY_BLOB结构,后跟键数据。

pbOutput [out, 可选]

接收 密钥 BLOB 的缓冲区的地址。 cbOutput 参数包含此缓冲区的大小。 如果此参数为 NULL,则此函数会将所需的大小(以字节为单位)放置在由 azureResult 参数指向的 DWORD 中。

cbOutput [in]

pbOutput 缓冲区的大小(以字节为单位)。

辱骂 [ out]

接收复制到 pbOutput 缓冲区的字节数的 DWORD 变量的地址。 如果在调用函数时将 pbOutput 参数设置为 NULL,则此参数指向的 DWORD 中返回 pbOutput 缓冲区所需的大小(以字节为单位)。

dwFlags [in]

保留供将来使用。

返回值

如果函数成功,则返回零。

如果函数失败,它将返回非零错误值。

可能的返回代码包括但不限于以下内容。

返回代码/值 说明
NTE_INVALID_HANDLE
0x80090026L
提供的句柄之一无效。

注解

SslExportKey 函数有助于将会话密钥从一个进程传输到另一个进程,以及导出临时密钥的公共部分。

导出会话密钥时,BLOB 类型不透明,这意味着只要 SslExportKeySslImportKey 函数可以解释它,BLOB 的格式就无关紧要。

导出临时密钥的公共部分时,BLOB 类型必须是适当的类型,例如 NCRYPT_DH_PUBLIC_BLOBNCRYPT_ECCPUBLIC_BLOB

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2008 [仅限桌面应用]
标头
Sslprovider.h
DLL
Ncrypt.dll