fromPayload static method

KeyPackage fromPayload(
  1. Object? payload, {
  2. required String enrollmentId,
  3. String? apkamId,
})

Parses a stored key-package payload (from metadata.keyPackage), injecting the enrollmentId / apkamId the enclosing verb structure carried. Skips malformed entries in keys rather than throwing — a payload written by a newer client may carry key entries (or extra fields) this version does not understand.

Throws FormatException if the fields this version requires are missing or of the wrong type.

Implementation

static KeyPackage fromPayload(
  Object? payload, {
  required String enrollmentId,
  String? apkamId,
}) {
  if (payload is! Map) {
    throw FormatException('KeyPackage: expected a Map, got $payload');
  }
  final v = payload['v'];
  final createdAt = payload['createdAt'];
  final keys = payload['keys'];
  if (v is! int || createdAt is! String || keys is! List) {
    throw FormatException('KeyPackage: malformed payload $payload');
  }
  return KeyPackage(
    v: v,
    enrollmentId: enrollmentId,
    apkamId: apkamId,
    createdAt: DateTime.parse(createdAt),
    keys: keys.map(PackageKey.fromJson).whereType<PackageKey>().toList(),
  );
}