fromPayload static method
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(),
);
}