signMessage method
Signs a message and returns the hex-encoded HMAC-SHA256 signature.
The signature covers:
messageId— prevents replay attacks with different IDssenderId— binds the signature to the sendertargetId— prevents retargetingpayload— covers the actual contentcreatedAt— prevents timestamp manipulation
Returns a 64-character lowercase hex string.
Implementation
String signMessage({
required String messageId,
required String senderId,
required String targetId,
required Uint8List payload,
required int createdAt,
}) {
final hmac = Hmac(sha256, _keyBytes);
final data = _buildSigningData(
messageId: messageId,
senderId: senderId,
targetId: targetId,
payload: payload,
createdAt: createdAt,
);
final digest = hmac.convert(data);
return digest.toString(); // hex string
}