[Mono.Security]: Cleanup Mono.Security.Interface.CertificateValidationHelper.
authorMartin Baulig <martin.baulig@xamarin.com>
Mon, 26 Sep 2016 10:39:29 +0000 (12:39 +0200)
committerMartin Baulig <martin.baulig@xamarin.com>
Tue, 27 Sep 2016 09:39:07 +0000 (11:39 +0200)
* CertificateValidationHelper.GetDefaultValidator(): rename this internal method into
  GetInternalValidator() (keeping the old as [Obsolete] until products have been updated).

* CertificateValidationHelper.GetValidator(): remove the 'provider' argument.

This is part of a set of cleanups and simplifications for the upcoming BTLS integration.

mcs/class/Mono.Security/Mono.Security.Interface/CertificateValidationHelper.cs
mcs/class/System/Mono.Net.Security/ChainValidationHelper.cs
mcs/class/System/Mono.Net.Security/LegacySslStream.cs
mcs/class/System/Mono.Net.Security/MobileTlsContext.cs
mcs/class/System/Mono.Net.Security/NoReflectionHelper.cs

index fd392b409e5a4bef6de68f174911b79f638997be..594580b86d7d350e9d24daa2c2aaa9a32ec2af1a 100644 (file)
@@ -148,17 +148,23 @@ namespace Mono.Security.Interface
                /*
                 * Internal API, intended to be used by MonoTlsProvider implementations.
                 */
+               internal static ICertificateValidator2 GetInternalValidator (MonoTlsSettings settings, MonoTlsProvider provider)
+               {
+                       return (ICertificateValidator2)NoReflectionHelper.GetInternalValidator (provider, settings);
+               }
+
+               [Obsolete ("Use GetInternalValidator")]
                internal static ICertificateValidator2 GetDefaultValidator (MonoTlsSettings settings, MonoTlsProvider provider)
                {
-                       return (ICertificateValidator2)NoReflectionHelper.GetDefaultCertificateValidator (provider, settings);
+                       return GetInternalValidator (settings, provider);
                }
 
                /*
                 * Use this overloaded version in user code.
                 */
-               public static ICertificateValidator GetValidator (MonoTlsSettings settings, MonoTlsProvider provider = null)
+               public static ICertificateValidator GetValidator (MonoTlsSettings settings)
                {
-                       return GetDefaultValidator (settings, provider);
+                       return (ICertificateValidator)NoReflectionHelper.GetDefaultValidator (settings);
                }
        }
 }
index 5d2812d2738e4c51c72af55564a3e3c95356e0c4..3f14f95bea696faa323bd543c567215a6ba27832 100644 (file)
@@ -77,7 +77,7 @@ namespace Mono.Net.Security
                readonly MonoTlsStream tlsStream;
                readonly HttpWebRequest request;
 
-               internal static ICertificateValidator GetDefaultValidator (MonoTlsProvider provider, MonoTlsSettings settings)
+               internal static ICertificateValidator GetInternalValidator (MonoTlsProvider provider, MonoTlsSettings settings)
                {
                        if (settings == null)
                                return new ChainValidationHelper (provider, null, false, null, null);
@@ -86,6 +86,16 @@ namespace Mono.Net.Security
                        return new ChainValidationHelper (provider, settings, false, null, null);
                }
 
+               internal static ICertificateValidator GetDefaultValidator (MonoTlsSettings settings)
+               {
+                       var provider = MonoTlsProviderFactory.GetProvider ();
+                       if (settings == null)
+                               return new ChainValidationHelper (provider, null, false, null, null);
+                       if (settings.CertificateValidator != null)
+                               throw new NotSupportedException ();
+                       return new ChainValidationHelper (provider, settings, false, null, null);
+               }
+
 #region SslStream support
 
                /*
@@ -138,6 +148,8 @@ namespace Mono.Net.Security
                                settings = MonoTlsSettings.CopyDefaultSettings ();
                        if (cloneSettings)
                                settings = settings.CloneWithValidator (this);
+                       if (provider == null)
+                               provider = MonoTlsProviderFactory.GetProvider ();
 
                        this.provider = provider;
                        this.settings = settings;
index 1a6672f6c5c36f634b575715a611d14148e86c0a..7ec9a86813977d98ddcf63b3d85b52cfdf69deb2 100644 (file)
@@ -91,7 +91,7 @@ namespace Mono.Net.Security.Private
                        : base (innerStream, leaveInnerStreamOpen)
                {
                        this.provider = provider;
-                       certificateValidator = ChainValidationHelper.GetDefaultValidator (provider, settings);
+                       certificateValidator = ChainValidationHelper.GetInternalValidator (provider, settings);
                }
                #endregion // Constructors
 
index 677a5107697810aca010c8c16aff84d06ba8229d..752f0c49efb26f9a8855fd7d29a25f1dab583fcc 100644 (file)
@@ -54,7 +54,7 @@ namespace Mono.Net.Security
                        this.clientCertificates = clientCertificates;
                        this.askForClientCert = askForClientCert;
 
-                       certificateValidator = CertificateValidationHelper.GetDefaultValidator (
+                       certificateValidator = CertificateValidationHelper.GetInternalValidator (
                                parent.Settings, parent.Provider);
                }
 
index 6de1cd2599345f6e857e342f6cb88f008ce8bdf8..38600ac8d88e0098ebb8afb295e6a9419b2df8c2 100644 (file)
@@ -47,10 +47,19 @@ namespace Mono.Net.Security
        //
        internal static class NoReflectionHelper
        {
-               internal static object GetDefaultCertificateValidator (object provider, object settings)
+               internal static object GetInternalValidator (object provider, object settings)
                {
                        #if SECURITY_DEP
-                       return ChainValidationHelper.GetDefaultValidator ((MSI.MonoTlsProvider)provider, (MSI.MonoTlsSettings)settings);
+                       return ChainValidationHelper.GetInternalValidator ((MSI.MonoTlsProvider)provider, (MSI.MonoTlsSettings)settings);
+                       #else
+                       throw new NotSupportedException ();
+                       #endif
+               }
+
+               internal static object GetDefaultValidator (object settings)
+               {
+                       #if SECURITY_DEP
+                       return ChainValidationHelper.GetDefaultValidator ((MSI.MonoTlsSettings)settings);
                        #else
                        throw new NotSupportedException ();
                        #endif