私は、SSLサポートを追加するWinsock APIを使用して、単純なIRCクライアントを作成しようとしています。現在、私はちょうどこのように重複したソケットI/Oを使用します。WINAPIのネイティブSSLサポート
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ではありません。
WinSock自体はまだSSLをサポートしていません。しかし、Microsoftの[SChannel API](https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123.aspx)では、既存のWinSockコードをSChannelベースのI/Oに使用できますが、暗号化されたSSLデータ。 [Schannelを使用した安全な接続の作成](https://msdn.microsoft.com/en-us/library/windows/desktop/aa374782.aspx)を参照してください。それ以外の場合は、サードパーティのSSLライブラリを使用します。 OpenSSLは非常に一般的で、既存のWinSockコードの上で(BIO APIを介して)使用できます。または、コードを書き直して、すべてのソケットI/Oを処理できるようにすることができます –