[System]: Cleanup the internal MobileTlsContext.
authorMartin Baulig <martin.baulig@xamarin.com>
Tue, 27 Sep 2016 15:51:06 +0000 (17:51 +0200)
committerMartin Baulig <martin.baulig@xamarin.com>
Wed, 28 Sep 2016 11:52:07 +0000 (13:52 +0200)
* Add SelectClientCertificate().
* ValidateCertificate() now returns bool.
* Add ValidateCertificate() overload.

(cherry picked from commit 0d07c695b504068d2b99a3fa9e84e6de4d2b3eed)

mcs/class/System/Mono.Net.Security/MobileTlsContext.cs

index 752f0c49efb26f9a8855fd7d29a25f1dab583fcc..f051a5fcbc2c04ca406f2edebcf63019cc0af693 100644 (file)
@@ -159,30 +159,35 @@ namespace Mono.Net.Security
 
                public abstract void Close ();
 
-               protected ValidationResult ValidateCertificate (X509Certificate leaf, X509Chain chain)
+               protected bool ValidateCertificate (X509Certificate leaf, X509Chain chain)
                {
-                       return certificateValidator.ValidateCertificate (
-                               targetHost, serverMode, leaf, chain);
+                       var result = certificateValidator.ValidateCertificate (TargetHost, IsServer, leaf, chain);
+                       return result != null && result.Trusted && !result.UserDenied;
                }
 
-               protected X509Certificate SelectClientCertificate (string[] acceptableIssuers)
-                {
-                        X509Certificate certificate;
-                        var selected = certificateValidator.SelectClientCertificate (
-                               targetHost, clientCertificates, serverCertificate,
-                               null, out certificate);
-                        if (selected)
-                                return certificate;
+               protected bool ValidateCertificate (X509CertificateCollection certificates)
+               {
+                       var result = certificateValidator.ValidateCertificate (TargetHost, IsServer, certificates);
+                       return result != null && result.Trusted && !result.UserDenied;
+               }
 
-                        if (clientCertificates == null || clientCertificates.Count == 0)
-                                return null;
+               protected X509Certificate SelectClientCertificate (X509Certificate serverCertificate, string[] acceptableIssuers)
+               {
+                       X509Certificate certificate;
+                       var selected = certificateValidator.SelectClientCertificate (
+                               TargetHost, ClientCertificates, serverCertificate, acceptableIssuers, out certificate);
+                       if (selected)
+                               return certificate;
 
-                        if (clientCertificates.Count == 1)
-                                return clientCertificates [0];
+                       if (clientCertificates == null || clientCertificates.Count == 0)
+                               return null;
 
-                        // FIXME: select one.
-                        throw new NotImplementedException ();
-                }
+                       if (clientCertificates.Count == 1)
+                               return clientCertificates [0];
+
+                       // FIXME: select onne.
+                       throw new NotImplementedException ();
+               }
 
                public void Dispose ()
                {