コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }