Пример #1
0
        public void Egress_update_chunks_should_not_matter()
        {
            byte[] a1 = new byte[160];
            byte[] b1 = new byte[160];

            byte[] egressUpdate = new byte[32];
            for (int i = 0; i < egressUpdate.Length; i++)
            {
                egressUpdate[i] = (byte)i;
            }

            var secretsA = NetTestVectors.BuildSecretsWithSameIngressAndEgress();

            secretsA.EgressMac.BlockUpdate(egressUpdate.Slice(0, 16), 0, 16);
            secretsA.EgressMac.BlockUpdate(egressUpdate.Slice(16, 16), 0, 16);
            FrameMacProcessor macProcessorA = new FrameMacProcessor(TestItem.PublicKeyA, secretsA);

            macProcessorA.AddMac(a1, 0, 16, false);

            var secretsB = NetTestVectors.BuildSecretsWithSameIngressAndEgress();

            secretsB.EgressMac.BlockUpdate(egressUpdate, 0, 32);
            FrameMacProcessor macProcessorB = new FrameMacProcessor(TestItem.PublicKeyA, secretsB);

            macProcessorB.AddMac(b1, 0, 16, false);

            Assert.AreEqual(a1.Slice(16, 16), b1.Slice(16, 16));
        }
Пример #2
0
        public void Can_add_and_check_header_mac()
        {
            byte[] header = new byte[32];

            FrameMacProcessor macProcessor = new FrameMacProcessor(NetTestVectors.BuildSecretsWithSameIngressAndEgress());

            macProcessor.AddMac(header, 0, 16, true);
            macProcessor.CheckMac(header, 0, 16, true);
        }
Пример #3
0
        public void Can_add_and_check_frame_mac()
        {
            byte[] frame = new byte[128];

            FrameMacProcessor macProcessor = new FrameMacProcessor(NetTestVectors.BuildSecretsWithSameIngressAndEgress());

            macProcessor.AddMac(frame, 0, 112, false);
            macProcessor.CheckMac(frame, 0, 112, false);
        }
Пример #4
0
        public void Can_add_and_check_both()
        {
            byte[] full = new byte[160];

            FrameMacProcessor macProcessor = new FrameMacProcessor(NetTestVectors.BuildSecretsWithSameIngressAndEgress());

            macProcessor.AddMac(full, 0, 16, true);
            macProcessor.AddMac(full, 32, 112, false);
            macProcessor.CheckMac(full, 0, 16, true);
            macProcessor.CheckMac(full, 32, 112, false);
        }
Пример #5
0
        public void Setup()
        {
            _ip2PSession = Substitute.For <IP2PSession>();

            _pipeline = Substitute.For <IChannelPipeline>();

            _channel = Substitute.For <IChannel>();
            _channel.Pipeline.Returns(_pipeline);
            _channel.RemoteAddress.Returns(new IPEndPoint(new IPAddress(new byte[] { 127, 0, 0, 1 }), 8003));

            _channelHandlerContext = Substitute.For <IChannelHandlerContext>();
            _channelHandlerContext.Channel.Returns(_channel);

            _service = Substitute.For <IEncryptionHandshakeService>();
            _service.Auth(Arg.Any <NodeId>(), Arg.Any <EncryptionHandshake>()).Returns(_authPacket);
            _service.Ack(Arg.Any <EncryptionHandshake>(), Arg.Any <Packet>()).Returns(_ackPacket).AndDoes(ci => ci.Arg <EncryptionHandshake>().Secrets = NetTestVectors.BuildSecretsWithSameIngressAndEgress());
            _service.When(s => s.Agree(Arg.Any <EncryptionHandshake>(), Arg.Any <Packet>())).Do(ci => ci.Arg <EncryptionHandshake>().Secrets           = NetTestVectors.BuildSecretsWithSameIngressAndEgress());

            _logger          = NullLogManager.Instance;
            _remotePublicKey = new NodeId(NetTestVectors.StaticKeyB.PublicKey);
        }
Пример #6
0
        public void Setup()
        {
            _session = Substitute.For <ISession>();

            _pipeline = Substitute.For <IChannelPipeline>();

            _group = new SingleThreadEventLoop();

            _serializationService = new MessageSerializationService();

            _channel = Substitute.For <IChannel>();
            _channel.Pipeline.Returns(_pipeline);
            _channel.RemoteAddress.Returns(new IPEndPoint(IPAddress.Loopback, 8003));

            _channelHandlerContext = Substitute.For <IChannelHandlerContext>();
            _channelHandlerContext.Channel.Returns(_channel);

            _handshakeService = Substitute.For <IHandshakeService>();
            _handshakeService.Auth(Arg.Any <PublicKey>(), Arg.Any <EncryptionHandshake>()).Returns(_authPacket);
            _handshakeService.Ack(Arg.Any <EncryptionHandshake>(), Arg.Any <Packet>()).Returns(_ackPacket).AndDoes(ci => ci.Arg <EncryptionHandshake>().Secrets = NetTestVectors.BuildSecretsWithSameIngressAndEgress());
            _handshakeService.When(s => s.Agree(Arg.Any <EncryptionHandshake>(), Arg.Any <Packet>())).Do(ci => ci.Arg <EncryptionHandshake>().Secrets           = NetTestVectors.BuildSecretsWithSameIngressAndEgress());

            _logger = NullLogManager.Instance;
            _session.RemoteNodeId.Returns(NetTestVectors.StaticKeyB.PublicKey);
        }