1 #if SECURITY_DEP && MONO_FEATURE_APPLETLS
6 // Martin Baulig <martin.baulig@xamarin.com>
8 // Copyright (c) 2015 Xamarin, Inc.
11 #if MONO_SECURITY_ALIAS
12 extern alias MonoSecurity;
17 using System.Threading;
18 using System.Threading.Tasks;
19 using System.Net.Security;
20 using System.Security.Authentication;
21 using System.Security.Cryptography.X509Certificates;
23 using MNS = Mono.Net.Security;
24 #if MONO_SECURITY_ALIAS
25 using MonoSecurity::Mono.Security.Interface;
27 using Mono.Security.Interface;
30 namespace Mono.AppleTls
32 class AppleTlsProvider : MonoTlsProvider
34 public override string Name {
35 get { return "apple-tls"; }
38 public override Guid ID {
39 get { return MNS.MonoTlsProviderFactory.AppleTlsId; }
42 public override IMonoSslStream CreateSslStream (
43 Stream innerStream, bool leaveInnerStreamOpen,
44 MonoTlsSettings settings = null)
46 return SslStream.CreateMonoSslStream (innerStream, leaveInnerStreamOpen, this, settings);
49 internal override IMonoSslStream CreateSslStreamInternal (
50 SslStream sslStream, Stream innerStream, bool leaveInnerStreamOpen,
51 MonoTlsSettings settings)
53 return new AppleTlsStream (innerStream, leaveInnerStreamOpen, sslStream, settings, this);
56 public override bool SupportsSslStream {
60 public override bool SupportsMonoExtensions {
64 public override bool SupportsConnectionInfo {
68 internal override bool SupportsCleanShutdown {
72 public override SslProtocols SupportedProtocols {
73 get { return SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls; }
76 internal override bool ValidateCertificate (
77 ICertificateValidator2 validator, string targetHost, bool serverMode,
78 X509CertificateCollection certificates, bool wantsChain, ref X509Chain chain,
79 ref MonoSslPolicyErrors errors, ref int status11)
82 chain = MNS.SystemCertificateValidator.CreateX509Chain (certificates);
83 return AppleCertificateHelper.InvokeSystemCertificateValidator (validator, targetHost, serverMode, certificates, ref errors, ref status11);