protected sealed override async Task <ISslStream> Start(TestContext ctx, Stream stream, CancellationToken cancellationToken) { if (ConnectionProvider.SupportsMonoExtensions) { settings = new MSI.MonoTlsSettings(); GetSettings(ctx, settings); } monoSslStream = await Start(ctx, stream, settings, cancellationToken); return(monoSslStream); }
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); }