signTransaction method

String signTransaction (
  1. String challengeTransaction,
  2. KeyPair userKeyPair
)

Implementation

String signTransaction(String challengeTransaction, KeyPair userKeyPair) {
  final String trans =
      checkNotNull(challengeTransaction, "transaction can not be null");
  final KeyPair kp = checkNotNull(userKeyPair, "userKeyPair 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);
  signatures.add(kp.signDecorated(txHash));
  envelopeXdr.v1.signatures = signatures;
  return envelopeXdr.toEnvelopeXdrBase64();
}