Example #1
0
 internal HttpListener(X509Certificate certificate, MonoTlsProvider tlsProvider, MonoTlsSettings tlsSettings)
     : this()
 {
     this.certificate = certificate;
     this.tlsProvider = tlsProvider;
     this.tlsSettings = tlsSettings;
 }
Example #2
0
 public UnityTlsStream(Stream innerStream, bool leaveInnerStreamOpen, SslStream owner,
                       MonoTlsSettings settings, MobileTlsProvider provider)
     : base(innerStream, leaveInnerStreamOpen, owner, settings, provider)
 {
 }
Example #3
0
 public override IMonoSslStream CreateSslStream(
     Stream innerStream, bool leaveInnerStreamOpen,
     MonoTlsSettings settings = null)
 {
     return(new AppleTlsStream(innerStream, leaveInnerStreamOpen, settings, this));
 }
Example #4
0
 public override Instrumentation CreateInstrument(TestContext ctx, MonoTlsSettings settings)
 {
     return(null);
 }
Example #5
0
 public LegacySslStream(Stream innerStream, bool leaveInnerStreamOpen, MonoTlsProvider provider, MonoTlsSettings settings)
     : base(innerStream, leaveInnerStreamOpen)
 {
     this.provider             = provider;
     this.settings             = settings;
     this.certificateValidator = ChainValidationHelper.GetDefaultValidator(provider, settings);
 }
Example #6
0
 public override IMonoSslStream CreateSslStream(
     Stream innerStream, bool leaveInnerStreamOpen,
     MonoTlsSettings settings = null)
 {
     return(SslStream.CreateMonoSslStream(innerStream, leaveInnerStreamOpen, this, settings));
 }
Example #7
0
        /*
         * This is a hack which is used in SslStream - see ReferenceSources/SslStream.cs for details.
         */
        internal static ChainValidationHelper CloneWithCallbackWrapper(MonoTlsProvider provider, ref MonoTlsSettings settings, ServerCertValidationCallbackWrapper wrapper)
        {
            var helper = (ChainValidationHelper)settings.CertificateValidator;

            if (helper == null)
            {
                helper = new ChainValidationHelper(provider, settings, true, null, wrapper);
            }
            else
            {
                helper = new ChainValidationHelper(helper, provider, settings, wrapper);
            }
            settings = helper.settings;
            return(helper);
        }
Example #8
0
 internal SslStream(Stream innerStream, bool leaveInnerStreamOpen, MonoTlsProvider provider, MonoTlsSettings settings)
     : base(innerStream, leaveInnerStreamOpen)
 {
     this.provider = provider;
     impl          = provider.CreateSslStreamInternal(this, innerStream, leaveInnerStreamOpen, settings);
 }
Example #9
0
        internal static IMonoSslStream CreateMonoSslStream(Stream innerStream, bool leaveInnerStreamOpen, MonoTlsProvider provider, MonoTlsSettings settings)
        {
            var sslStream = new SslStream(innerStream, leaveInnerStreamOpen, provider, settings);

            return(sslStream.Impl);
        }
Example #10
0
 internal override MNS.MobileAuthenticatedStream CreateSslStream(
     SslStream sslStream, Stream innerStream, bool leaveInnerStreamOpen,
     MonoTlsSettings settings)
 {
     return(new AppleTlsStream(innerStream, leaveInnerStreamOpen, sslStream, settings, this));
 }
Example #11
0
 internal SslStream(Stream innerStream, bool leaveInnerStreamOpen, MonoTlsProvider provider, MonoTlsSettings settings)
     : base(innerStream, leaveInnerStreamOpen)
 {
     this.provider    = provider;
     this.settings    = settings.Clone();
     explicitSettings = true;
     impl             = provider.CreateSslStreamInternal(this, innerStream, leaveInnerStreamOpen, settings);
 }
 public override MobileAuthenticatedStream CreateSslStream(SslStream sslStream, Stream innerStream,
                                                           bool leaveInnerStreamOpen,
                                                           MonoTlsSettings settings)
 {
     return(new UnityTlsStream(innerStream, leaveInnerStreamOpen, sslStream, settings, this));
 }
Example #13
0
 public UserSettings(MonoTlsSettings settings)
 {
     this.settings         = settings;
     settings.UserSettings = this;
 }
        public MobileAuthenticatedStream(Stream innerStream, bool leaveInnerStreamOpen, MonoTlsSettings settings, AppleTlsProvider provider)
            : base(innerStream, leaveInnerStreamOpen)
        {
            Settings = settings;
            Provider = provider;

            readBuffer  = new BufferOffsetSize(new byte [16384], 0, 0);
            writeBuffer = new BufferOffsetSize(new byte [16384], 0, 0);
        }
Example #15
0
 protected override IMonoSslStream CreateSslStreamImpl(
     Stream innerStream, bool leaveInnerStreamOpen,
     MonoTlsSettings settings)
 {
     return(new LegacySslStream(innerStream, leaveInnerStreamOpen, this, settings));
 }
Example #16
0
 public LegacySslStream(Stream innerStream, bool leaveInnerStreamOpen, SslStream owner, MonoTlsProvider provider, MonoTlsSettings settings)
     : base(innerStream, leaveInnerStreamOpen)
 {
     SslStream            = owner;
     Provider             = provider;
     certificateValidator = ChainValidationHelper.GetInternalValidator(provider, settings);
 }
