Example #1
0
        private static void Test4(IBlockCrypto crypto, string hex1, string hex2)
        {
            Assert.AreEqual(@"AES-CBC", crypto.Name);
            Assert.AreEqual(16, crypto.BlockSize);

            Span <byte> h1 = hex1.FromHex();
            Span <byte> h2 = hex2.FromHex();
            Span <byte> o1 = stackalloc byte[64];

            crypto.Encrypt4(h1, o1);
            Assert.IsTrue(o1.SequenceEqual(h2));

            crypto.Reset();

            crypto.Encrypt4(h1, o1);
            Assert.IsTrue(o1.SequenceEqual(h2));

            crypto.Reset();

            crypto.Decrypt(h2, o1);
            crypto.Decrypt(h2.Slice(16), o1.Slice(16));
            crypto.Decrypt(h2.Slice(32), o1.Slice(32));
            crypto.Decrypt(h2.Slice(48), o1.Slice(48));

            Assert.IsTrue(o1.SequenceEqual(h1));

            crypto.Dispose();
        }