SslExportKeyingMaterial 函数

根据 RFC 5705 标准导出密钥材料。 此函数使用 TLS 伪随机函数生成密钥材料的字节缓冲区。 它采用对主机密、消除 ASCII 标签、客户端和服务器随机值以及应用程序上下文数据的引用(可选)。

语法

SECURITY_STATUS WINAPI SslExportKeyingMaterial(
  _In_     NCRYPT_PROV_HANDLE hSslProvider,
  _In_     NCRYPT_KEY_HANDLE  hMasterKey,
  _In_     PCHAR              sLabel,
  _In_     PBYTE              pbRandoms,
  _In_     DWORD              cbRandoms,
  _In_opt_ PBYTE              pbContextValue,
  _In_     WORD               cbContextValue,
  _Out_    PBYTE              pbOutput,
  _In_     DWORD              cbOutput,
  _In_     DWORD              dwFlags
);

参数

hSslProvider [in]

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

hMasterKey [in]

将用于创建要导出的密钥材料的主密钥对象的句柄。

sLabel [in]

以 NUL 结尾的 ASCII 标签字符串。 Schannel 将删除终止 NUL 字符,然后再将其传递给伪随机函数。

pbRandoms [in]

指向缓冲区的指针,该缓冲区包含 TLS 连接的 client_randomserver_random 值的串联。

cbRandoms [in]

pbRandoms 缓冲区的长度(以字节为单位)。

pbContextValue [in, optional]

指向包含应用程序上下文的缓冲区的指针。 如果 pbContextValueNULL则 cbContextValue 必须为零。

cbContextValue [in]

pbContextValue 缓冲区的长度(以字节为单位)。

pbOutput [out]

接收导出的密钥材料的缓冲区的地址。 cbOutput 参数包含此缓冲区的大小。 此值不能为 NULL

cbOutput [in]

pbOutput 缓冲区的长度(以字节为单位)。 必须大于零。

dwFlags [in]

未使用。 必须设置为零。

返回值

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

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

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

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

要求

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