Example #17
0
 public LegacySslStream(Stream innerStream, bool leaveInnerStreamOpen, MonoTlsSettings settings)
     : base(innerStream, leaveInnerStreamOpen)
 {
     this.settings             = settings;
     this.certificateValidator = settings.CertificateValidator;
 }
Example #18
0
        internal static void SetupCertificateStore(MonoBtlsX509Store store, MonoTlsSettings settings, bool server)
        {
            /*
             * In server-mode, we only add certificates which are explicitly trusted via
             * MonoTlsSettings.TrustAnchors.
             *
             * MonoTlsSettings.CertificateSearchPaths is ignored on Android.
             *
             */

#if MONODROID
            AddTrustedRoots(store, settings, server);
            if (!server)
            {
                SetupDefaultCertificateStore(store);
            }
            return;
#else
            if (server || settings?.CertificateSearchPaths == null)
            {
                AddTrustedRoots(store, settings, server);
                if (!server)
                {
                    SetupDefaultCertificateStore(store);
                }
                return;
            }

            foreach (var path in settings.CertificateSearchPaths)
            {
                switch (path)
                {
                case "@default":
                    AddTrustedRoots(store, settings, server);
                    AddUserStore(store);
                    AddMachineStore(store);
                    break;

                case "@trusted":
                    AddTrustedRoots(store, settings, server);
                    break;

                case "@user":
                    AddUserStore(store);
                    break;

                case "@machine":
                    AddMachineStore(store);
                    break;

                default:
                    if (path.StartsWith("@pem:"))
                    {
                        var realPath = path.Substring(5);
                        if (Directory.Exists(realPath))
                        {
                            store.AddDirectoryLookup(realPath, MonoBtlsX509FileType.PEM);
                        }
                        break;
                    }
                    else if (path.StartsWith("@der:"))
                    {
                        var realPath = path.Substring(5);
                        if (Directory.Exists(realPath))
                        {
                            store.AddDirectoryLookup(realPath, MonoBtlsX509FileType.ASN1);
                        }
                        break;
                    }
                    throw new NotSupportedException(string.Format("Invalid item `{0}' in MonoTlsSettings.CertificateSearchPaths.", path));
                }
            }
#endif
        }
Example #19
0
 internal override IMonoSslStream CreateSslStreamInternal(
     SslStream sslStream, Stream innerStream, bool leaveInnerStreamOpen,
     MonoTlsSettings settings)
 {
     return(new AppleTlsStream(innerStream, leaveInnerStreamOpen, sslStream, settings, this));
 }
 public override IMonoSslStream CreateSslStream(
     Stream innerStream, bool leaveInnerStreamOpen,
     MonoTlsSettings settings = null)
 {
     return(new MobileAuthenticatedStream(innerStream, leaveInnerStreamOpen, settings, this));
 }
Example #21
0
 internal static ICertificateValidator GetDefaultValidator(MonoTlsProvider provider, MonoTlsSettings settings)
 {
     if (settings == null)
     {
         return(new ChainValidationHelper(provider, null, false, null, null));
     }
     if (settings.CertificateValidator != null)
     {
         return(settings.CertificateValidator);
     }
     return(new ChainValidationHelper(provider, settings, false, null, null));
 }
Example #22
0
        internal static void SetupCertificateStore(MonoBtlsX509Store store, MonoTlsSettings settings, bool server)
        {
            if (settings?.CertificateSearchPaths == null)
            {
                AddTrustedRoots(store, settings, server);
            }

#if MONODROID
            SetupCertificateStore(store);
            return;
#else
            if (settings?.CertificateSearchPaths == null)
            {
                SetupCertificateStore(store);
                return;
            }

            foreach (var path in settings.CertificateSearchPaths)
            {
                if (string.Equals(path, "@default", StringComparison.Ordinal))
                {
                    AddTrustedRoots(store, settings, server);
                    AddUserStore(store);
                    AddMachineStore(store);
                }
                else if (string.Equals(path, "@user", StringComparison.Ordinal))
                {
                    AddUserStore(store);
                }
                else if (string.Equals(path, "@machine", StringComparison.Ordinal))
                {
                    AddMachineStore(store);
                }
                else if (string.Equals(path, "@trusted", StringComparison.Ordinal))
                {
                    AddTrustedRoots(store, settings, server);
                }
                else if (path.StartsWith("@pem:", StringComparison.Ordinal))
                {
                    var realPath = path.Substring(5);
                    if (Directory.Exists(realPath))
                    {
                        store.AddDirectoryLookup(realPath, MonoBtlsX509FileType.PEM);
                    }
                }
                else if (path.StartsWith("@der:", StringComparison.Ordinal))
                {
                    var realPath = path.Substring(5);
                    if (Directory.Exists(realPath))
                    {
                        store.AddDirectoryLookup(realPath, MonoBtlsX509FileType.ASN1);
                    }
                }
                else
                {
                    if (Directory.Exists(path))
                    {
                        store.AddDirectoryLookup(path, MonoBtlsX509FileType.PEM);
                    }
                }
            }
#endif
        }