public SslStream(Stream innerStream, bool leaveInnerStreamOpen) : base(innerStream, leaveInnerStreamOpen) { var provider = GetProvider(); impl = provider.CreateSslStream(innerStream, leaveInnerStreamOpen); }
protected void Dispose(bool disposing) { if (impl != null && disposing) { impl.Dispose(); impl = null; } }
public SslStream(Stream innerStream, bool leaveInnerStreamOpen, RemoteCertificateValidationCallback userCertificateValidationCallback, LocalCertificateSelectionCallback userCertificateSelectionCallback) : base(innerStream, leaveInnerStreamOpen) { var provider = GetProvider(); var settings = new MonoTlsSettings(); settings.RemoteCertificateValidationCallback = MNS.Private.CallbackHelpers.PublicToMono(userCertificateValidationCallback); settings.ClientCertificateSelectionCallback = MNS.Private.CallbackHelpers.PublicToMono(userCertificateSelectionCallback); impl = provider.CreateSslStream(innerStream, leaveInnerStreamOpen, settings); }
protected override void Dispose(bool disposing) { try { if (impl != null && disposing) { impl.Dispose(); impl = null; } } finally { base.Dispose(disposing); } }
public async Task<MonoSslStream> CreateClientStreamAsync (Stream stream, string targetHost, ClientParameters parameters, MSI.MonoTlsSettings settings, CancellationToken cancellationToken) { var protocol = GetProtocol (parameters, false); MSI.ICertificateValidator validator = null; if (settings != null) CallbackHelpers.AddCertificateValidator (settings, parameters.ClientCertificateValidator); else validator = CallbackHelpers.GetCertificateValidator (parameters.ClientCertificateValidator); var clientCertificates = CallbackHelpers.GetClientCertificates (parameters); var sslStream = tlsProvider.CreateSslStream (stream, false, validator, settings); var monoSslStream = new MonoSslStream (sslStream); try { await sslStream.AuthenticateAsClientAsync (targetHost, clientCertificates, protocol, false).ConfigureAwait (false); } catch (Exception ex) { var lastError = monoSslStream.LastError; if (lastError != null) throw new AggregateException (ex, lastError); throw; } return monoSslStream; }
public async Task<MonoSslStream> CreateServerStreamAsync (Stream stream, ServerParameters parameters, MSI.MonoTlsSettings settings, CancellationToken cancellationToken) { var certificate = CertificateProvider.GetCertificate (parameters.ServerCertificate); var protocol = GetProtocol (parameters, true); MSI.ICertificateValidator validator = null; if (settings != null) CallbackHelpers.AddCertificateValidator (settings, parameters.ServerCertificateValidator); else validator = CallbackHelpers.GetCertificateValidator (parameters.ServerCertificateValidator); var askForCert = (parameters.Flags & (ServerFlags.AskForClientCertificate|ServerFlags.RequireClientCertificate)) != 0; var sslStream = tlsProvider.CreateSslStream (stream, false, validator, settings); var monoSslStream = new MonoSslStream (sslStream); try { await sslStream.AuthenticateAsServerAsync (certificate, askForCert, protocol, false).ConfigureAwait (false); } catch (Exception ex) { var lastError = monoSslStream.LastError; if (lastError != null) throw new AggregateException (ex, lastError); throw; } return monoSslStream; }
public MonoSslStreamWrapper(MonoSslStream impl) { this.impl = impl; }
protected sealed override async Task<ISslStream> Start (TestContext ctx, Socket socket, CancellationToken cancellationToken) { UserSettings userSettings = null; Instrumentation instrumentation = null; if (SupportsInstrumentation && InstrumentationProvider != null) { instrumentation = InstrumentationProvider.CreateInstrument (ctx); if (instrumentation != null && instrumentation.HasSettingsInstrument) userSettings = instrumentation.SettingsInstrument.UserSettings; } if (ConnectionProvider.IsNewTls) settings = GetSettings (userSettings); if (instrumentation != null) ((TlsSettings)settings).Instrumentation = instrumentation; monoSslStream = await Start (ctx, socket, settings, cancellationToken); return monoSslStream; }
internal SslStream(Stream innerStream, bool leaveInnerStreamOpen, MonoSslStream impl) : base(innerStream, leaveInnerStreamOpen) { this.impl = impl; }
protected sealed override async Task<ISslStream> Start (TestContext ctx, Stream stream, CancellationToken cancellationToken) { UserSettings userSettings = new UserSettings (); if (SupportsInstrumentation && InstrumentationProvider != null) { var instrumentation = InstrumentationProvider.CreateInstrument (ctx); if (instrumentation != null && instrumentation.HasSettingsInstrument) userSettings = instrumentation.SettingsInstrument.UserSettings; userSettings.Instrumentation = instrumentation; } GetSettings (userSettings); if (ConnectionProvider.IsNewTls) { settings = new MSI.MonoTlsSettings (); settings.UserSettings = userSettings; } monoSslStream = await Start (ctx, stream, settings, cancellationToken); return monoSslStream; }