generateSignature static method
SignatureResult
generateSignature(
- Map<
String, dynamic> payload, - String secretKey, {
- HmacConfig config = const HmacConfig(),
Generate HMAC signature with timestamp and nonce for API authentication
payload - The JSON object to sign
secretKey - The secret key for HMAC generation
config - Optional configuration
Returns Result object containing timestamp, nonce, and signature
Example:
final result = HmacOperations.generateSignature(
{'property_id': 'PROP123', 'user_id': '456'},
'your-secret-key'
);
print(result.signature);
Implementation
static SignatureResult generateSignature(
Map<String, dynamic> payload,
String secretKey, {
HmacConfig config = const HmacConfig(),
}) {
try {
// Step 1: Validate Inputs
_validateInputs(payload, secretKey, config);
// Step 2: Generate Timestamp
final timestamp = _generateTimestamp(config);
// Step 3: Generate Nonce
final nonce = _generateNonce(config);
// Step 4: Create Signature Payload
final canonicalString = _createCanonicalString(
payload,
timestamp,
nonce,
config,
);
// Step 5: Generate HMAC Signature
final signature = _generateHmac(canonicalString, secretKey, config);
// Step 6: Return Result
return SignatureResult(
timestamp: timestamp,
nonce: nonce,
signature: signature,
algorithm: config.hashAlgorithm,
encoding: config.encoding,
canonicalString: canonicalString,
);
} catch (e) {
throw Exception(
'[HmacOperations.generateSignature] Failed to generate signature: $e\n'
'Context: ${jsonEncode({'payload': payload, 'configProvided': config})}',
);
}
}