コード例 #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
        private void SetupAll(bool useLimboOutput = false)
        {
            var secrets = NetTestVectors.GetSecretsPair();

            FrameCipher       frameCipher       = new FrameCipher(secrets.A.AesSecret);
            FrameMacProcessor frameMacProcessor = new FrameMacProcessor(TestItem.IgnoredPublicKey, secrets.A);

            _zeroSplitter = new TestZeroSplitter();
            _zeroSplitter.DisableFraming();
            _zeroEncoder       = new TestZeroEncoder(frameCipher, frameMacProcessor);
            _zeroSnappyEncoder = new TestZeroSnappy();
            Transaction a = Build.A.Transaction.TestObject;
            Transaction b = Build.A.Transaction.TestObject;

            _block = Build.A.Block.WithTransactions(a, b).TestObject;
            _newBlockMessageSerializer = new NewBlockMessageSerializer();
            if (useLimboOutput)
            {
                _outputBuffer = new MockBuffer();
            }

            _newBlockMessage       = new NewBlockMessage();
            _newBlockMessage.Block = _block;
            _serializationService  = new MessageSerializationService();
            _serializationService.Register(_newBlockMessageSerializer);
            _packetSender = new PacketSender(_serializationService, LimboLogs.Instance);
            ResourceLeakDetector.Level = ResourceLeakDetector.DetectionLevel.Paranoid;
        }
コード例 #3
0
        public void Can_add_and_check_header_mac()
        {
            byte[] header = new byte[32];

            FrameMacProcessor macProcessor = new FrameMacProcessor(new NodeId(TestObject.PublicKeyA), NetTestVectors.BuildSecretsWithSameIngressAndEgress());

            macProcessor.AddMac(header, 0, 16, true);
            macProcessor.CheckMac(header, 0, 16, true);
        }
コード例 #4
0
        public void Can_add_and_check_frame_mac()
        {
            byte[] frame = new byte[128];

            FrameMacProcessor macProcessor = new FrameMacProcessor(new NodeId(TestObject.PublicKeyA), NetTestVectors.BuildSecretsWithSameIngressAndEgress());

            macProcessor.AddMac(frame, 0, 112, false);
            macProcessor.CheckMac(frame, 0, 112, false);
        }
コード例 #5
0
        public void Can_add_and_check_header_mac()
        {
            byte[] header = new byte[32];

            FrameMacProcessor macProcessorA = new FrameMacProcessor(TestItem.PublicKeyA, NetTestVectors.GetSecretsPair().A);
            FrameMacProcessor macProcessorB = new FrameMacProcessor(TestItem.PublicKeyA, NetTestVectors.GetSecretsPair().B);

            macProcessorA.AddMac(header, 0, 16, true);
            macProcessorB.CheckMac(header, 0, 16, true);
        }
コード例 #6
0
        public void Can_add_and_check_frame_mac()
        {
            byte[] frame = new byte[128];

            FrameMacProcessor macProcessorA = new FrameMacProcessor(TestItem.PublicKeyA, NetTestVectors.GetSecretsPair().A);
            FrameMacProcessor macProcessorB = new FrameMacProcessor(TestItem.PublicKeyA, NetTestVectors.GetSecretsPair().B);

            macProcessorA.AddMac(frame, 0, 112, false);
            macProcessorB.CheckMac(frame, 0, 112, false);
        }
コード例 #7
0
        public void Setup()
        {
            var secrets = NetTestVectors.GetSecretsPair();

            _frameCipher  = new FrameCipher(secrets.A.AesSecret);
            _macProcessor = new FrameMacProcessor(TestItem.IgnoredPublicKey, secrets.A);

            _frame    = new byte[16 + 16 + 16 + 16];
            _frame[2] = 16; // size
        }
コード例 #8
0
        public void Can_add_and_check_both()
        {
            byte[] full = new byte[160];

            FrameMacProcessor macProcessor = new FrameMacProcessor(new NodeId(TestObject.PublicKeyA), 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);
        }
コード例 #9
0
        public void Can_add_and_check_both()
        {
            byte[] full = new byte[160];

            FrameMacProcessor macProcessorA = new FrameMacProcessor(TestItem.PublicKeyA, NetTestVectors.GetSecretsPair().A);
            FrameMacProcessor macProcessorB = new FrameMacProcessor(TestItem.PublicKeyA, NetTestVectors.GetSecretsPair().B);

            macProcessorA.AddMac(full, 0, 16, true);
            macProcessorA.AddMac(full, 32, 112, false);
            macProcessorB.CheckMac(full, 0, 16, true);
            macProcessorB.CheckMac(full, 32, 112, false);
        }