CAsyncSslSocketLayer - CAsyncSocketEx 的 SSL 层类






4.88/5 (12投票s)
2003 年 4 月 6 日
3分钟阅读

93147

414
这个类是CAsyncSocketEx的SSL层,使用OpenSSL。
引言
CAsyncSslSocketLayer
是 CAsyncSocketEx
的一个层类,允许您建立与服务器的SSL安全连接。
有关 CAsyncSocketEx
和一般层系统的信息,请阅读我的 CAsyncSocketEx 文章。
如何使用
使用这个类非常简单。在最简单的情况下,只需将 CAsyncSslSocketLayer
的一个实例添加到您的套接字,并在创建套接字后调用 InitClientSsl
即可。
这个类只有三个新的公共函数
InitClientSsl();
此函数建立与服务器的SSL连接。一旦套接字创建完毕,您就可以随时调用它。您很可能希望在为套接字调用
Create
后立即调用此函数。但有时,您需要稍后调用此函数。一个例子是使用显式SSL的FTP连接:在这种情况下,您需要在收到对AUTH SSL
命令的回复后调用InitClientSsl
。UsingSSL();
如果您之前调用了
InitClientSsl()
,则返回 trueSetNotifyReply(int nID, int nCode, int result);
您只能在收到具有
SSL_VERIFY_CERT
ID的特定于层的回调后调用此函数。有关详细信息,请参见下文。
此层将一些特定于层的通知发送到您的套接字实例,您可以在您的套接字类的 OnLayerCallback
中处理它们。有效的通知 ID 为
SSL_INFO
0param2
有两个可能的值SSL_INFO_ESTABLISHED
0 - 如果 SSL 协商成功,您将收到此通知。SSL_INFO_SHUTDOWNCOMPLETE
1 - 如果 SSL 连接已成功关闭,您将收到此通知。有关详细信息,请参见下文。
SSL_FAILURE
1如果 SSL 连接无法建立或现有连接失败,则会发送此通知。
param2
的有效值为SSL_FAILURE_UNKNOWN
0 - 详细信息可能已通过SSL_VERBOSE_WARNING
或SSL_VERBOSE_INFO
通知发送。SSL_FAILURE_ESTABLISH
1 - SSL 协商期间出现问题SSL_FAILURE_LOADDLLS
2SSL_FAILURE_INITSSL
4SSL_FAILURE_VERIFYCERT
8 - 远程 SSL 证书无效
SSL_VERBOSE_WARNING
3SSL_VERBOSE_INFO
4这两个通知包含一些附加信息。
param2
给出的值是指向以 null 结尾的字符串 (char *
) 的指针,其中包含一些有用的信息。SSL_VERIFY_CERT
2每次必须验证远程证书时都会发送此通知。
param2
是指向t_SslCertData
结构的指针,该结构包含有关远程证书的一些信息。如果您信任该证书,则返回 1,如果您不信任它,则返回 0。如果您不确定,以便用户必须选择是否信任该证书,则返回 2。在这种情况下,您稍后必须调用SetNotifyReply
才能恢复 SSL 连接。nID
必须是t_SslCertData
结构的priv_data
元素,并且nCode
必须是SSL_VERIFY_CERT
。如果信任该证书,则将nAction
设置为 1,如果不信任它,则设置为 0。
在发送数据后关闭连接时要小心,并非所有数据可能都已发送。在关闭连接之前,您应该调用 Shutdown()
并等待 SSL_INFO_SHUTDOWNCOMPLETE
通知。这确保所有加密数据确实已发送。
许可证
只要您不声称您编写了它,并且此版权声明在源文件中保持不变,就可以随意使用此类。如果您在商业应用程序中使用此类,请向 tim.kosse@gmx.de 发送一条简短消息。
此产品包括 OpenSSL 项目 开发的用于 OpenSSL 工具包的软件。