Esempio n. 1
0
        public void ConnectTest()
        {
            //CertificateInfo certificateInfo = DtlsUtils.
            byte[] testData = { 1, 2, 3, 4, 5 };

            int clientUdpPort = 8001, serverUdpPort = 8002;
            var clientSocket = new Socket(SocketType.Dgram, ProtocolType.Udp);

            clientSocket.Bind(new IPEndPoint(IPAddress.Any, clientUdpPort));

            var serverSocket = new Socket(SocketType.Dgram, ProtocolType.Udp);

            serverSocket.Bind(new IPEndPoint(IPAddress.Any, serverUdpPort));

            clientSocket.Connect(IPAddress.Loopback, serverUdpPort);
            serverSocket.Connect(IPAddress.Loopback, clientUdpPort);

            clientSocket.Send(testData);
            byte[] receiveBuffer = new byte[serverSocket.Available];
            serverSocket.Receive(receiveBuffer);

            CollectionAssert.AreEqual(receiveBuffer, testData);

            CertificateInfo clientCertificateInfo   = DtlsUtils.GenerateCertificateInfo();
            var             clientDatagramTransport = new DatagramTransportImpl(clientSocket);
            var             client = new DtlsClient(clientDatagramTransport, clientCertificateInfo, new DtlsClientProtocol(new Org.BouncyCastle.Security.SecureRandom()));

            CertificateInfo serverCertificateInfo   = DtlsUtils.GenerateCertificateInfo();
            var             serverDatagramTransport = new DatagramTransportImpl(serverSocket);
            var             server = new DtlsServer(serverDatagramTransport, serverCertificateInfo, new DtlsServerProtocol(new Org.BouncyCastle.Security.SecureRandom()));

            Task serverAcceptTask = new Task(() => server.Start());

            serverAcceptTask.Start();

            client.HandshakeComplete += (sender, args) =>
            {
            };
            client.ServerCertificateAvailable += (sender, args) =>
            {
            };

            client.Start();
        }
Esempio n. 2
0
        /// <summary>
        /// Connect to a group to start streaming
        /// </summary>
        /// <param name="groupId"></param>
        /// <param name="simulator"></param>
        /// <returns></returns>
        public async Task Connect(string groupId, bool simulator = false)
        {
            _simulator = simulator;
            var enableResult = await _localHueClient.SetStreamingAsync(groupId).ConfigureAwait(false);

            byte[] psk = FromHex(_clientKey);
            BasicTlsPskIdentity pskIdentity = new BasicTlsPskIdentity(_appKey, psk);

            var dtlsClient = new DtlsClient(null, pskIdentity);

            DtlsClientProtocol clientProtocol = new DtlsClientProtocol(new SecureRandom());

            await _socket.ConnectAsync(IPAddress.Parse(_ip), 2100).ConfigureAwait(false);

            _udp = new UdpTransport(_socket);

            if (!simulator)
            {
                _dtlsTransport = clientProtocol.Connect(dtlsClient, _udp);
            }
        }