Beispiel #1
0
        public override async Task SignAsync(CeloTransactionChainId transaction)
        {
            var txMessage = new EthereumSignTx
            {
                Nonce     = transaction.Nonce,
                GasPrice  = transaction.GasPrice,
                GasLimit  = transaction.GasLimit,
                To        = transaction.ReceiveAddress,
                Value     = transaction.Value,
                AddressNs = GetPath(),
                ChainId   = (uint)new BigInteger(transaction.ChainId)
            };

            if (transaction.Data.Length > 0)
            {
                txMessage.DataInitialChunk = transaction.Data;
                txMessage.DataLength       = (uint)transaction.Data.Length;
            }

            var signature = await TrezorManager.SendMessageAsync <EthereumTxRequest, EthereumSignTx>(txMessage);

            if (signature.SignatureS == null || signature.SignatureR == null)
            {
                throw new Exception("Signing failure or not accepted");
            }
            transaction.SetSignature(EthECDSASignatureFactory.FromComponents(signature.SignatureR, signature.SignatureS, (byte)signature.SignatureV));
        }
Beispiel #2
0
 public override async Task SignAsync(CeloTransactionChainId transaction)
 {
     await SignHashTransactionAsync(transaction).ConfigureAwait(false);
 }