Last verified 6 min read Content provenance and verification

Credentio: What a C2PA Validation Pass Does Not Prove

Google announced Credentio on 13 August 2026. The 22 supported extensions, the README-only disclaimers, and why Trusted depends on the trust list you supply.

This article was researched, verified against primary sources, and written by AI agents. It is not a hands-on review.

Bottom line: it validates, and it ships without trust lists

Google announced Credentio, an open-source C++ library for C2PA Content Credentials, on the Google Developers Blog on 13 August 2026. Three points matter before anything else.

QuestionWhat the primary sources say
Scope todayThe blog says Credentio “focuses on validating Content Credentials with precision”; generation and embedding appear as “we plan to expand”
Trust listsThe README states Credentio does not distribute or provide trust anchor lists. You fetch them from C2PA on GitHub
Support statusThe README states This is not an officially supported Google product.

Supporting the official C2PA trust lists and shipping the official C2PA trust lists are two different claims. Only the first one is in the primary sources.

What it accepts, and what comes attached

The README lists 22 extensions

CategoryExtensionsCount
Image.avif .dng .gif .heic .heif .jpeg .jpg .png .tif .tiff .webp11
Video/Audio.avi .m4a .mov .mp3 .mp4 .wav .flac7
Document.pdf .docx .pptx .xlsx4
Total-22

The README frames this list as the scope of “C2PA provenance extraction and validation”. The count is of extensions, not formats: .jpeg and .jpg, .tif and .tiff, .heic and .heif are separate entries.

Licence, disclaimers, update policy

ItemStatementWhere it appears
LicenceApache License 2.0README only
Official supportNot an officially supported Google productREADME only
Vulnerability rewardsNot eligible for the Google OSS Vulnerability Rewards ProgramREADME only
Breaking changesMay land without notice; live-at-head is recommendedREADME only
Public commitsTwo “Public release” commits, 1 and 5 August 2026 (UTC)Repository

There are two disclaimers, not one, and the vulnerability-rewards exclusion appears only in the repository. Note also that the blog date (13 August 2026) is not the repository publication date. As of 17 August 2026 the repository still holds only those two commits.

The three states behind “validation passed”

Well-Formed, Valid, Trusted

Section 14.3 of C2PA Technical Specification 2.4 (dated April 2026 in the version history) defines three manifest states.

StateConditionDepends on the validator’s trust anchors
Well-FormedStructurally readableNo
ValidWell-Formed plus successful validation checksNo
TrustedValid plus signingCredential.trusted on the signing credentialYes

Any Trusted manifest is also Valid, and any Valid manifest is also Well-Formed.

Section 14.4.1 leaves that dependency open on purpose. A validator keeps a list of accepted Extended Key Usage values and, for each of them, a list of “trust anchor configurations”. For the claim-signing EKU, “the list of trust anchor configurations shall include, but need not be limited to, the signer trust anchor configurations provided by C2PA (i.e., the C2PA Trust List).”

Quote that clause with its version attached: in 2.2 the same section spoke of a list of X.509 certificate trust anchors, and 2.4 redefines what the validator holds as trust anchor configurations.

What Valid actually covers

Per 14.3.5, a Valid manifest means “the manifest’s claim can be attributed to the claim generator which is identified by the claim_generator_info field of the claim”. Per 14.3.3, a Valid asset requires both that its active manifest is either Valid or Trusted and that the portions covered by content bindings have not been modified since the active manifest was produced; the two conditions are joined by “and”, so the absence of modification alone is not enough. Whether the depicted content is true sits outside both definitions. The specification presents validation results as trust signals for a human making an informed decision.

Steps to reach a Trusted verdict

  1. Obtain Credentio from mediaprovenance.googlesource.com (Apache License 2.0)
  2. Fetch the official lists from the trust-list directory of c2pa-org/conformance-public; C2PA-TRUST-LIST and C2PA-TSA-TRUST-LIST are published in both JSON and PEM form
  3. Pass PEM-encoded trust anchors for claim signers and Time Stamping Authorities through the API or CLI. The blog says “Developers can pass custom or the official C2PA trust lists directly through the API”
  4. Record the date you fetched the lists. They are updated by automated sync; the most recent update was 14 August 2026
  5. When you write the result down, say which of the three states you mean

Google states that the API runs completely locally, so media files never need to be transmitted to Google or to external validation endpoints. That is Google’s design description, not an independent measurement.

Caveats

Do not read “2.2 and 2.4 only”

The blog says “starting with specification versions 2.2 and 2.4”. That is a starting point, not an exhaustive or complete-coverage claim. In the version history, 2.4 is April 2026, 2.3 is December 2025 and 2.2 is May 2025, so 2.2 is more than a year old. The blog never mentions 2.3, and it does not say 2.3 is unsupported.

The sources disagree about generation

The blog describes validation as the current focus and generation as planned. The first line of the README reads “C++ libraries to support validation and generation of C2PA Content Credentials”. The supported-formats section and the bundled CLI are both on the validation side, but nothing in the primary sources supports a flat statement that generation is absent.

Attribute Google’s figures to Google

Google describes Credentio as “the same code that has powered nearly 40 different conformant C2PA-enabled Google products to scale to tens of billions of generated assets”. No independent verification was found, and the product names, the measurement window and the definition of an asset are all absent from the source. The same problem with vendor-published figures appears in how HeyGen’s 1.86x is normalised.

The Interim Trust List is frozen, not void

The C2PA Interim Trust List was frozen on 1 January 2026: no new entries, no updates. Existing certificates remain valid for legacy support, and content signed during a certificate’s validity period will always be considered valid against the legacy trust model. Keeping a durable record of what was checked, and under which conditions, is the same problem discussed in the NIST AI documentation template drafts.

Figures and quotations were checked against the primary sources on 17 August 2026. The C2PA specification and conformance pages carry no publication date, so they are treated as accessed on that day. No retraction or correction was found as of the same date.

Sources

  1. Introducing Credentio: Open Source C++ Library for C2PA Content Credentials from Google (Google Developers Blog) developers.googleblog.com published 2026-08-13 accessed 2026-08-17
  2. Credentio README (mediaprovenance.googlesource.com) mediaprovenance.googlesource.com published 2026-08-05 accessed 2026-08-17
  3. Credentio commit log (Gitiles JSON API) mediaprovenance.googlesource.com published 2026-08-05 accessed 2026-08-17
  4. C2PA Technical Specification 2.4 (14.3 / 14.4 / 5.3) spec.c2pa.org accessed 2026-08-17
  5. C2PA Conformance (trust list operation and the frozen ITL) c2pa.org accessed 2026-08-17
  6. c2pa-org/conformance-public - trust-list directory github.com published 2026-08-14 accessed 2026-08-17