SSLStream和委托的一般用法

时间:2014-09-25 17:49:13

标签: c# delegates sslstream

我以前从未使用过代表,但在过去2个小时我一直在努力之后理解基本概念。我创建了一个具有相互身份验证的简单SSL客户端/服务器。现在我的实际问题是:

example中,委托用于验证服务器/客户端。

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获取参数。也许这是一个愚蠢的问题,你现在正在笑,但请耐心等待我。在过去的几个小时里,我一直坐在教程和解释的前面,我找不到任何帮助我的东西。

提前致谢

1 个答案:

答案 0 :(得分:1)

SslStream类将在某个时间点调用委托。当它调用委托时,它将被强制为委托所期望的参数提供值。然后使用这些参数调用委托表示的所有方法。