public void EncryptVirtual()
        {
            var provider = new DerivedAuthenticatedEncryptionProvider(Default.SymmetricEncryptionKey256, SecurityAlgorithms.Aes128CbcHmacSha256);

            provider.Encrypt(Guid.NewGuid().ToByteArray(), Guid.NewGuid().ToByteArray());
            Assert.True(provider.EncryptCalled);
        }
        public void Constructor()
        {
            var provider = new DerivedAuthenticatedEncryptionProvider(Default.SymmetricEncryptionKey256, SecurityAlgorithms.Aes128CbcHmacSha256);

            Assert.True(provider.GetKeyBytesCalled);
            Assert.True(provider.IsSupportedAlgorithmCalled);
            Assert.True(provider.ValidateKeySizeCalled);
        }
        public void DecryptVirtual()
        {
            var provider          = new AuthenticatedEncryptionProvider(Default.SymmetricEncryptionKey256, SecurityAlgorithms.Aes128CbcHmacSha256);
            var authenticatedData = Guid.NewGuid().ToByteArray();
            var results           = provider.Encrypt(Guid.NewGuid().ToByteArray(), authenticatedData);
            var derivedProvider   = new DerivedAuthenticatedEncryptionProvider(Default.SymmetricEncryptionKey256, SecurityAlgorithms.Aes128CbcHmacSha256);

            derivedProvider.Decrypt(results.Ciphertext, authenticatedData, results.IV, results.AuthenticationTag);
            Assert.True(derivedProvider.DecryptCalled);
        }