SslEnumCipherSuites 函数

SslEnumCipherSuites 函数枚举安全套接字层协议 (SSL) 协议提供程序支持的密码套件。

语法

SECURITY_STATUS WINAPI SslEnumCipherSuites(
  _In_     NCRYPT_PROV_HANDLE      hSslProvider,
  _In_opt_ NCRYPT_KEY_HANDLE       hPrivateKey,
  _Out_    NCRYPT_SSL_CIPHER_SUITE **ppCipherSuite,
  _Inout_  PVOID                   *ppEnumState,
  _In_     DWORD                   dwFlags
);

参数

hSslProvider [in]

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

hPrivateKey [in, optional]

私钥的句柄。 指定私钥时, SslEnumCipherSuites 枚举与私钥兼容的密码套件。 例如,如果私钥是 DSS 密钥,则仅返回DSS_DHE密码套件。 如果私钥是 RSA 密钥,但它不支持原始解密操作,则不会返回 SSL2 密码套件。

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

注意

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

ppCipherSuite [out]

指向 NCRYPT_SSL_CIPHER_SUITE 结构的指针,用于接收列表中下一个密码套件的地址。

ppEnumState [in, out]

指向缓冲区的指针,指示密码套件列表中的当前位置。

首次调用 SslEnumCipherSuites 时,将指针设置为 NULL。 在每次后续调用中,将未修改的值传递回 SslEnumCipherSuites

如果没有可用的密码套件,应通过调用 SslFreeBuffer 函数释放 ppEnumState

dwFlags [in]

此参数留待将来使用。

返回值

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

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

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

返回代码/值 说明
NTE_NO_MEMORY
0x8009000EL
没有足够的内存可用于分配必要的缓冲区。
NTE_INVALID_HANDLE
0x80090026L
提供的句柄之一无效。
NTE_NO_MORE_ITEMS
0x8009002AL
不支持其他密码套件。

备注

若要枚举 SSL 提供程序支持的所有密码套件,请在循环中调用 SslEnumCipherSuites 函数,直到返回 NTE_NO_MORE_ITEMS

要求

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

Ncrypt.lib
DLL
Ncrypt.dll