A simple pass-through implementation of stream that allows dynamically switching the underlying stream
Наследование: Stream
Пример #1
0
        /// <summary>
        /// Enable transport encryption
        /// </summary>
        protected void EnableClientTransportEncryption(string server)
        {
            // Check if transport encryption is applied
            if (Transport.InnerStream is SslStream)
            {
                return;
            }

            Log("Enabling client transport encryption...");

            // Wrap TDS stream with auto TDS stream
            AutoTDSStream tds = new AutoTDSStream(Transport, false);

            // We want to wrap each TLS message with PreLogin
            tds.OutgoingMessageType = TDSMessageType.PreLogin;

            // Create multiplexer stream to be able to remove TDS from under SSL
            PlaceholderStream multiplexer = new PlaceholderStream(tds, false);

            // Wrap multiplexer stream with SSL stream
            SslStream ssl = new SslStream(multiplexer, true, new RemoteCertificateValidationCallback(_ValidateServerCertificate));

            // Secure the channel
            ssl.AuthenticateAsClient(server);

            // Replace TDS stream with raw transport stream in multiplexer
            multiplexer.InnerStream = Transport.InnerStream;

            // Upgrade transport stream to SSL
            Transport.InnerStream = ssl;

            Log("Client transport encryption enabled");
        }
Пример #2
0
        /// <summary>
        /// Enable transport encryption
        /// </summary>
        protected void EnableClientTransportEncryption(string server)
        {
            // Check if transport encryption is applied
            if (Transport.InnerStream is SslStream)
            {
                return;
            }

            Log("Enabling client transport encryption...");

            // Wrap TDS stream with auto TDS stream
            AutoTDSStream tds = new AutoTDSStream(Transport, false);

            // We want to wrap each TLS message with PreLogin
            tds.OutgoingMessageType = TDSMessageType.PreLogin;

            // Create multiplexer stream to be able to remove TDS from under SSL
            PlaceholderStream multiplexer = new PlaceholderStream(tds, false);

            // Wrap multiplexer stream with SSL stream
            SslStream ssl = new SslStream(multiplexer, true, new RemoteCertificateValidationCallback(_ValidateServerCertificate));

            // Secure the channel
            ssl.AuthenticateAsClient(server);

            // Replace TDS stream with raw transport stream in multiplexer
            multiplexer.InnerStream = Transport.InnerStream;

            // Upgrade transport stream to SSL
            Transport.InnerStream = ssl;

            Log("Client transport encryption enabled");
        }