public void CanBeDecryptedWithDerivedPassword() { byte[] derivedKey1 = new byte[16] { 11, 222, 31, 47, 75, 168, 78, 13, 61, 118, 221, 18, 213, 104, 15, 16 }; byte[] derivedKey2 = new byte[16] { 11, 222, 31, 47, 75, 168, 78, 13, 61, 118, 221, 18, 213, 104, 15, 15 }; byte[] initialCounter = new byte[] { 0xa7, 0xb1, 0xcb, 0xcd, 0xaa, 0xc5, 0xd3, 0xb5, 0x58, 0x51, 0x95, 0x2b, 0x33, 0xfd, 0xfe, 0xff }; SettingsAES_CTR settingsAES_CTR = new SettingsAES_CTR(initialCounter); SymmetricKeyAlgorithm skaAES_CTR = new SymmetricKeyAlgorithm(SymmetricEncryptionAlgorithm.AES_CTR, 256, settingsAES_CTR); string keyIdentifier = "primary"; PaymentCard paymentCard = new PaymentCard("Bank of Dragon", "Cool Dragon", "Debit", "0000000000001234", "111", "11/20", "05/33", "Super cool card I have here"); // Act PaymentCardSecret paymentCardSecret = new PaymentCardSecret(paymentCard, keyIdentifier, skaAES_CTR, derivedKey1); // Assert Assert.IsTrue(paymentCardSecret.CanBeDecryptedWithDerivedPassword(derivedKey1)); Assert.IsFalse(paymentCardSecret.CanBeDecryptedWithDerivedPassword(null)); Assert.IsFalse(paymentCardSecret.CanBeDecryptedWithDerivedPassword(new byte[] {})); Assert.IsFalse(paymentCardSecret.CanBeDecryptedWithDerivedPassword(derivedKey2)); }