예제 #1
0
        public void setUp()
        {
            DatagramTransport _fakedt = new DatagramTransportImpl();

            _fakeAssociation = new AssociationImpl(_fakedt, null);
            _fakeStream      = new SCTPStreamImpl(_fakeAssociation, 22);
        }
예제 #2
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();
        }
예제 #3
0
        public void testAss()
        {
            DatagramTransportImpl   mock = new DatagramTransportImpl(null);
            AssociationListenerImpl al   = new AssociationListenerImpl(null);
            MockAssociation         ass  = new MockAssociation(mock, al);

            ass.setMyVerTag(335297160);
            ByteBuffer b = ByteBuffer.wrap(sampleDataOpen);
            Packet     p = new Packet(b);

            ass.deal(p);

            Packet       ack    = new Packet(mock.sent);
            List <Chunk> chunks = ack.getChunkList();

            Assert.AreEqual(1, chunks.Count, "Expecting 1 chunk ");
            DataChunk dat = chunks[0] as DataChunk;

            Assert.AreEqual(dat.getType(), DataChunk.CType.DATA, "Expecting a Data chunk");
            Console.WriteLine("got " + dat.GetType().Name + " chunk" + dat.ToString());
            Assert.AreEqual(dat.getSSeqNo(), 0, "Expecting seqno of zero");
            Assert.AreEqual(dat.getStreamId(), 0, "Expecting stream of zero");
            Assert.AreEqual(dat.getPpid(), 50, "Expecting an DCEP");
            Assert.AreEqual(dat.getData(), null, "Data should be zero");
            Assert.AreEqual(dat.getDCEP() != null, true, "Expected  to parse a DCEP packet");
            Assert.AreEqual(dat.getDCEP().isAck(), true, "Expected an ack DCEP packet ");

            Assert.AreEqual((al.stream == null), false, "expecting a stream");
            al.stream.send("hello");
            // ugh - uses a side effect on the sent buffer, which we capture.
            Packet pack = new Packet(mock.sent);

            chunks = pack.getChunkList();
            Assert.AreEqual(1, chunks.Count, "Expecting 1 chunk ");
            dat = chunks[0] as DataChunk;
            Assert.AreEqual(dat.getType(), Chunk.CType.DATA, "Expecting a Data chunk");
            Console.WriteLine("got " + dat.GetType().Name + " chunk" + dat.ToString());
            Assert.AreEqual(dat.getSSeqNo(), 1, "Expecting seqno of one");             // we've done a DCEP ack by now.
            Assert.AreEqual(dat.getStreamId(), 0, "Expecting stream of zero");
            Assert.AreEqual(dat.getDataAsString(), "hello", "Expecting hello in the data");
        }