Esempio n. 1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="socket">Socket opened with the client</param>
 /// <param name="serverCert">Server X509 certificate for secure connection</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 /// <param name="userCertificateSelectionCallback">A RemoteCertificateValidationCallback delegate responsible for validating the certificate supplied by the remote party</param>
 /// <param name="userCertificateValidationCallback">A LocalCertificateSelectionCallback delegate responsible for selecting the certificate used for authentication</param>
 public MqttSecureNetworkChannel(Socket socket, X509Certificate serverCert, MqttSslProtocol sslProtocol,
                                 RemoteCertificateValidationCallback userCertificateValidationCallback,
                                 LocalCertificateSelectionCallback userCertificateSelectionCallback)
     : base(socket)
 {
     this.serverCert  = serverCert;
     this.sslProtocol = sslProtocol;
     this.userCertificateValidationCallback = userCertificateValidationCallback;
     this.userCertificateSelectionCallback  = userCertificateSelectionCallback;
 }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="remoteHostName">Remote Host name</param>
        /// <param name="remotePort">Remote port</param>
        /// <param name="sslProtocol">SSL/TLS protocol version</param>
        public MqttSecureNetworkChannel(string remoteHostName, int remotePort, MqttSslProtocol sslProtocol)
            : base(remoteHostName, remotePort)
        {
            this.sslProtocol = sslProtocol;

            if (secure && (sslProtocol == MqttSslProtocol.None))
            {
                throw new ArgumentException(RS.SslProtocolVersionRequired);
            }
        }
Esempio n. 3
0
        public static SslProtocols ToSslPlatformEnum(MqttSslProtocol mqttSslProtocol)
        {
            switch (mqttSslProtocol)
            {
            case MqttSslProtocol.None:
                return(SslProtocols.None);

            case MqttSslProtocol.SSLv3:
                return(SslProtocols.SSLv3);

            case MqttSslProtocol.TLSv1_0:
                return(SslProtocols.TLSv1);

            case MqttSslProtocol.TLSv1_1:
            case MqttSslProtocol.TLSv1_2:
            default:
                throw new ArgumentException(RS.UnsupportedSslVersion);
            }
        }
