signTransaction method

String signTransaction (
  1. String challengeTransaction,
  2. List<KeyPair> signers
)

Implementation

String signTransaction(String challengeTransaction, List<KeyPair> signers) {
  final String trans =
      checkNotNull(challengeTransaction, "transaction can not be null");
  checkNotNull(signers, "signers can not be null");

  XdrTransactionEnvelope envelopeXdr =
      XdrTransactionEnvelope.fromEnvelopeXdrString(trans);

  if (envelopeXdr.discriminant != XdrEnvelopeType.ENVELOPE_TYPE_TX) {
    throw ChallengeValidationError("Invalid transaction type");
  }

  final txHash =
      AbstractTransaction.fromEnvelopeXdr(envelopeXdr).hash(_network);

  List<XdrDecoratedSignature> signatures = List<XdrDecoratedSignature>();
  signatures.addAll(envelopeXdr.v1.signatures);
  for (KeyPair signer in signers) {
    signatures.add(signer.signDecorated(txHash));
  }
  envelopeXdr.v1.signatures = signatures;
  return envelopeXdr.toEnvelopeXdrBase64();
}