Skip to content

Auto-generated claim thumbnails placed in gathered_assertions instead of created_assertions #2106

@erik-sv

Description

@erik-sv

Summary

The Builder places auto-generated claim thumbnails in gathered_assertions
rather than created_assertions. The claim generator creates these thumbnails,
so C2PA spec section 14.3 requires them in created_assertions.

Root Cause

sdk/src/builder.rs, line 1422 (v0.78.4):

// todo: add setting for created added thumbnails
add_assertion(&mut claim, &thumbnail, false)?;

The false argument routes the thumbnail through claim.add_assertion(),
which passes add_as_created_assertion=false to add_assertion_impl(). The
claim_assertion_type() function then falls through to Gathered unless the
caller has configured created_assertion_labels in their settings.

Spec Reference

C2PA Technical Specification v2.3, Section 14.3:

The created_assertions field SHALL contain references to all Assertions
that were created by the Claim Generator for this Claim.

The claim generator creates the thumbnail during signing. It is not gathered
from an ingredient or a prior manifest.

Fix

Change false to true:

add_assertion(&mut claim, &thumbnail, true)?;

This matches the existing behavior for c2pa.hash.data assertions, which are
already routed to created_assertions via the HASH_LABELS check in
claim_assertion_type().

Workaround

Consumers can set builder.created_assertion_labels to include
c2pa.thumbnail.claim in their Settings/Context configuration. This works but
requires every downstream caller to compensate for what should be the
library's default behavior. It also depends on the Context being properly
attached to the Claim, which has known inconsistencies with thread-local
settings.

Impact

Any C2PA Conformance Program Level 1 Generator Product submission that uses
c2pa-rs auto-thumbnail generation will have thumbnails in the wrong claim
field. The C2PA Conformance Program Administrator flagged this during our
submission review.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions