public void Given_An_Incorrect_Key_Identifier_When_Decryption_Is_Attempted_Then_An_Exception_Is_Thrown()
        {
            var data = Encoding.UTF8.GetBytes(nameof(FixedKeyEncryptionproviderTests));
            var key  = GenerateKeyBytes();
            var encryptionProviderWithDifferentKey = new FixedKeyEncryptionProvider(key);

            var secret = sut.Encrypt(data);

            Assert.Throws <KeyIdentifierMismatchException>(() => encryptionProviderWithDifferentKey.Decrypt(secret));
        }
        public void Given_Two_Keys_When_Encrypted_Then_The_KeyIdentifier_Is_Unique_For_Each_Secret()
        {
            var data      = Encoding.UTF8.GetBytes(nameof(FixedKeyEncryptionproviderTests));
            var provider1 = new FixedKeyEncryptionProvider(GenerateKeyBytes());
            var provider2 = new FixedKeyEncryptionProvider(GenerateKeyBytes());

            var secret1 = provider1.Encrypt(data);
            var secret2 = provider2.Encrypt(data);

            secret1.KeyIdentifier.Should().NotBe(secret2.KeyIdentifier);
        }
        public void Given_An_Incorrect_Key_When_Decryption_Is_Attempted_Then_Decryption_Does_Not_Return_The_Unencrypted_Data()
        {
            var data = Encoding.UTF8.GetBytes(nameof(FixedKeyEncryptionproviderTests));

            var secret = sut.Encrypt(data);

            //  make a new key appear to be the same by using the same identifier
            var incorrectKey = new Key(GenerateKeyBytes(), secret.KeyIdentifier);
            var encryptionProviderWithDifferentKey = new FixedKeyEncryptionProvider(incorrectKey);

            encryptionProviderWithDifferentKey.Decrypt(secret).Should().NotBeEquivalentTo(data);
        }
 public FixedKeyEncryptionproviderTests()
 {
     sut = new FixedKeyEncryptionProvider(GenerateKeyBytes());
 }