public void ConnectAsync(MqttConnectMessageBuilder bldr, string ipOrHost, int port, SocketEncryption encryption, object eventData)
        {
            var args = new SocketEventArgs
            {
                EncryptionLevel = encryption,
                ClientUid = GenerateClientUid(bldr)
            };

            args.OnOperationComplete((eventArgs) =>
            {
                OnTcpConnectAsyncCompleted(eventArgs, eventData);

                if (eventArgs.SocketException == null)
                {
                    SendMessageAsync(bldr, eventData, eventArgs.ClientUid);
                }
                else
                {
                    FireConnectComplete(new MqttNetEventArgs
                    {
                        Message = bldr.GetMessage(),
                        Exception = eventArgs.SocketException,
                        AdditionalErrorInfo = eventArgs.AdditionalErrorInfo,
                        EventData = eventData,
                        ClientUid = args.ClientUid
                    });
                }
            });

            Socket.ConnectAsync(ipOrHost, port, args);
        }
Beispiel #2
0
        private SocketProtectionLevel GetSocketProtectionLevel(SocketEncryption encryption)
        {
            _encryptionLevel = SocketProtectionLevel.PlainSocket;

            switch (encryption)
            {
            case SocketEncryption.None:
                _encryptionLevel = SocketProtectionLevel.PlainSocket;
                break;

            case SocketEncryption.Tls10:
                _encryptionLevel = SocketProtectionLevel.Tls10;
                break;

            case SocketEncryption.Tls11:
                _encryptionLevel = SocketProtectionLevel.Tls11;
                break;

            case SocketEncryption.Tls12:
                _encryptionLevel = SocketProtectionLevel.Tls12;
                break;
            }

            return(_encryptionLevel);
        }
        private SocketProtectionLevel GetSocketProtectionLevel(SocketEncryption encryption)
        {
            _encryptionLevel = SocketProtectionLevel.PlainSocket;

            switch (encryption)
            {
            case SocketEncryption.None:
                _encryptionLevel = SocketProtectionLevel.PlainSocket;
                break;

            case SocketEncryption.Ssl:
                _encryptionLevel = SocketProtectionLevel.Ssl;
                break;
                //case SocketEncryption.Tls10:
                //    IsEncrypted = true;
                //    _encryptionLevel = SocketProtectionLevel.Tls10;
                //    break;
                //case SocketEncryption.Tls11:
                //    IsEncrypted = true;
                //    _encryptionLevel = SocketProtectionLevel.Tls11;
                //    break;
                //case SocketEncryption.Tls12:
                //    IsEncrypted = true;
                //    _encryptionLevel = SocketProtectionLevel.Tls12;
                //    break;
            }

            return(_encryptionLevel);
        }
