sign method
Implementation
Eip7702Authorization sign(String privateKey) {
int nonce = signerNonce;
if (signerAddress == gasPayerAddress) nonce++;
// 1. RLP encode [chainId, address, nonce]
final items = [
intToBuffer(chainId), // chainId to bytes32
address.toLowerCase(), // address to lower case
intToBuffer(nonce), // nonce to bytes32
];
final rlpData =
Uint8List.fromList(EIP7702_MAGIC.toUint8List() + rlp.encode(items));
final hash = getKeccakDigest(rlpData);
final signature =
EcdaSignature.sign(hash.toStr(), privateKey.toUint8List());
return Eip7702Authorization(
chainId: chainId,
address: address,
gasPayerAddress: gasPayerAddress,
signerAddress: signerAddress,
signerNonce: nonce,
v: signature.v,
r: signature.r.toHex(),
s: signature.s.toHex());
}