public void Validate_Given_String_And_Hash_With_Given_Salt() { var givenString = new Fixture().Create <string>(); var hmac = new HMACSHA512(); var salt = hmac.Key; var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(givenString)); hmac.Dispose(); bool isValidHash = hashHelpers.CompareHash(givenString, salt, hash); isValidHash.Should().BeTrue(); }
public async Task <User> GetUserFromCredentials(string email, string password) { if (email == null) { throw new ArgumentNullException(nameof(email)); } if (password == null) { throw new ArgumentNullException(nameof(password)); } var user = await GetQueryable().AsNoTracking().SingleOrDefaultAsync(x => x.Email.ToLower().Equals(email.ToLower())); if (user == null) { throw new UserNotFoundException(); } var isPasswordValid = hashHelpers.CompareHash(password, user.PasswordSalt, user.PasswordHash); if (!isPasswordValid) { throw new InvalidUserPasswordException(); } return(user); }