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
);

parameters

hSslProvider [中]

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

hKey [中]

要导出的密钥的句柄。

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

备注

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

pszBlobType [中]

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

含义
BCRYPT _ DH _ 公共 _ BLOB
导出 Diffie-Hellman 公钥PbOutput 缓冲区会立即收到 BCRYPT _ DH _ 密钥 _ BLOB结构,后跟密钥数据。
BCRYPT _ ECCPUBLIC _ BLOB
椭圆曲线加密 (ECC) 公钥导出。 PbOutput 缓冲区会立即收到 BCRYPT _ ECCKEY _ BLOB结构,后跟密钥数据。
BCRYPT 不 _ 透明 _ 密钥 _ BLOB
将对称密钥导出为特定于单个 加密服务提供程序 (CSP) 的格式。 不透明 Blob 是不可传递的,必须使用与生成 BLOB (CSP) 相同的 加密服务提供程序 导入。
BCRYPT _ RSAPUBLIC _ BLOB
导出 RSA 公钥。 PbOutput 缓冲区会立即收到 BCRYPT _ RSAKEY _ BLOB结构,后跟密钥数据。

pbOutput [out,可选]

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

cbOutput [中]

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

pcbResult [弄]

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

dwFlags [中]

保留供将来使用。

返回值

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

如果函数失败,则返回一个非零错误值。

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

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

备注

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

导出会话密钥时,BLOB 类型是不透明的,这意味着只要 SslExportKeySslImportKey 函数可以解释 blob 的格式,就不会有任何意义。

导出临时密钥的公共部分时,BLOB 类型必须是合适的类型,例如 NCRYPT _ DH _ 公共 _ BLOBNCRYPT _ ECCPUBLIC _ BLOB

要求

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