此 SSPI SChannel SMTPS 示例应按原样在 Visual Studio 2008 中编译和运行
http://www.coastrd.com/c-schannel-smtp (原来的网站似乎已经死了;幸运的是 WaybackMachine 已将其存档)
SChannel 是封装 SSL/TLS 协议的 GSS API 的 Microsoft 实现。
利用 SChannel 的优势:
- SSPI 对开发人员屏蔽了血淋淋的细节。
- 运行最终应用程序不需要额外的设置:
- SChannel 是操作系统不可分割的一部分
- 在 Windows ME/2000/XP/... 平台上,默认安装和配置 SChannel
- SChannel 调用遵循 GSS API 标准。
- 您不需要创建/安装任何证书
- 无需提供和安装第三方 dll(1MB 或更大)
该代码应生成一个如下所示的会话:
----- SSPI Initialized
----- WinSock Initialized
----- Credentials Initialized
----- 连接到服务器
70 字节握手数据发送
974 字节握手数据接收
182 字节握手数据发送
43 字节收到握手数据
握手成功
----- 客户端握手已执行
----- 服务器凭据已验证
服务器主题:C=US, S=California, L=Mountain View, O=Google Inc, CN=smtp.gmail.com
服务器发行人:C=ZA, S=Western Cape, L=Cape Town, O=Thawte Consulting cc , OU=Certification Services Division, CN=Thawte Premium Server CA, E=premium-server@thawte.com
----- 显示证书链
----- 服务器证书已验证
----- 服务器证书上下文已发布
协议:TLS1
密码:RC4
密码强度:128
散列:MD5
散列强度:128
密钥交换:RSA
密钥交换强度:1024
----- 安全连接信息
64 字节(加密)应用程序数据接收
解密数据:43 字节
220 mx .google.com ESMTP 6sm17740567yxg.66
发送 7 个字节的明文:
EHLO
发送 28 字节加密数据 接收
169 字节(加密)应用程序数据
解密数据:148 字节
250-mx.google.com 为您服务,[22.33.111.222]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN
250-增强状态代码
250 流水线
发送 7 个字节的明文:
QUIT
发送 28 字节加密数据 接收
69 字节(加密)应用程序数据
解密数据:48 字节
221 2.0.0 关闭连接 6sm17740567yxg.66
----- SMTP 会话完成
发送关闭通知已发送
23 个字节的握手数据
----- 与服务器断开连接
----- 开始清理
----- 全部完成 -----