Esempio n. 4
0
        public static SocketProtectionLevel ToSslPlatformEnum(MqttSslProtocol mqttSslProtocol)
        {
            switch (mqttSslProtocol)
            {
            case MqttSslProtocol.None:
                return(SocketProtectionLevel.PlainSocket);

            case MqttSslProtocol.SSLv3:
                return(SocketProtectionLevel.SslAllowNullEncryption);

            case MqttSslProtocol.TLSv1_0:
                return(SocketProtectionLevel.Tls10);

            case MqttSslProtocol.TLSv1_1:
                return(SocketProtectionLevel.Tls11);

            case MqttSslProtocol.TLSv1_2:
                return(SocketProtectionLevel.Tls12);

            default:
                throw new ArgumentException(RS.UnsupportedSslVersion);
            }
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="brokerHostName">Broker Host Name or IP Address</param>
 /// <param name="brokerPort">Broker port</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 /// <param name="userCertificateValidationCallback">A RemoteCertificateValidationCallback delegate responsible for validating the certificate supplied by the remote party</param>
 /// <param name="userCertificateSelectionCallback">A LocalCertificateSelectionCallback delegate responsible for selecting the certificate used for authentication</param>
 public MqttSecureClient(string brokerHostName, int brokerPort, MqttSslProtocol sslProtocol,
                         RemoteCertificateValidationCallback userCertificateValidationCallback,
                         LocalCertificateSelectionCallback userCertificateSelectionCallback)
     : this(brokerHostName, brokerPort, null, null, sslProtocol, userCertificateValidationCallback, userCertificateSelectionCallback)
 {
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="brokerHostName">Broker Host Name or IP Address</param>
 /// <param name="brokerPort">Broker port</param>
 /// <param name="caCert">CA certificate for secure connection</param>
 /// <param name="clientCert">Client certificate</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 /// <param name="userCertificateValidationCallback">A RemoteCertificateValidationCallback delegate responsible for validating the certificate supplied by the remote party</param>
 public MqttSecureClient(string brokerHostName, int brokerPort, X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol,
                         RemoteCertificateValidationCallback userCertificateValidationCallback)
     : this(brokerHostName, brokerPort, caCert, clientCert, sslProtocol, userCertificateValidationCallback, null)
 {
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="remoteHostName">Remote Host name</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 public MqttSecureNetworkChannel(string remoteHostName, MqttSslProtocol sslProtocol)
     : this(remoteHostName, MqttSettings.MQTT_BROKER_DEFAULT_SSL_PORT, sslProtocol)
 {
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="socket">Socket opened with the client</param>
 public MqttSecureNetworkChannel(StreamSocket socket)
     : base(socket)
 {
     this.sslProtocol = MqttSslProtocol.None;
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="remoteHostName">Remote Host name</param>
 /// <param name="remotePort">Remote port</param>
 /// <param name="caCert">CA certificate</param>
 /// <param name="clientCert">Client certificate</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 public MqttSecureNetworkChannel(string remoteHostName, int remotePort, X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol)
     : base(remoteHostName, remotePort)
 {
     InitSecurity(caCert, clientCert, sslProtocol);
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="socket">Socket opened with the client</param>
 /// <param name="serverCert">Server X509 certificate for secure connection</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 public MqttSecureNetworkChannel(Socket socket, X509Certificate serverCert, MqttSslProtocol sslProtocol)
     : base(socket)
 {
     this.serverCert  = serverCert;
     this.sslProtocol = sslProtocol;
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="brokerHostName">Broker Host Name or IP Address</param>
 /// <param name="brokerPort">Broker port</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 /// <param name="caCert">CA certificate for secure connection</param>
 /// <param name="clientCert">Client certificate</param>
 public MqttSecureClient(string brokerHostName, int brokerPort, X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol)
     : base(brokerHostName, brokerPort, true)
 {
     this.InitSecureChannel(caCert, clientCert, sslProtocol);
 }
Esempio n. 12
0
 /// <summary>
 /// Constructor helper
 /// </summary>
 protected void InitSecurity(X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol)
 {
     this.caCert      = caCert;
     this.clientCert  = clientCert;
     this.sslProtocol = sslProtocol;
 }
Esempio n. 13
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="remoteHostName">Remote Host name</param>
        /// <param name="remotePort">Remote port</param>
        /// <param name="caCert">CA certificate</param>
        /// <param name="clientCert">Client certificate</param>
        /// <param name="sslProtocol">SSL/TLS protocol version</param>
        /// <param name="userCertificateSelectionCallback">A RemoteCertificateValidationCallback delegate responsible for validating the certificate supplied by the remote party</param>
        /// <param name="userCertificateValidationCallback">A LocalCertificateSelectionCallback delegate responsible for selecting the certificate used for authentication</param>
        public MqttSecureNetworkChannel(string remoteHostName, int remotePort, X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol,
                                        RemoteCertificateValidationCallback userCertificateValidationCallback,
                                        LocalCertificateSelectionCallback userCertificateSelectionCallback)
            : base(remoteHostName, remotePort)
        {
            InitSecurity(caCert, clientCert, sslProtocol);

            this.userCertificateValidationCallback = userCertificateValidationCallback;
            this.userCertificateSelectionCallback  = userCertificateSelectionCallback;
        }
Esempio n. 14
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="remoteHostName">Remote Host name</param>
 /// <param name="caCert">CA certificate</param>
 /// <param name="clientCert">Client certificate</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 /// <param name="userCertificateSelectionCallback">A RemoteCertificateValidationCallback delegate responsible for validating the certificate supplied by the remote party</param>
 /// <param name="userCertificateValidationCallback">A LocalCertificateSelectionCallback delegate responsible for selecting the certificate used for authentication</param>
 public MqttSecureNetworkChannel(string remoteHostName, X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol,
                                 RemoteCertificateValidationCallback userCertificateValidationCallback,
                                 LocalCertificateSelectionCallback userCertificateSelectionCallback)
     : this(remoteHostName, MqttSettings.MQTT_BROKER_DEFAULT_SSL_PORT, caCert, clientCert, sslProtocol, userCertificateValidationCallback, userCertificateSelectionCallback)
 {
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="brokerHostName">Broker Host Name or IP Address</param>
 /// <param name="brokerPort">Broker port</param>
 /// <param name="caCert">CA certificate for secure connection</param>
 /// <param name="clientCert">Client certificate</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 /// <param name="userCertificateValidationCallback">A RemoteCertificateValidationCallback delegate responsible for validating the certificate supplied by the remote party</param>
 /// <param name="userCertificateSelectionCallback">A LocalCertificateSelectionCallback delegate responsible for selecting the certificate used for authentication</param>
 public MqttSecureClient(string brokerHostName, int brokerPort, X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol,
                         RemoteCertificateValidationCallback userCertificateValidationCallback,
                         LocalCertificateSelectionCallback userCertificateSelectionCallback)
     : base(brokerHostName, brokerPort, true)
 {
     this.settings.Port    = MqttSettings.MQTT_BROKER_DEFAULT_PORT;
     this.settings.SslPort = this.brokerPort;
     this.InitSecureChannel(caCert, clientCert, sslProtocol, userCertificateValidationCallback, userCertificateSelectionCallback);
 }
 /// <summary>
 /// MqttClient initialization
 /// </summary>
 /// <param name="caCert">CA certificate for secure connection</param>
 /// <param name="clientCert">Client certificate</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 /// <param name="userCertificateSelectionCallback">A RemoteCertificateValidationCallback delegate responsible for validating the certificate supplied by the remote party</param>
 /// <param name="userCertificateValidationCallback">A LocalCertificateSelectionCallback delegate responsible for selecting the certificate used for authentication</param>
 private void InitSecureChannel(X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol,
                                RemoteCertificateValidationCallback userCertificateValidationCallback,
                                LocalCertificateSelectionCallback userCertificateSelectionCallback)
 {
     // create network channel
     this.channel = new MqttSecureNetworkChannel(this.brokerHostName, this.brokerPort, caCert, clientCert, sslProtocol, userCertificateValidationCallback, userCertificateSelectionCallback);
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="remoteHostName">Remote Host name</param>
 /// <param name="caCert">CA certificate</param>
 /// <param name="clientCert">Client certificate</param>
 /// <param name="sslProtocol">SSL/TLS protocol version</param>
 public MqttSecureNetworkChannel(string remoteHostName, X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol)
     : this(remoteHostName, MqttSettings.MQTT_BROKER_DEFAULT_SSL_PORT, caCert, clientCert, sslProtocol)
 {
 }