SSLStream和委托的一般使用
本文关键字:SSLStream | 更新日期: 2023-09-27 18:24:36
我以前从未使用过委托,但在过去两个小时的努力之后,我理解了基本概念。我创建了一个具有相互身份验证的简单SSL客户端/服务器。现在我的实际问题是:
在本例中,委托用于对服务器/客户端进行身份验证。
SslStream sslStream = new SslStream(
client.GetStream(),
false,
new RemoteCertificateValidationCallback (ValidateServerCertificate),
null
);
ValidateServerCertificate是在调用委托时运行的方法。
public static bool ValidateServerCertificate(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
Console.WriteLine("Certificate error: {0}", sslPolicyErrors);
// Do not allow this client to communicate with unauthenticated servers.
return false;
}
最让我困惑的是ValidateServerCertificate到底是如何获取参数的。也许这是一个愚蠢的问题,你现在正在笑,但请耐心等待。在过去的几个小时里,我一直坐在教程和解释面前,但我没有发现任何帮助。
提前感谢
SslStream
类将在某个时间点调用委托。当它调用委托时,它将被迫为委托所期望的参数提供值。然后使用这些参数调用委托所代表的所有方法。