/// <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); } }
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); } }
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); }
/// <summary> /// Constructor helper /// </summary> protected void InitSecurity(X509Certificate caCert, X509Certificate clientCert, MqttSslProtocol sslProtocol) { this.caCert = caCert; this.clientCert = clientCert; this.sslProtocol = sslProtocol; }
/// <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; }
/// <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) { }