public static void TestUnwrapMasterKeyAndIV256WithNonzeroRandomNumbers() { TypeMap.Register.Singleton <IRandomGenerator>(() => new FakeRandomGenerator()); IDerivedKey keyEncryptingKey = new V2DerivedKey(new Passphrase("secret"), new Salt(256), 100, 256); V2KeyWrapHeaderBlock header = new V2KeyWrapHeaderBlock(new V2Aes256CryptoFactory(), keyEncryptingKey, 125); SymmetricKey key = header.MasterKey; Assert.That(key.GetBytes(), Is.EquivalentTo(ByteSequence(key.GetBytes()[0], key.Size / 8))); SymmetricIV iv = header.MasterIV; Assert.That(iv.GetBytes(), Is.EquivalentTo(ByteSequence(iv.GetBytes()[0], iv.Length))); }
public static void TestMethods() { SymmetricIV zeroIV = SymmetricIV.Zero128; Assert.That(zeroIV.GetBytes(), Is.EquivalentTo(new byte[16]), "The IV 'zero' should consist of all zeros."); SymmetricIV iv = new SymmetricIV(new byte[16] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }); Assert.That(iv.GetBytes(), Is.EquivalentTo(new byte[16] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }), "An IV specified should consist of just those bytes."); iv = new SymmetricIV(128); Assert.That(iv.GetBytes(), Is.Not.EquivalentTo(new byte[16]), "A random iv will in practice never be all zeros."); }
public static void TestUnwrapMasterKeyAndIV256WithZeroRandomNumbers() { var mock = new Mock <IRandomGenerator>(); mock.Setup <byte[]>(x => x.Generate(It.IsAny <int>())).Returns <int>(v => new byte[v]); TypeMap.Register.Singleton <IRandomGenerator>(() => mock.Object); IDerivedKey keyEncryptingKey = new V2DerivedKey(new Passphrase("secret"), new Salt(256), 100, 256); V2KeyWrapHeaderBlock header = new V2KeyWrapHeaderBlock(new V2Aes256CryptoFactory(), keyEncryptingKey, 250); SymmetricKey key = header.MasterKey; Assert.That(key.GetBytes(), Is.EquivalentTo(new byte[32])); SymmetricIV iv = header.MasterIV; Assert.That(iv.GetBytes(), Is.EquivalentTo(new byte[16])); }