public async Task <bool> Handle(IsCorrectPin2Query request, CancellationToken cancellationToken) { var card = await _context.Cards.FindAsync(_currentUser.CardId); if (card is null) { throw new EntityNotFoundException("Card", _currentUser.CardId); } return(_cardManager.VerifyPin2(card, request.Pin2)); }
public async Task <BinaryFile> Handle(SignHashCommand request, CancellationToken cancellationToken) { var card = await _context.Cards.FindAsync(_currentUser.CardId); if (card is null) { throw new EntityNotFoundException("Card", _currentUser.CardId); } if (!_cardManager.VerifyPin2(card, request.Pin2)) { throw new BadRequestException(new[] { "خطأ رمز PIN2 غير صحيح." }); } var citizen = await _context.CitizenDetails.FindAsync(_currentUser.CitizenId); if (citizen is null) { throw new EntityNotFoundException("Citizen", card.CitizenId); } var signature = _digitalSignatureService.SignHash(request.Base64Sha512DataHash, await _cryptoService.DecryptAsync(citizen.PrivateKey)); var s = citizen.Id + signature; var memory = new MemoryStream(); var writer = new StreamWriter(memory); await writer.WriteAsync(s); await writer.FlushAsync(); var name = Path.GetFileNameWithoutExtension(request.FileName) + ".sign"; var bytes = memory.ToArray(); return(new BinaryFile(name, bytes, bytes.Length, "text/plain")); }