The assertion
The receipt travels as an assertion whose label is the license server’sc2pa_assertion_label.
For the Talent API, the label is ai.reflections.license.
TLP-C2PA-1. A platform meeting a
c2pa_manifest obligation MUST add this assertion to the
output’s active manifest, the manifest whose claim the platform signs, with exactly the receipt
and verify_url the generation returned. It MUST NOT alter either value.
TLP-C2PA-2. The platform MUST sign the claim, as its claim generator, with its own C2PA signing
credential. The license server does not sign the manifest. The receipt inside the assertion carries
the license server’s own signature, so a verifier can check it independently of the claim
signature.
A platform that declares its claim-signing certificate’s thumbprint as c2pa_signer when it
submits the generation gets a receipt that names it as tlp.c2pa_signer
(TLP-RCP-15). A verifier then rejects a copy
of the assertion in a manifest that another certificate signed
(TLP-RCP-16). Without it, the assertion is
evidence of a decision, not of the file that carries it.
TLP-C2PA-3. In a C2PA 2.x claim, the platform SHOULD list the assertion among the claim’s
gathered assertions, because its content comes from the license server and not from the claim
generator.
The action
TLP-C2PA-4. The same manifest MUST contain ac2pa.actions assertion (label c2pa.actions.v2
in C2PA 2.x) with a c2pa.created action whose digitalSourceType is the IPTC value
http://cv.iptc.org/newscodes/digitalsourcetype/trainedAlgorithmicMedia.
Example (informative)
The assertions a platform adds for the line of speech Northlight generated in Maya Okafor’s voice, in the manifest definition format C2PA tools accept:c2pa field.
Order of operations
TLP-C2PA-5. A platform MUST submit the output to the generation check first, then embed the manifest, then deliver.artifact_sha256 in the receipt is the digest of the output as submitted,
before the manifest was embedded. After the generation check, a platform MUST NOT change the
output’s content, as opposed to its metadata.
Soft bindings
A soft binding identifies content by what it looks or sounds like rather than by its exact bytes, so it survives re-encoding. TLP uses two:
TLP-C2PA-6. A license server MUST answer a verification of a file by its exact digest first and
then by fingerprint, and MUST report which method matched and with what confidence. A platform that
applies a watermark SHOULD register it on the generation, and MAY also record it in a C2PA
c2pa.soft-binding assertion.
TLP-C2PA-7. A verifier MUST treat a verification result of not_found as no information about
whether the content is licensed.
What survives stripping
TLP-C2PA-8. A verifier holding a file with the assertion MUST verify the receipt
(TLP-RCP-5), its claim signer binding
(TLP-RCP-16), and the C2PA claim signature and bindings. The
claim binds the manifest to the file; the receipt binds the decision to the submitted output. A
verifier holding a file without the assertion MUST use a lookup, and MUST NOT treat a receipt it
found elsewhere as proof about the file unless a lookup relates them.
Related
Embed provenance
Writing the assertion and the disclosure label in practice.
C2PA assertion format
The
ai.reflections.license assertion in the Talent API.Verify content
Lookup by receipt, manifest, digest, fingerprint or file.
C2PA specifications
The C2PA technical specification.