Ejemplo n.º 1
0
        public async Task TestBinaryFormat(int length, int byte1, int byte2, int byte3)
        {
            using var source = new MemoryStream();
            byte[] data   = new byte[length];
            var    random = new Random();

            random.NextBytes(data);

            await using (var writer = new PacketStream(source, true))
            {
                await writer.WriteAsync(0x7F, data).ConfigureAwait(false);
            }

            byte[] network = source.ToArray();
            Assert.AreEqual(0x7F, network[0]);
            Assert.AreEqual(byte1, network[1]);
            Assert.AreEqual(byte2, network[2]);
            Assert.AreEqual(byte3, network[3]);
            MemoryAssert.AreEqual(data, network.AsSpan().Slice(4));

            source.Position        = 0;
            await using var reader = new PacketStream(source, true);
            (bool success, byte id, PoolableMemory buffer) = await reader.ReadAsync().ConfigureAwait(false);

            Assert.IsTrue(success);
            Assert.AreEqual(0x7F, id);
            MemoryAssert.AreEqual(data, buffer.Memory);
            buffer.Return(false);
        }
Ejemplo n.º 2
0
        public void TestEncryptDecrypt(string text)
        {
            byte[] hmacKey = new byte[32];
            byte[] aesKey  = new byte[32];
            RandomNumberGenerator.Fill(hmacKey);
            RandomNumberGenerator.Fill(aesKey);

            ReadOnlyMemory <byte> data       = Encoding.UTF8.GetBytes(text);
            ReadOnlyMemory <byte> ciphertext = AesStatic.EncryptWithHmac(data, hmacKey, aesKey);
            ReadOnlyMemory <byte> plaintext  = AesStatic.DecryptWithHmac(ciphertext, hmacKey, aesKey);

            MemoryAssert.AreEqual(data, plaintext);
        }