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 ) );
        }