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); }
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); }
public SslStream (Stream innerStream, bool leaveInnerStreamOpen) : base (innerStream, leaveInnerStreamOpen) { provider = GetProvider (); impl = provider.CreateSslStream (innerStream, leaveInnerStreamOpen); }