public void CryptographicService_GenerateSalt_ReturnsCorrectLength(int length)
        {
            string salt = _cryptographicService.GenerateSalt(length);

            double expectedLength = ExpectedSaltLength(length);

            Assert.AreEqual(expectedLength, salt.Length);
        }
Exemplo n.º 2
0
        public async Task <string> RegistrateAsync(string username, string password)
        {
            if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password) || username.Length < 4 || password.Length < 8)
            {
                throw new UsernameOrPasswordInvalidException();
            }

            var user = await _userRepository.Get(data => data.Username == username);

            var singleUser = user?.FirstOrDefault();

            if (singleUser != null)
            {
                throw new UsernameTakenException();
            }

            var salt = _cryptographicService.GenerateSalt();
            var hash = _cryptographicService.GenerateHash(password, salt);

            var userData = new UserData
            {
                Username     = username,
                PasswordSalt = salt,
                PasswordHash = hash
            };

            await _userRepository.Create(userData);

            await _unitOfWork.Save();

            var createdUsers = await _userRepository.Get(userEntity => userEntity.Username == username);

            var createdUser = createdUsers?.FirstOrDefault();

            if (createdUser == null)
            {
                throw new RegistrationException();
            }

            var token = CreateJwtToken(createdUser.Id.ToString(), DateTime.Now.AddMinutes(30));

            return(token);
        }
Exemplo n.º 3
0
 private void SetPassword(UserAccount userAccount, string password)
 {
     userAccount.PasswordSalt = _cryptographicService.GenerateSalt();
     userAccount.PasswordHash = _cryptographicService.ComputeHash(password, userAccount.PasswordSalt);
 }