public void FirstWriteSendsNonce()
        {
            var psk = new PreSharedKey().Generate();

            var insecure = new MemoryStream();
            var secure   = new Psk1Stream(insecure, psk);

            secure.WriteByte(0x10);
            Assert.AreEqual(24 + 1, insecure.Length);

            insecure = new MemoryStream();
            secure   = new Psk1Stream(insecure, psk);
            secure.Write(new byte[10], 0, 10);
            Assert.AreEqual(24 + 10, insecure.Length);

            insecure = new MemoryStream();
            secure   = new Psk1Stream(insecure, psk);
            secure.WriteAsync(new byte[12], 0, 12).Wait();
            Assert.AreEqual(24 + 12, insecure.Length);
        }
        public void Roundtrip()
        {
            var psk    = new PreSharedKey().Generate();
            var plain  = new byte[] { 1, 2, 3 };
            var plain1 = new byte[3];
            var plain2 = new byte[3];

            var insecure = new MemoryStream();
            var secure   = new Psk1Stream(insecure, psk);

            secure.Write(plain, 0, plain.Length);
            secure.Flush();

            insecure.Position = 0;
            secure            = new Psk1Stream(insecure, psk);
            secure.Read(plain1, 0, plain1.Length);
            CollectionAssert.AreEqual(plain, plain1);

            insecure.Position = 0;
            secure            = new Psk1Stream(insecure, psk);
            secure.ReadAsync(plain2, 0, plain2.Length).Wait();
            CollectionAssert.AreEqual(plain, plain2);
        }