Example #1
0
        public SslStream CreateSslStream(TestContext ctx, Stream stream, ConnectionParameters parameters, bool server)
        {
            var settings = new MSI.MonoTlsSettings();

            if (parameters is MonoConnectionParameters monoParams)
            {
                if (monoParams.ClientCiphers != null)
                {
                    settings.EnabledCiphers = monoParams.ClientCiphers.ToArray();
                }

                if (!server && monoParams.ClientCertificateIssuers != null)
                {
                    if (clientCertIssuersProp == null)
                    {
                        ctx.AssertFail("MonoTlsSettings.ClientCertificateIssuers is not supported!");
                    }
                    clientCertIssuersProp.SetValue(settings, monoParams.ClientCertificateIssuers);
                }
            }

            if (server)
            {
                CallbackHelpers.AddCertificateValidator(settings, parameters.ServerCertificateValidator);
            }
            else
            {
                CallbackHelpers.AddCertificateValidator(settings, parameters.ClientCertificateValidator);
                CallbackHelpers.AddCertificateSelector(settings, parameters.ClientCertificateSelector);
            }

            return(tlsProvider.CreateSslStream(stream, false, settings).SslStream);
        }
        public MonoSslStream CreateServerStream(Stream stream, ConnectionParameters parameters)
        {
            var settings    = new MSI.MonoTlsSettings();
            var certificate = parameters.ServerCertificate;

            var protocol = GetProtocol(parameters, true);

            CallbackHelpers.AddCertificateValidator(settings, parameters.ServerCertificateValidator);

            var askForCert = parameters.AskForClientCertificate || parameters.RequireClientCertificate;

            var sslStream = tlsProvider.CreateSslStream(stream, false, settings);

            sslStream.AuthenticateAsServer(certificate, askForCert, protocol, false);

            return(new MonoSslStream(sslStream));
        }
        public SslStream CreateSslStream(TestContext ctx, Stream stream, ConnectionParameters parameters, bool server)
        {
            var settings = GetSettings(parameters, true);

            if (parameters is MonoConnectionParameters monoParams)
            {
                if (monoParams.ClientCiphers != null)
                {
                    settings.EnabledCiphers = monoParams.ClientCiphers.ToArray();
                }

                if (!server && monoParams.ClientCertificateIssuers != null)
                {
                    var setup = DependencyInjector.Get <IMonoConnectionFrameworkSetup> ();
                    if (!setup.SupportsClientCertificateIssuers)
                    {
                        ctx.AssertFail("MonoTlsSettings.ClientCertificateIssuers is not supported!");
                    }
                    setup.SetClientCertificateIssuers(settings, monoParams.ClientCertificateIssuers);
                }
            }

            if (server)
            {
                CallbackHelpers.AddCertificateValidator(settings, parameters.ServerCertificateValidator);
            }
            else
            {
                CallbackHelpers.AddCertificateValidator(settings, parameters.ClientCertificateValidator);
                CallbackHelpers.AddCertificateSelector(settings, parameters.ClientCertificateSelector);
            }

            var monoSslStream = tlsProvider.CreateSslStream(stream, false, settings);

            return(monoSslStream.SslStream);
        }
Example #4
0
		public SslStream (Stream innerStream, bool leaveInnerStreamOpen, RemoteCertificateValidationCallback userCertificateValidationCallback, LocalCertificateSelectionCallback userCertificateSelectionCallback)
			: base (innerStream, leaveInnerStreamOpen)
		{
			provider = GetProvider ();
			var settings = MonoTlsSettings.CopyDefaultSettings ();
			settings.RemoteCertificateValidationCallback = MNS.Private.CallbackHelpers.PublicToMono (userCertificateValidationCallback);
			settings.ClientCertificateSelectionCallback = MNS.Private.CallbackHelpers.PublicToMono (userCertificateSelectionCallback);
			impl = provider.CreateSslStream (innerStream, leaveInnerStreamOpen, settings);
		}
Example #5
0
		public SslStream (Stream innerStream, bool leaveInnerStreamOpen)
			: base (innerStream, leaveInnerStreamOpen)
		{
			provider = GetProvider ();
			impl = provider.CreateSslStream (innerStream, leaveInnerStreamOpen);
		}