seal method

String seal(
  1. Map<String, Object?> data, {
  2. required String? principal,
  3. required String method,
  4. Object? request,
  5. DateTime? now,
})

Seal data for a retry of method by principal. request binds the state to the request's salient parameters (it is digested, not stored).

Implementation

String seal(
  Map<String, Object?> data, {
  required String? principal,
  required String method,
  Object? request,
  DateTime? now,
}) {
  final payload = utf8.encode(jsonEncode({
    'd': data,
    'p': principal,
    'm': method,
    'r': _digest(request),
    'e': (now ?? DateTime.now()).add(ttl).millisecondsSinceEpoch,
  }));
  final mac = _hmac.convert(payload).bytes;
  return '${base64Url.encode(payload)}.${base64Url.encode(mac)}';
}