public static void TestClone() { 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); V2KeyWrapHeaderBlock clone = (V2KeyWrapHeaderBlock)header.Clone(); Assert.That(header.GetDataBlockBytes(), Is.EquivalentTo(clone.GetDataBlockBytes())); }
public static void TestMasterIVWithWrongKeyEncryptingCrypto() { 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); header.SetDerivedKey(new V2Aes256CryptoFactory(), new V2DerivedKey(new Passphrase("another secret"), 256)); SymmetricIV iv = header.MasterIV; Assert.That(iv, Is.Null); }
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 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])); }
public void TestUnknownEncryptedHeader() { Headers headers = new Headers(); IDerivedKey key = new V2DerivedKey(new Passphrase("A key"), 256); headers.HeaderBlocks.Add(new PreambleHeaderBlock()); headers.HeaderBlocks.Add(new VersionHeaderBlock(new byte[] { 4, 0, 2, 0, 0 })); V2KeyWrapHeaderBlock wrapHeader = new V2KeyWrapHeaderBlock(new V2Aes256CryptoFactory(), key, 10); headers.HeaderBlocks.Add(wrapHeader); headers.HeaderBlocks.Add(new FileInfoEncryptedHeaderBlock(new byte[0])); headers.HeaderBlocks.Add(new V2CompressionEncryptedHeaderBlock(new byte[1])); headers.HeaderBlocks.Add(new V2UnicodeFileNameInfoEncryptedHeaderBlock(new byte[0])); headers.HeaderBlocks.Add(new UnknownEncryptedHeaderBlock(new byte[0])); headers.HeaderBlocks.Add(new DataHeaderBlock()); V2DocumentHeaders documentHeaders = new V2DocumentHeaders(wrapHeader); Assert.Throws <InternalErrorException>(() => documentHeaders.Load(headers)); }