verifyPersonalMessage method
Verifies a Tron signature of a personal message against the message digest.
Parameters:
message: The personal message.signature: The signature bytes.hashMessage: Whether to hash the message before verification (default is true).payloadLength: An optional payload length to include in the message prefix.useEthPrefix: Whether to use the Ethereum or Tron personal sign prefix (default is false).
Implementation
bool verifyPersonalMessage(
List<int> message,
List<int> signature, {
bool hashMessage = true,
int? payloadLength,
useEthPrefix = false,
}) {
if (hashMessage) {
String prefix =
useEthPrefix
? CryptoSignerConst.ethPersonalSignPrefix
: CryptoSignerConst.tronSignMessagePrefix;
prefix =
prefix + (payloadLength?.toString() ?? message.length.toString());
final prefixBytes = StringUtils.encode(
prefix,
type: StringEncoding.ascii,
);
message = QuickCrypto.keccack256Hash(<int>[...prefixBytes, ...message]);
}
if (signature.length > CryptoSignerConst.ecdsaSignatureLength) {
signature = signature.sublist(0, CryptoSignerConst.ecdsaSignatureLength);
}
return _verifyEcdsa(message, signature);
}