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)); }
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); }
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); }
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); }
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); }
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); }