예제 #1
0
        public HttpsClientStream(Stream stream, X509CertificateCollectionMono clientCertificates,
                                 HttpWebRequest request, byte [] buffer)
            : base(stream, request.Address.Host, false, (Mono.Security.Protocol.Tls.SecurityProtocolType)
                   ServicePointManager.SecurityProtocol, clientCertificates)
        {
            // this constructor permit access to the WebRequest to call
            // ICertificatePolicy.CheckValidationResult
            _request = request;
            _status  = 0;
            if (buffer != null)
            {
                InputBuffer.Write(buffer, 0, buffer.Length);
            }
            // also saved from reflection
            base.CheckCertRevocationStatus = ServicePointManager.CheckCertificateRevocationList;

            ClientCertSelection += delegate(X509CertificateCollectionMono clientCerts, X509CertificateMono serverCertificate,
                                            string targetHost, X509CertificateCollectionMono serverRequestedCertificates) {
                return(((clientCerts == null) || (clientCerts.Count == 0)) ? null : clientCerts [0]);
            };
            PrivateKeySelection += delegate(X509CertificateMono certificate, string targetHost) {
                X509Certificate2Mono cert = (certificate as X509Certificate2Mono);
                return((cert == null) ? null : cert.PrivateKey);
            };
        }
 internal X509CertificateMono RaiseLocalCertificateSelection(X509CertificateCollectionMono certificates,
                                                             X509CertificateMono remoteCertificate,
                                                             string targetHost,
                                                             X509CertificateCollectionMono requestedCertificates)
 {
     return(OnLocalCertificateSelection(certificates, remoteCertificate, targetHost, requestedCertificates));
 }
예제 #3
0
 internal X509CertificateMono RaiseClientCertificateSelection(
     X509CertificateCollectionMono clientCertificates,
     X509CertificateMono serverCertificate,
     string targetHost,
     X509CertificateCollectionMono serverRequestedCertificates)
 {
     return(base.RaiseLocalCertificateSelection(clientCertificates, serverCertificate, targetHost, serverRequestedCertificates));
 }
예제 #4
0
 public SslClientStream(
     Stream stream,
     string targetHost,
     X509CertificateCollectionMono clientCertificates) :
     this(
         stream, targetHost, false, SecurityProtocolType.Default,
         clientCertificates)
 {
 }
예제 #5
0
 public ClientContext(
     SslClientStream stream,
     SecurityProtocolType securityProtocolType,
     string targetHost,
     X509CertificateCollectionMono clientCertificates)
     : base(securityProtocolType)
 {
     this.sslStream = stream;
     this.ClientSettings.Certificates = clientCertificates;
     this.ClientSettings.TargetHost   = targetHost;
 }
예제 #6
0
        internal override X509CertificateMono OnLocalCertificateSelection(X509CertificateCollectionMono clientCertificates, X509CertificateMono serverCertificate, string targetHost, X509CertificateCollectionMono serverRequestedCertificates)
        {
            if (this.ClientCertSelection != null)
            {
                return(this.ClientCertSelection(
                           clientCertificates,
                           serverCertificate,
                           targetHost,
                           serverRequestedCertificates));
            }

            return(null);
        }
예제 #7
0
        public SslClientStream(
            Stream stream,
            string targetHost,
            bool ownsStream,
            SecurityProtocolType securityProtocolType,
            X509CertificateCollectionMono clientCertificates) :
            base(stream, ownsStream)
        {
            if (targetHost == null || targetHost.Length == 0)
            {
                throw new ArgumentNullException("targetHost is null or an empty string.");
            }

            this.context = new ClientContext(
                this,
                securityProtocolType,
                targetHost,
                clientCertificates);

            this.protocol = new ClientRecordProtocol(innerStream, (ClientContext)this.context);
        }
 internal abstract X509CertificateMono OnLocalCertificateSelection(X509CertificateCollectionMono clientCertificates,
                                                                   X509CertificateMono serverCertificate,
                                                                   string targetHost,
                                                                   X509CertificateCollectionMono serverRequestedCertificates);
예제 #9
0
        /*
         * public SecurityCompressionType CompressionMethod
         * {
         *      get { return this.compressionMethod; }
         *      set
         *      {
         *              if (value != SecurityCompressionType.None)
         *              {
         *                      throw new NotSupportedException("Specified compression method is not supported");
         *              }
         *              this.compressionMethod = value;
         *      }
         * }
         */

        #endregion

        #region Constructors

        public TlsClientSettings()
        {
            // this.compressionMethod	= SecurityCompressionType.None;
            this.certificates = new X509CertificateCollectionMono();
            this.targetHost   = String.Empty;
        }
 internal override X509CertificateMono OnLocalCertificateSelection(X509CertificateCollectionMono clientCertificates, X509CertificateMono serverCertificate, string targetHost, X509CertificateCollectionMono serverRequestedCertificates)
 {
     throw new NotSupportedException();
 }