signTransaction method

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

Implementation

String signTransaction(String challengeTransaction, List<KeyPair> signers) {
  XdrTransactionEnvelope envelopeXdr =
      XdrTransactionEnvelope.fromEnvelopeXdrString(challengeTransaction);

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

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

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