signTransaction method
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();
}