From 3c2a11dc91551324fcb4787eb11727d68c7a778b Mon Sep 17 00:00:00 2001 From: Martin Baulig Date: Tue, 27 Sep 2016 17:51:06 +0200 Subject: [PATCH] [System]: Cleanup the internal MobileTlsContext. * Add SelectClientCertificate(). * ValidateCertificate() now returns bool. * Add ValidateCertificate() overload. (cherry picked from commit 0d07c695b504068d2b99a3fa9e84e6de4d2b3eed) --- .../Mono.Net.Security/MobileTlsContext.cs | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/mcs/class/System/Mono.Net.Security/MobileTlsContext.cs b/mcs/class/System/Mono.Net.Security/MobileTlsContext.cs index 752f0c49efb..f051a5fcbc2 100644 --- a/mcs/class/System/Mono.Net.Security/MobileTlsContext.cs +++ b/mcs/class/System/Mono.Net.Security/MobileTlsContext.cs @@ -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 () { -- 2.25.1