2014-09-25 60 views
0

我以前從未使用委託,但在過去2個小時一直苦苦掙扎之後瞭解基本概念。我已經創建了一個具有雙向認證的簡單SSL客戶端/服務器。現在我的實際問題:SSLStream和代表的一般用途

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

SslStream類,將在某個時間點,調用該委託。當它調用委託時,它將被強制爲委託所期望的參數提供值。然後使用這些參數調用委託所代表的所有方法。

+0

謝謝,我一直在想類似的事情必須發生。客戶在握手期間提供了他的證書後可能會在某處。再次感謝您的澄清。 – voskart 2014-09-25 18:08:07