SslImportMasterKey 函数

SslImportMasterKey 函数执行服务器端安全套接字层协议 (SSL) 密钥交换操作。

语法

SECURITY_STATUS WINAPI SslImportMasterKey(
  _In_  NCRYPT_PROV_HANDLE hSslProvider,
  _In_  NCRYPT_KEY_HANDLE  hPrivateKey,
  _Out_ NCRYPT_KEY_HANDLE  *phMasterKey,
  _In_  DWORD              dwProtocol,
  _In_  DWORD              dwCipherSuite,
  _In_  PNCryptBufferDesc  pParameterList,
  _In_  PBYTE              pbEncryptedKey,
  _In_  DWORD              cbEncryptedKey,
  _In_  DWORD              dwFlags
);

参数

hSslProvider [in]

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

hPrivateKey [in]

交换中使用的 私钥 的句柄。

phMasterKey [out]

指向用于接收 主密钥的句柄的指针。

dwProtocol [in]

CNG SSL 提供程序协议标识符值之一。

dwCipherSuite [in]

CNG SSL 提供程序密码套件标识符值之一

pParameterList [in]

指向 NCryptBuffer 缓冲区数组的指针,该缓冲区包含用作密钥交换操作一部分的信息。 精确的缓冲区集取决于使用的协议和密码套件。 列表至少包含包含客户端和服务器提供的随机值的缓冲区。

pbEncryptedKey [in]

指向缓冲区的指针,该缓冲区包含使用服务器的公钥加密的加密预主 密钥

cbEncryptedKey [in]

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

dwFlags [in]

将此参数设置为 NCRYPT_SSL_SERVER_FLAG 以指示这是服务器调用。

返回值

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

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

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

返回代码/值 说明
NTE_NO_MEMORY
0x8009000EL
没有足够的内存可用于分配必要的缓冲区。
NTE_INVALID_HANDLE
0x80090026L
提供的句柄之一无效。
NTE_INVALID_PARAMETER
0x80090027L
phMasterKey 参数为 NULL

备注

此函数解密预主密钥,计算 SSL 主机密,并将此对象的句柄返回给调用方。 然后,可以使用此主密钥来派生 SSL 会话密钥并完成 SSL 握手。

注意

使用 RSA 密钥交换算法时使用此函数。 使用 DH 时,服务器代码将改为调用 SslGenerateMasterKey

要求

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