示例#1
0
        /// <summary>
        /// Creates a new data stream object
        /// </summary>
        /// <param name="conn">The control connection to be used for carrying out this operation</param>
        public FtpDataStream(FtpClient conn)
        {
            if (conn == null)
                throw new ArgumentException("The control connection cannot be null.");

            ControlConnection = conn;
            // always accept certficate no matter what because if code execution ever
            // gets here it means the certificate on the control connection object being
            // cloned was already accepted.
            ValidateCertificate += new FtpSocketStreamSslValidation(delegate(FtpSocketStream obj, FtpSslValidationEventArgs e) {
                e.Accept = true;
            });

            m_position = 0;
        }
示例#2
0
        /// <summary>
        /// Creates a new data stream object
        /// </summary>
        /// <param name="conn">The control connection to be used for carrying out this operation</param>
        public FtpDataStream(FtpClient conn) : base(conn.SslProtocols)
        {
            if (conn == null)
            {
                throw new ArgumentException("The control connection cannot be null.");
            }

            ControlConnection = conn;
            // always accept certificate no matter what because if code execution ever
            // gets here it means the certificate on the control connection object being
            // cloned was already accepted.
            ValidateCertificate += new FtpSocketStreamSslValidation(delegate(FtpSocketStream obj, FtpSslValidationEventArgs e) {
                e.Accept = true;
            });

            m_position = 0;
        }
示例#3
0
        protected bool OnValidateCertificate(X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            FtpSocketStreamSslValidation sslvalidate = this.m_sslvalidate;

            if (sslvalidate != null)
            {
                FtpSslValidationEventArgs e = new FtpSslValidationEventArgs {
                    Certificate  = certificate,
                    Chain        = chain,
                    PolicyErrors = errors,
                    Accept       = errors == SslPolicyErrors.None
                };
                sslvalidate(this, e);
                return(e.Accept);
            }
            return(errors == SslPolicyErrors.None);
        }
示例#4
0
        /// <summary>
        /// Fires the SSL certificate validation event
        /// </summary>
        /// <param name="certificate">Certificate being validated</param>
        /// <param name="chain">Certificate chain</param>
        /// <param name="errors">Policy errors if any</param>
        /// <returns>True if it was accepted, false otherwise</returns>
        protected bool OnValidateCertificate(X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            FtpSocketStreamSslValidation evt = m_sslvalidate;

            if (evt != null)
            {
                FtpSslValidationEventArgs e = new FtpSslValidationEventArgs()
                {
                    Certificate  = certificate,
                    Chain        = chain,
                    PolicyErrors = errors
                };

                evt(this, e);
                return(e.Accept);
            }

            // if the event was not handled then only accept
            // the certificate if there were no validation errors
            return(errors == SslPolicyErrors.None);
        }