/// <inheritdoc /> public async Task <TUser> CheckCloudPasswordAsync(string password, CancellationToken cancellationToken = default(CancellationToken)) { Guard.That(password, nameof(password)).IsNotNullOrWhiteSpace(); var passwordBytes = Encoding.UTF8.GetBytes(password); var pwd = (TPassword)await RequestSender.SendRequestAsync(new RequestGetPassword(), cancellationToken).ConfigureAwait(false); var rv = pwd.CurrentSalt.Concat(passwordBytes).Concat(pwd.CurrentSalt); byte[] passwordHash; using (var sha = SHA256.Create()) { passwordHash = sha.ComputeHash(rv.ToArray()); } var request = new RequestCheckPassword { PasswordHash = passwordHash }; var result = (TAuthorization)await RequestSender.SendRequestAsync(request, cancellationToken).ConfigureAwait(false); var user = result.User.Is <TUser>(); await OnUserAuthenticated(user).ConfigureAwait(false); return(user); }
public async Task <TUser> MakeAuthWithPasswordAsync(TPassword password, string passwordStr) { var passwordBytes = Encoding.UTF8.GetBytes(passwordStr); var rv = password.CurrentSalt.Concat(passwordBytes).Concat(password.CurrentSalt); byte[] passwordHash; using (var sha = SHA256.Create()) { passwordHash = sha.ComputeHash(rv.ToArray()); } var request = new RequestCheckPassword { PasswordHash = passwordHash }; var result = (TAuthorization)await SenderService.SendRequestAsync(request).ConfigureAwait(false); var user = result.User.As <TUser>(); await OnUserAuthenticated(user).ConfigureAwait(false); return(user); }