private bool MasterPasswordMatches( SecureString masterPassword, PasswordDigestDocument password ) { PasswordRequest testRequest = new PasswordRequest( password.Key, masterPassword, password.Iteration, password.PasswordGenerator ); var testDigest = _passwordDerivationEngine.Derive( testRequest ).Digest; return testDigest.Equals( password.Digest ); }
private DerivedPassword DeriveInternal( PasswordRequest request, byte[ ] passwordBytes ) { byte[ ] derivedPasswordBytes = _derivedPasswordFactory.DeriveKey( GetBytes( request.Key ), passwordBytes, request.Iterations, _materializer.BytesNeeded ); string derivedPassword = _materializer.ToString( derivedPasswordBytes ); byte[ ] digestBytes = _digestFactory.DeriveKey( DigestSalt, GetBytes( derivedPassword ), 1, _digestLength ); return new DerivedPassword( derivedPassword, new PasswordDigest( request.Key, digestBytes, request.Iterations, request.PasswordGenerator ) ); }
public IDerivedPassword Derive( PasswordRequest request ) { return _generators[ request.PasswordGenerator ].Derive( request ); }
public DerivedPassword Derive( PasswordRequest request ) { return request.MasterPassword.ConsumeBytes( Encoding.UTF8, bytes => DeriveInternal( request, bytes ) ); }
public void DerivationEngineUsesSpecifiedPasswordGeneratorToProduce( ) { // Set up PasswordRequest request = new PasswordRequest( Key, Password.ToSecureString( ), 1, PasswordGenerators.LegacyFull ); // Exercise IDerivedPassword generatedPassword = _engine.Derive( request ); // Verify DerivedPassword expected = PasswordGenerators.Generators[ PasswordGenerators.LegacyFull ].Derive( request ); Assert.That( generatedPassword.Password, Is.EqualTo( expected.Password ) ); Assert.That( generatedPassword.Digest, Is.EqualTo( expected.Digest ) ); }