Beispiel #4
0
        private void SetEncryptionOnStreams(SocketEncryption encryption, NSInputStream inStream, NSOutputStream outStream)
        {
            if (encryption == SocketEncryption.Ssl)
            {
                inStream.SocketSecurityLevel  = NSStreamSocketSecurityLevel.SslV3;
                outStream.SocketSecurityLevel = NSStreamSocketSecurityLevel.SslV3;
            }
            else if (encryption == SocketEncryption.Tls10)
            {
                inStream.SocketSecurityLevel  = NSStreamSocketSecurityLevel.TlsV1;
                outStream.SocketSecurityLevel = NSStreamSocketSecurityLevel.TlsV1;
            }
            else if (encryption == SocketEncryption.Tls11)
            {
                inStream.SocketSecurityLevel  = NSStreamSocketSecurityLevel.TlsV1;
                outStream.SocketSecurityLevel = NSStreamSocketSecurityLevel.TlsV1;
            }
            else if (encryption == SocketEncryption.Tls12)
            {
                inStream.SocketSecurityLevel  = NSStreamSocketSecurityLevel.TlsV1;
                outStream.SocketSecurityLevel = NSStreamSocketSecurityLevel.TlsV1;

                //var key = ObjCRuntime.Dlfcn.GetStringConstant("kCFStreamPropertySSLSettings", Libraries.CoreFoundation.Handle);
            }
        }
 /// <summary>
 /// Create an MQTT client the uses SSL encryption for communications.
 /// </summary>
 /// <param name="encryptionLevel">The encryption level to use.</param>
 /// <param name="caCertificate">The certificate for client authorities to use for authentication.</param>
 /// <returns></returns>
 public static MqttClient CreateSecureClient(SocketEncryption encryptionLevel, X509Certificate caCertificate)
 {
     var logManager = new LogCompositor();
     ActiveClientCollection.Instance.TestCanAddNewClient();
     // Each platform has its own implementation of Sockets and reader threads.
     var client = new MqttClient(new NetMfSocketAdapter(logManager, caCertificate), logManager, encryptionLevel);
     ActiveClientCollection.Instance.AddClient(client);
     return client;
 }
 /// <summary>
 /// Create an MQTT client the uses SSL encryption for communications. If the certificate is private and not
 /// signed ay a trusted Certificate Authority, the certificate must be installed in the application's
 /// certificate store ahead of making a connection.
 /// </summary>
 /// <param name="encryption">The encryption level to use.</param>
 /// <returns>An MQTT client ready to make secure connections to a broker.</returns>
 public static MqttClient CreateSecureClient(SocketEncryption encryption)
 {
     var logManager = new LogCompositor();
     logManager.AddLoggingProvider(typeof(DebugLogger));
     ActiveClientCollection.Instance.TestCanAddNewClient();
     // Each platform has its own implementation of Sockets and reader threads.
     var client = new MqttClient(new WinRTSocketAdapter(logManager), logManager, encryption);
     ActiveClientCollection.Instance.AddClient(client);
     return client;
 }
Beispiel #7
0
        /// <summary>
        /// Create an MQTT client the uses SSL encryption for communications.
        /// </summary>
        /// <param name="encryptionLevel">The encryption level to use.</param>
        /// <param name="caCertificate">The certificate for client authorities to use for authentication.</param>
        /// <returns></returns>
        public static MqttClient CreateSecureClient(SocketEncryption encryptionLevel, X509Certificate caCertificate)
        {
            var logManager = new LogCompositor();

            ActiveClientCollection.Instance.TestCanAddNewClient();
            // Each platform has its own implementation of Sockets and reader threads.
            var client = new MqttClient(new NetMfSocketAdapter(logManager, caCertificate), logManager, encryptionLevel);

            ActiveClientCollection.Instance.AddClient(client);
            return(client);
        }
 internal MqttClient(ISocketAdapter socket, ILogger logger, SocketEncryption encryptionLevel)
 {
     _logger = logger;
     _encryptionLevel = encryptionLevel;
     _mqtt = new MqttClientProtocol(_logger, socket);
     _mqtt.ConnectComplete += MqttOnConnectComplete;
     _mqtt.SubscribeComplete += MqttOnSubscribeComplete;
     _mqtt.SendMessageComplete += MqttOnSendMessageComplete;
     _mqtt.PublishReceived += MqttOnPublishReceived;
     _mqtt.NetworkError += MqttOnNetworkError;
 }
Beispiel #9
0
 internal MqttClient(ISocketAdapter socket, ILogger logger, SocketEncryption encryptionLevel)
 {
     _logger                    = logger;
     _encryptionLevel           = encryptionLevel;
     _mqtt                      = new MqttClientProtocol(_logger, socket);
     _mqtt.ConnectComplete     += MqttOnConnectComplete;
     _mqtt.SubscribeComplete   += MqttOnSubscribeComplete;
     _mqtt.SendMessageComplete += MqttOnOperationComplete;
     _mqtt.NetworkError        += MqttOnNetworkError;
     _mqtt.PublishReceived     += MqttOnPublishReceived;
 }
