public async Task Can_sign_transaction() { //ARRANGE var privateKeys = new List <EncryptedString> { EncryptedString.Encrypt(MyPublicKey, MyPrivateKey.DecodeToString()), EncryptedString.Encrypt(MyPublicKey, MyPrivateKey2.DecodeToString()), }; var transactionId = new TransactionId("TransactionId"); var signedTransaction = "From.x01.To.x02.Amount.100.Signature.F1T2A100"; var client = PrepareClient <AppSettings>((options) => { Mock <IAddressGenerator> addressGenerator = new Mock <IAddressGenerator>(); Mock <ITransactionSigner> transactionSigner = new Mock <ITransactionSigner>(); transactionSigner.Setup(x => x.SignAsync(It.IsAny <IReadOnlyCollection <string> >(), It.IsAny <Base64String>())) .ReturnsAsync(new SignTransactionResponse(Base64String.Encode(signedTransaction), transactionId)); options.IntegrationName = $"{nameof(SignServiceClientTests)}+{nameof(Can_sign_transaction)}"; options.AddressGeneratorFactory = (context) => addressGenerator.Object; options.TransactionSignerFactory = (context) => transactionSigner.Object; }); //ACT var request = new SignTransactionRequest(privateKeys, Base64String.Encode(signedTransaction)); SignTransactionResponse result = await client.SignTransactionAsync(request); //ASSERT Assert.True(result != null); Assert.True(result.TransactionId == transactionId); Assert.True(result.SignedTransaction.DecodeToString() == signedTransaction); }
/// <exception cref="ErrorResponseException"/> /// <exception cref="UnknownResponseException"/> public async Task <SignedTransactionModel> SignTransactionAsync(SignRequestModel requestModel) { var request = new SignTransactionRequest(requestModel.PublicAddresses?.ToList(), requestModel.TransactionHex); var response = await _api.SignTransactionAsync(request); SignTransactionResponse signTransactionResponse = ConvertToOrHandleErrorResponse <SignTransactionResponse>(response); return(new SignedTransactionModel(signTransactionResponse.SignedTransaction)); }
public async Task <SignTransactionResponse> SignTransactionAsync( [FromRoute] string address, [FromBody] SignTransactionRequest request) { address = address.ToLowerInvariant(); var response = new SignTransactionResponse(); if (await _walletService.WalletExistsAsync(address)) { var rawTxHash = Convert.FromBase64String(request.RawTxHash); var(v, r, s) = await _walletService.SignTransactionAsync(address, rawTxHash); response.R = Convert.ToBase64String(r); response.S = Convert.ToBase64String(s); response.V = Convert.ToBase64String(v); } else { response.Error = SignTransactionError.WalletNotFound; } return(response); }