public void GeneratorUsesDerivedKeyFactoryToCreateDigest( ) { // Set up IDerivedKeyFactory derivedKeyFactory = new Pbkdf2DerivedKeyFactory( 15000 ); IDerivedKeyFactory digestFactory = new Pbkdf2DerivedKeyFactory( 10000 ); PasswordMaterializer materializer = PasswordMaterializers.AlphaNumeric; PasswordGenerator generator = new PasswordGenerator( derivedKeyFactory, digestFactory, materializer, 32 ); // Exercise DerivedPassword derived = generator.Derive( new PasswordRequest( "abcd", "1234".ToSecureString( ), 1, PasswordGenerators.LegacyFull ) ); // Verify byte[ ] expectedHash = digestFactory.DeriveKey( PasswordGenerator.DigestSalt, Encoding.UTF8.GetBytes( derived.Password ), 1, 32 ); PasswordDigest expectedDigest = new PasswordDigest( "abcd", expectedHash, 1, PasswordGenerators.LegacyFull ); Assert.That( derived.Digest, Is.EqualTo( expectedDigest ) ); }
public void GenerateSamplePasswordAndDigestWithAlphanumeric( ) { // Setup // Exercise var generatedPassword = _engine.Derive( new PasswordRequest( Key, Password.ToSecureString( ), 1, PasswordGenerators.LegacyAlphaNumeric ) ); // Verify Assert.That( generatedPassword.Password, Is.EqualTo( "deDYrBiXvMHN" ) ); PasswordDigest expectedDigest = new PasswordDigest( Key, new byte[ ] { 0x0E, 0x4A, 0xB3, 0xB3, 0xE5, 0xF6, 0x6F, 0xCF, 0x56, 0xCE, 0xE1, 0x14, 0x41, 0x0A, 0x2A, 0x5B, 0xDB, 0xC8, 0x72, 0xCC, 0xE3, 0x5D, 0x05, 0x3C, 0x20, 0x48, 0x2F, 0x75, 0x8A, 0xF7, 0x05, 0xC7, 0xF8, 0xC6, 0x7B, 0x54, 0x87, 0x25, 0xDC, 0xE0, 0xC4, 0x0F, 0x3F, 0x80, 0x71, 0x31, 0x2C, 0x19, 0xCA, 0x63, 0x29, 0xD9, 0x17, 0xFE, 0x42, 0x2B, 0x35, 0x8D, 0xC8, 0xF9, 0x46, 0x63, 0xF0, 0x58, }, 1, PasswordGenerators.LegacyAlphaNumeric ); Assert.That( generatedPassword.Digest, Is.EqualTo( expectedDigest ) ); }