Manifest JSON reference
The C2PA specification describes a manifest with a binary structure in JPEG universal metadata box format (JUMBF) that includes JSON as well as binary data for things like encryption keys and thumbnail images. Because the binary structure is hard to understand and program to, the SDK defines a JSON manifest structure that's a declarative language for representing and creating a binary manifest.
The JSON manifest is an abstract translation layer that's easier to understand than the binary format. It can describe everything in the underlying binary format except for binary data such as thumbnails that are included by a structure called a resource reference. To generate a binary manifest, the SDK assembles all the JSON objects, resource references, and ingredients defined, and then converts them into different assertions and other objects as required.
These JSON references are generated from the JSON schemas for ManifestDefinition and Reader objects (structs in Rust terminology):
- ManifestDefinition: Defines a manifest and builds a manifest store.
- Reader: Reads and validates a manifest.