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