signMessage method

List<int> signMessage({
  1. required List<int> message,
  2. bool hashMessage = true,
  3. String messagePrefix = BitcoinSignerUtils.signMessagePrefix,
  4. List<int> extraEntropy = const [],
})

Signs a message using Bitcoin's message signing format.

This method produces a compact ECDSA signature for a given message, following the Bitcoin Signed Message standard.

  • message: The raw message to be signed.
  • messagePrefix: The prefix used for Bitcoin's message signing.
  • extraEntropy: Optional extra entropy to modify the signature.

Implementation

List<int> signMessage(
    {required List<int> message,
    bool hashMessage = true,
    String messagePrefix = BitcoinSignerUtils.signMessagePrefix,
    List<int> extraEntropy = const []}) {
  List<int> messgaeHash = message;
  if (hashMessage) {
    messgaeHash = QuickCrypto.sha256Hash(
        BitcoinSignerUtils.magicMessage(message, messagePrefix));
  }
  final signature =
      _signingKey.sign(digest: messgaeHash, extraEntropy: extraEntropy);
  return [
    signature.item2 + 27,
    ...signature.item1.toBytes(BitcoinSignerUtils.baselen)
  ];
}