public void TestFailedVerification()
        {
            SymmetricKey key = new SymmetricKey(Resolve.RandomGenerator.Generate(32));
            SymmetricIV  iv  = new SymmetricIV(Resolve.RandomGenerator.Generate(16));
            V2AlgorithmVerifierEncryptedHeaderBlock headerBlock = new V2AlgorithmVerifierEncryptedHeaderBlock(new V2AesCrypto(key, iv, 0));

            Assert.That(headerBlock.IsVerified, Is.True, "A properly instantiated header should always have IsVerified as true");

            byte[] dataBlock = headerBlock.GetDataBlockBytes();

            V2AlgorithmVerifierEncryptedHeaderBlock newBlock = new V2AlgorithmVerifierEncryptedHeaderBlock(dataBlock);

            SymmetricKey key128 = new SymmetricKey(Resolve.RandomGenerator.Generate(16));

            newBlock.HeaderCrypto = new V2AesCrypto(key128, iv, 0);
            Assert.That(newBlock.IsVerified, Is.False, "Wrong algorithm, should not verify.");

            SymmetricKey wrongKey256 = new SymmetricKey(Resolve.RandomGenerator.Generate(32));

            newBlock.HeaderCrypto = new V2AesCrypto(wrongKey256, iv, 0);
            Assert.That(newBlock.IsVerified, Is.False, "Wrong key, should not verify.");

            SymmetricIV wrongIv = new SymmetricIV(Resolve.RandomGenerator.Generate(16));

            newBlock.HeaderCrypto = new V2AesCrypto(key, wrongIv, 0);
            Assert.That(newBlock.IsVerified, Is.False, "Wrong IV, should not verify.");

            newBlock.HeaderCrypto = new V2AesCrypto(key, iv, 256);
            Assert.That(newBlock.IsVerified, Is.False, "Wrong key stream index, should not verify.");

            newBlock.HeaderCrypto = new V2AesCrypto(key, iv, 0);
            Assert.That(newBlock.IsVerified, Is.True, "Everything is as it should, so it should verify.");
        }
        public void TestOkVerification()
        {
            SymmetricKey key = new SymmetricKey(Resolve.RandomGenerator.Generate(32));
            SymmetricIV  iv  = new SymmetricIV(Resolve.RandomGenerator.Generate(16));
            V2AlgorithmVerifierEncryptedHeaderBlock headerBlock = new V2AlgorithmVerifierEncryptedHeaderBlock(new V2AesCrypto(key, iv, 0));

            Assert.That(headerBlock.IsVerified, Is.True, "A properly instantiated header should always have IsVerified as true");

            byte[] dataBlock = headerBlock.GetDataBlockBytes();

            V2AlgorithmVerifierEncryptedHeaderBlock newBlock = new V2AlgorithmVerifierEncryptedHeaderBlock(dataBlock);

            newBlock.HeaderCrypto = new V2AesCrypto(key, iv, 0);
            Assert.That(newBlock.IsVerified, Is.True, "It's a new block with the same key, should be ok.");
        }