Merge pull request #5428 from kumpera/wasm-support-p2
[mono.git] / mcs / class / System / Mono.Net.Security / LegacyTlsProvider.cs
index 72996ded8e8ab1b9c4b023a9b64e5411fc33fbf3..d5d66c2f5eedd5e28a0b57a6007102630e024cad 100644 (file)
@@ -48,10 +48,8 @@ namespace Mono.Net.Security
         */
        class LegacyTlsProvider : MSI.MonoTlsProvider
        {
-               static readonly Guid id = new Guid ("809e77d5-56cc-4da8-b9f0-45e65ba9cceb");
-
                public override Guid ID {
-                       get { return id; }
+                       get { return MonoTlsProviderFactory.LegacyId; }
                }
 
                public override string Name {
@@ -70,7 +68,7 @@ namespace Mono.Net.Security
                        get { return false; }
                }
 
-               internal override bool SupportsTlsContext {
+               internal override bool SupportsCleanShutdown {
                        get { return false; }
                }
 
@@ -82,17 +80,27 @@ namespace Mono.Net.Security
                        Stream innerStream, bool leaveInnerStreamOpen,
                        MSI.MonoTlsSettings settings = null)
                {
-                       var impl = new Private.LegacySslStream (innerStream, leaveInnerStreamOpen, this, settings);
-                       return new Private.MonoSslStreamImpl (impl);
+                       return SslStream.CreateMonoSslStream (innerStream, leaveInnerStreamOpen, this, settings);
                }
 
-               internal override MSI.IMonoTlsContext CreateTlsContext (
-                       string hostname, bool serverMode, MSI.TlsProtocols protocolFlags,
-                       X509Certificate serverCertificate, X509CertificateCollection clientCertificates,
-                       bool remoteCertRequired, MSI.MonoEncryptionPolicy encryptionPolicy,
+               internal override MSI.IMonoSslStream CreateSslStreamInternal (
+                       SslStream sslStream, Stream innerStream, bool leaveInnerStreamOpen,
                        MSI.MonoTlsSettings settings)
                {
-                       throw new NotSupportedException ();
+                       return new Private.LegacySslStream (innerStream, leaveInnerStreamOpen, sslStream, this, settings);
+               }
+
+               internal override bool ValidateCertificate (
+                       MSI.ICertificateValidator2 validator, string targetHost, bool serverMode,
+                       X509CertificateCollection certificates, bool wantsChain, ref X509Chain chain,
+                       ref MSI.MonoSslPolicyErrors errors, ref int status11)
+               {
+                       if (wantsChain)
+                               chain = SystemCertificateValidator.CreateX509Chain (certificates);
+                       var xerrors = (SslPolicyErrors)errors;
+                       var result = SystemCertificateValidator.Evaluate (validator.Settings, targetHost, certificates, chain, ref xerrors, ref status11);
+                       errors = (MSI.MonoSslPolicyErrors)xerrors;
+                       return result;
                }
        }
 }