SslGenerateMasterKey 函数

SslGenerateMasterKey 函数计算安全套接字层协议 (SSL) 主密钥。

语法

SECURITY_STATUS WINAPI SslGenerateMasterKey(
  _In_  NCRYPT_PROV_HANDLE hSslProvider,
  _In_  NCRYPT_KEY_HANDLE  hPrivateKey,
  _In_  NCRYPT_KEY_HANDLE  hPublicKey,
  _Out_ NCRYPT_KEY_HANDLE  *phMasterKey,
  _In_  DWORD              dwProtocol,
  _In_  DWORD              dwCipherSuite,
  _In_  PNCryptBufferDesc  pParameterList,
  _Out_ PBYTE              pbOutput,
  _In_  DWORD              cbOutput,
  _Out_ DWORD              *pcbResult,
  _In_  DWORD              dwFlags
);

参数

hSslProvider [in]

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

hPrivateKey [in]

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

hPublicKey [in]

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

phMasterKey [out]

指向生成的 主密钥的句柄的指针。

dwProtocol [in]

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

dwCipherSuite [in]

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

pParameterList [in]

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

pbOutput [out]

接收使用服务器的公钥加密的预主机密的缓冲区的地址。 cbOutput 参数包含此缓冲区的大小。 如果此参数为 NULL,则此函数在由印刷电路板Result 参数指向的 DWORD 中返回所需的大小(以字节为单位)。

注意

执行 RSA 密钥交换时使用此缓冲区。

cbOutput [in]

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

线路板 [ out]

指向 DWORD 值的指针,用于放置写入 pbOutput 缓冲区的字节数。

dwFlags [in]

指定此函数是用于客户端密钥交换还是服务器端密钥交换。

含义
NCRYPT_SSL_CLIENT_FLAG
0x00000001
指定客户端密钥交换。
NCRYPT_SSL_SERVER_FLAG
0x00000002
指定服务器端密钥交换。

返回值

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

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

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

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

要求

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