Beispiel #10
0
        /// <summary>
        /// Create an MQTT client the uses SSL encryption for communications. If the certificate is private and not
        /// signed ay a trusted Certificate Authority, the certificate must be installed in the application's
        /// certificate store ahead of making a connection.
        /// </summary>
        /// <param name="encryption">The encryption level to use.</param>
        /// <returns>An MQTT client ready to make secure connections to a broker.</returns>
        public static MqttClient CreateSecureClient(SocketEncryption encryption)
        {
            var logManager = new LogCompositor();

            logManager.AddLoggingProvider(typeof(DebugLogger));
            ActiveClientCollection.Instance.TestCanAddNewClient();
            // Each platform has its own implementation of Sockets and reader threads.
            var client = new MqttClient(new Phone8SocketAdapter(logManager), logManager, encryption);

            ActiveClientCollection.Instance.AddClient(client);
            return(client);
        }
        private SslProtocols GetSslProtocol(SocketEncryption encryption)
        {
            _encryptionLevel = SslProtocols.None;

            switch (encryption)
            {
            case SocketEncryption.None:
                _encryptionLevel = SslProtocols.None;
                break;

            case SocketEncryption.Tls10:
                _encryptionLevel = SslProtocols.TLSv1;
                break;
            }

            return(_encryptionLevel);
        }
Beispiel #12
0
        public void ConnectTcpClient(NSStreamPair streams, int port, SocketEncryption encryption, string connectionKey)
        {
            var encryptionLevel = SslProtocols.None;

            switch (encryption)
            {
            case SocketEncryption.None:
                encryptionLevel = SslProtocols.None;
                break;

            case SocketEncryption.Ssl:
                encryptionLevel = SslProtocols.Ssl3;
                break;

            case SocketEncryption.Tls10:
                encryptionLevel = SslProtocols.Tls;
                break;

            case SocketEncryption.Tls11:
                encryptionLevel = SslProtocols.Tls11;
                break;

            case SocketEncryption.Tls12:
                encryptionLevel = SslProtocols.Tls12;
                break;
            }

            lock (_connectedClients)
            {
                _logger.LogMessage("Socket", LogLevel.Verbose, string.Format("Adding new TCP client: key={0}", connectionKey));

                var clientInfo = new ConnectedClientInfo
                {
                    //Socket = socket,
                    Stream     = streams,
                    Port       = port,
                    Encryption = encryptionLevel,
                    ClientUid  = connectionKey
                };
                _connectedClients.Add(connectionKey, clientInfo);

                ListeningInputStream(clientInfo);
            }
        }
