如前所述 ,
Windows Phone Mango给Windows Phone应用
带来了套接字支持。
开发者。不幸的是,该平台并没有提供***接字
。
(SSL套接字)开箱即用。现在许多应用程序都需要SSL
socket,例如,许多IRC服务器只允许***接字
连接。
幸运的是,在一个优秀的OSS库的帮助下,有可能让Windows Phone支持SSL Socket " Bouncy Castle " . Bouncy Castle并没有正式用于Windows Phone,但它是 有可能修改代码,以便为SSL Socket .提供所需的部分。 支持。
我已经修改了代码,并将其与我不久前在博客中提到的 SocketEx -library 打包。下面是一个如何使用SocketEx打开SSL套接字的例子:
private SecureTcpClient CreateConnection() { var connection = new SecureTcpClient(serverAddress, serverPort); return connection; }
SecureTcpClient继承自TcpClient,所以你应该可以在需要的地方替换TcpClient。
SecureTcpClient作为TcpClient和Bouncy Castle的包装物。 城堡。如果需要更多的控制,你可以通过TcpClient创建一个普通连接 然后将其 "提升 "为安全连接。
var connection = new TcpClient("server", 443); var handler = new TlsProtocolHandler(connection.GetStream()); handler.Connect(new LegacyTlsClient(new AlwaysValidVerifyer()));
这样就有可能,例如在服务器发送的证书上添加一些验证。 服务器发送的证书添加一些验证。另一个选择是,将TlsClient 到SecureSockectConnection。
var tlsClient = new LegacyTlsClient(new AlwaysValidVerifyer()); var connection = new SecureTcpClient(serverAddress, serverPort, tlsClient);
SecureTcpClient支持TLS 1.0("SSL 3.1")协议。支持以下的密码套路。
TLS_DHE_ARSA_ WITH_AES_256_CBC_SHA
TLS_DHE_ARSA_ WITH_AES_128_CBC_SHA
TLS_DHE_ARSA_ WITH_3des_EDE_CBC_SHA
TLS_DHE_DSS_ WITH_3des_EDE_CBC_SHA
TLS_SASA_ WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
客户端支持简单的TLS握手,其中服务器而不是客户端得到了认证。
SocketEx 的 s 代码可从GitHub获得。它有两个例子。一个用于TcpClient,一个用于SecureTcpClient。
SocketEx.SecureTcpClient也可以从NuGet获得包 SocketEx.SSL .