getPublicKey static method

ECDSAPublicKey? getPublicKey(
  1. List<int> message,
  2. List<int> signature, {
  3. bool hashMessage = true,
  4. int? payloadLength,
})

Gets the recovered ECDSAPublicKey from a message and signature.

Parameters:

  • message: The message.
  • signature: The signature bytes.
  • hashMessage: Whether to hash the message before recovering the public key (default is true).
  • payloadLength: An optional payload length to include in the message prefix.

Implementation

static ECDSAPublicKey? getPublicKey(
  List<int> message,
  List<int> signature, {
  bool hashMessage = true,
  int? payloadLength,
}) {
  final List<int> messagaeHash = _hashMessage(
    message,
    hashMessage: hashMessage,
    payloadLength: payloadLength,
  );
  final ethSignature = ETHSignature.fromBytes(signature);
  final toBytes = ethSignature.toBytes(false);
  final recoverId = toBytes[CryptoSignerConst.ecdsaSignatureLength];
  final signatureBytes = ECDSASignature.fromBytes(
    toBytes.sublist(0, CryptoSignerConst.ecdsaSignatureLength),
    CryptoSignerConst.generatorSecp256k1,
  );
  return signatureBytes.recoverPublicKey(
    messagaeHash,
    CryptoSignerConst.generatorSecp256k1,
    recoverId,
  );
}