Beispiel #13
0
        public void ConnectTcpClient(TcpClient tcpClient, int port, SocketEncryption encryption, string connectionKey)
        {
            var encryptionLevel = SslProtocols.None;

            switch (encryption)
            {
            case SocketEncryption.None:
                encryptionLevel = SslProtocols.None;
                break;

            case SocketEncryption.Ssl:
                encryptionLevel = SslProtocols.Ssl3;
                break;

            case SocketEncryption.Tls10:
                encryptionLevel = SslProtocols.Tls;
                break;

            case SocketEncryption.Tls11:
                encryptionLevel = SslProtocols.Tls11;
                break;

            case SocketEncryption.Tls12:
                encryptionLevel = SslProtocols.Tls12;
                break;
            }

            lock (_connectedClients)
            {
                _logger.LogMessage("Socket", LogLevel.Verbose, string.Format("Adding new TCP client: key={0}", connectionKey));
                _connectedClients.Add(connectionKey, new ConnectedClientInfo
                {
                    TcpClient  = tcpClient,
                    Port       = port,
                    Encryption = encryptionLevel,
                    ClientUid  = connectionKey
                });
            }
        }
        private SocketProtectionLevel GetSocketProtectionLevel(SocketEncryption encryption)
        {
            _encryptionLevel = SocketProtectionLevel.PlainSocket;

            switch (encryption)
            {
                case SocketEncryption.None:
                    _encryptionLevel = SocketProtectionLevel.PlainSocket;
                    break;
                case SocketEncryption.Ssl:
                    _encryptionLevel = SocketProtectionLevel.Ssl;
                    break;
                //case SocketEncryption.Tls10:
                //    IsEncrypted = true;
                //    _encryptionLevel = SocketProtectionLevel.Tls10;
                //    break;
                //case SocketEncryption.Tls11:
                //    IsEncrypted = true;
                //    _encryptionLevel = SocketProtectionLevel.Tls11;
                //    break;
                //case SocketEncryption.Tls12:
                //    IsEncrypted = true;
                //    _encryptionLevel = SocketProtectionLevel.Tls12;
                //    break;
            }

            return _encryptionLevel;
        }
        private SslProtocols GetSslProtocol(SocketEncryption encryption)
        {
            _encryptionLevel = SslProtocols.None;

            switch (encryption)
            {
                case SocketEncryption.None:
                    _encryptionLevel = SslProtocols.None;
                    break;
                case SocketEncryption.Tls10:
                    _encryptionLevel = SslProtocols.TLSv1;
                    break;
            }

            return _encryptionLevel;
        }
        public void ConnectTcpClient(TcpClient tcpClient, int port, SocketEncryption encryption, string connectionKey)
        {
            var encryptionLevel = SslProtocols.None;

            switch (encryption)
            {
                case SocketEncryption.None:
                    encryptionLevel = SslProtocols.None;
                    break;
                case SocketEncryption.Ssl:
                    encryptionLevel = SslProtocols.Ssl3;
                    break;
                case SocketEncryption.Tls10:
                    encryptionLevel = SslProtocols.Tls;
                    break;
                case SocketEncryption.Tls11:
                    encryptionLevel = SslProtocols.Tls11;
                    break;
                case SocketEncryption.Tls12:
                    encryptionLevel = SslProtocols.Tls12;
                    break;
            }

            lock (_connectedClients)
            {
                _logger.LogMessage("Socket", LogLevel.Verbose, string.Format("Adding new TCP client: key={0}", connectionKey));
                _connectedClients.Add(connectionKey, new ConnectedClientInfo
                {
                    TcpClient = tcpClient,
                    Port = port,
                    Encryption = encryptionLevel,
                    ClientUid = connectionKey
                });
            }
        }
        private SocketProtectionLevel GetSocketProtectionLevel(SocketEncryption encryption)
        {
            _encryptionLevel = SocketProtectionLevel.PlainSocket;

            switch (encryption)
            {
                case SocketEncryption.None:
                    _encryptionLevel = SocketProtectionLevel.PlainSocket;
                    break;
                case SocketEncryption.Tls10:
                    _encryptionLevel = SocketProtectionLevel.Tls10;
                    break;
                case SocketEncryption.Tls11:
                    _encryptionLevel = SocketProtectionLevel.Tls11;
                    break;
                case SocketEncryption.Tls12:
                    _encryptionLevel = SocketProtectionLevel.Tls12;
                    break;
            }

            return _encryptionLevel;
        }
Beispiel #18
0
        public void ConnectAsync(MqttConnectMessageBuilder bldr, string ipOrHost, int port, SocketEncryption encryption, object eventData)
        {
            var args = new SocketEventArgs
            {
                EncryptionLevel = encryption,
                ClientUid       = GenerateClientUid(bldr)
            };

            args.OnOperationComplete((eventArgs) =>
            {
                OnTcpConnectAsyncCompleted(eventArgs, eventData);

                if (eventArgs.SocketException == null)
                {
                    SendMessageAsync(bldr, eventData, eventArgs.ClientUid);
                }
                else
                {
                    FireConnectComplete(new MqttNetEventArgs
                    {
                        Message             = bldr.GetMessage(),
                        Exception           = eventArgs.SocketException,
                        AdditionalErrorInfo = eventArgs.AdditionalErrorInfo,
                        EventData           = eventData,
                        ClientUid           = args.ClientUid
                    });
                }
            });

            Socket.ConnectAsync(ipOrHost, port, args);
        }