[System]: Add internal 'Mono.Net.Security.NoReflectionHelper' class to avoid reflecti...
authorMartin Baulig <martin.baulig@xamarin.com>
Fri, 23 Oct 2015 18:08:44 +0000 (14:08 -0400)
committerMartin Baulig <martin.baulig@xamarin.com>
Fri, 23 Oct 2015 18:20:46 +0000 (14:20 -0400)
mcs/class/Mono.Security/Mono.Security.Interface/CertificateValidationHelper.cs
mcs/class/System/Mono.Net.Security/MonoTlsProviderFactory.cs
mcs/class/System/Mono.Net.Security/NoReflectionHelper.cs [new file with mode: 0644]
mcs/class/System/System.dll.sources
mcs/class/System/mobile_System.dll.sources

index 25d00096cdea660426a931e4216aebc5c7c976fa..18ada523b25442368a31361778f30e5f1c626d6b 100644 (file)
@@ -32,7 +32,7 @@ using System.Threading;
 using System.Security.Cryptography.X509Certificates;
 using Mono.Security.Protocol.Tls;
 using MX = Mono.Security.X509;
-using MNS = Mono.Net.Security;
+using Mono.Net.Security;
 
 namespace Mono.Security.Interface
 {
@@ -119,7 +119,7 @@ namespace Mono.Security.Interface
 
                internal static ICertificateValidator GetDefaultValidator (MonoTlsSettings settings)
                {
-                       return (ICertificateValidator)MNS.MonoTlsProviderFactory.GetDefaultCertificateValidator (settings);
+                       return (ICertificateValidator)NoReflectionHelper.GetDefaultCertificateValidator (settings);
                }
 
                #if !INSIDE_SYSTEM
index 7246d54a96bbdafe76041609e7b277103b66c83d..c35ffe1af5148d0e09480f6f3305c6516d800cee 100644 (file)
@@ -124,19 +124,6 @@ namespace Mono.Net.Security
 
                #endregion
 
-               #region Internal Interface
-
-               internal static object GetDefaultCertificateValidator (object settings)
-               {
-                       #if SECURITY_DEP
-                       return ChainValidationHelper.GetDefaultValidator ((MSI.MonoTlsSettings)settings);
-                       #else
-                       throw new NotSupportedException ();
-                       #endif
-               }
-
-               #endregion
-
 #if SECURITY_DEP && !MONO_FEATURE_NEW_SYSTEM_SOURCE
 
                #region Mono.Security visible API
diff --git a/mcs/class/System/Mono.Net.Security/NoReflectionHelper.cs b/mcs/class/System/Mono.Net.Security/NoReflectionHelper.cs
new file mode 100644 (file)
index 0000000..b703ec7
--- /dev/null
@@ -0,0 +1,56 @@
+//
+// NoReflectionHelper.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if SECURITY_DEP
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MSI = MonoSecurity::Mono.Security.Interface;
+using MX = MonoSecurity::Mono.Security.X509;
+#else
+using MSI = Mono.Security.Interface;
+using MX = Mono.Security.X509;
+#endif
+#endif
+
+using System;
+
+namespace Mono.Net.Security
+{
+       //
+       // Internal APIs which are used by Mono.Security.dll to avoid using reflection.
+       //
+       internal static class NoReflectionHelper
+       {
+               internal static object GetDefaultCertificateValidator (object settings)
+               {
+                       #if SECURITY_DEP
+                       return ChainValidationHelper.GetDefaultValidator ((MSI.MonoTlsSettings)settings);
+                       #else
+                       throw new NotSupportedException ();
+                       #endif
+               }
+       }
+}
index 9e55a99d2ccde4aef0b08e7ea0f243efa7abd5c7..073a6c1be3a384897b919fc65e7cb997e3ddac1d 100644 (file)
@@ -625,6 +625,7 @@ Mono.Net.Security/MonoTlsProviderFactory.cs
 Mono.Net.Security/MonoTlsProviderImpl.cs
 Mono.Net.Security/MonoTlsProviderWrapper.cs
 Mono.Net.Security/MonoTlsStream.cs
+Mono.Net.Security/NoReflectionHelper.cs
 
 ReferenceSources/AssertWrapper.cs
 ReferenceSources/BinaryCompatibility.cs
index 1e45f421a8a4d9180f2a8ea149669bc0ee351c9b..b8e7bdb8b321e1c29ba38899603ccf37b671a6fc 100644 (file)
@@ -360,6 +360,7 @@ Mono.Net.Security/MonoTlsProviderFactory.cs
 Mono.Net.Security/MonoTlsProviderImpl.cs
 Mono.Net.Security/MonoTlsProviderWrapper.cs
 Mono.Net.Security/MonoTlsStream.cs
+Mono.Net.Security/NoReflectionHelper.cs
 
 ReferenceSources/AssertWrapper.cs
 ReferenceSources/Internal.cs