我正在尝试使用Winsock API创建一个简单的IRC客户端,我想要添加SSL支持。目前我只是使用重叠的套接字I / O:
SOCKET sock = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0x02, 0x01);
if (!sock)
return;
struct sockaddr_in ircClient;
memcpy(&ircClient.sin_addr, he->h_addr_list[0], he->h_length);
ircClient.sin_family = AF_INET;
ircClient.sin_port = wPort;
WSAEVENT hDataEvent = WSA_INVALID_EVENT;
if (WSAConnect(sock, (sockaddr*)&ircClient, sizeof(ircClient), 0, 0, 0, 0) > 0) {
closesocket(sock);
return;
}
if (wsWSAGetLastError() != 0) {
closesocket(sock);
return;
}
现在,据我所知,对于SSL支持,我需要在WSAConnect()
之后进行SSL握手。我发现旧的互联网帖子说Winsock没有SSL支持。现在是2017年,95%的网站使用SSL。还没有办法做到这一点吗?我找到了Using Secure Socket Extensions,但它不是SSL。
答案 0 :(得分:0)
我在几年前使用原生Windows API在标准TCP连接上做了一些SSL / TLS,但我不熟悉这个特定的"安全套接字扩展"。
我可以推荐使用SSPI。它不会自动将您的套接字转换为SSL,但可以非常轻松地根据请求生成SSL请求/响应/数据包。
查找InitializeSecurityContext
了解更多信息。