Beispiel #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 async Task <MonoSslStream> CreateClientStreamAsync(Stream stream, string targetHost, ConnectionParameters parameters, MSI.MonoTlsSettings settings, CancellationToken cancellationToken)
        {
            var protocol = GetProtocol(parameters, false);

            CallbackHelpers.AddCertificateValidator(settings, parameters.ClientCertificateValidator);
            CallbackHelpers.AddCertificateSelector(settings, parameters.ClientCertificateSelector);
            var clientCertificates = CallbackHelpers.GetClientCertificates(parameters);

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

            await sslStream.AuthenticateAsClientAsync(targetHost, clientCertificates, protocol, false).ConfigureAwait(false);

            return(monoSslStream);
        }
        public async Task <MonoSslStream> CreateServerStreamAsync(Stream stream, ConnectionParameters parameters, MSI.MonoTlsSettings settings, CancellationToken cancellationToken)
        {
            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);
            var monoSslStream = new MonoSslStream(sslStream);

            await sslStream.AuthenticateAsServerAsync(certificate, askForCert, protocol, false).ConfigureAwait(false);

            return(monoSslStream);
        }
        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);
        }
Beispiel #6
0
 public X509CertificateCollection GetClientCertificates(ConnectionParameters parameters)
 {
     return(CallbackHelpers.GetClientCertificates(parameters));
 }