Skip to main content

Using the Verify tool

The C2PA Verify tool (often referred to as simply "Verify") is useful both for consumers and for CAI application developers.

How to use Verify

You can use Verify to inspect a digital asset file in two ways:

Supported asset file types include:

  • Image: AVIF, DNG, HEIC, HEIF, JPEG, PNG, SVG, TIFF, and WebP.
  • Video and audio: AVI, M4A, MOV, MP3, MP4, and WAV.
  • Document: PDF.
tip

Verify shows the complete current list of supported file types (when no asset is displayed on the page).

Uploading an asset

Click Select a file from your device then use the native picker or drag and drop a file to upload it and display information from the associated Content Credentials (if any) such as the author, the tools used to create the asset, and so on.

Using an asset URL

You can also display Content Credentials for an asset with a publicly-visible URL by using a URL with the following format:

https://contentcredentials.org/verify?source=<ASSET_URL>

where <ASSET_URL> is the URL of the asset.

For example: https://contentcredentials.org/verify?source=https://c2pa.org/public-testfiles/image/jpeg/adobe-20220124-CICA.jpg

note

To use Verify on an asset URL, the URL must not require any authentication and the hosting server must allow cross-origin resource sharing (CORS) in the Access-Control-Allow-Origin HTTP response header.

C2PA test files

The C2PA public-testfiles repository contains image files that demonstrate Content Credentials, including multiple ingredients, Exif metadata, and various error conditions, along with links to inspect the assets using Verify and to view the corresponding manifest reports from the C2PA Tool.

Currently, most of the asset files in the repository are JPEG images, but a few PDF and video test files are also available.

Information Verify displays

Once you've uploaded an asset or entered an asset URL, if the asset:

  • Does not have an associated manifest store, Verify displays the message No Content Credential.
  • Does have an associated manifest store, Verify displays information from it in the three vertical panels, for example as shown below.
Left panel ↑ Center panel ↑Right panel ↑
Shows the asset name from the title property in the active manifest (may not be the same as the file name) and a thumbnail image.

Cick Search for possible matches to search the Adobe Content Credentials Cloud for similar content; see Searching for matching Content Credentials for more information.
Shows all the asset's ingredients in a tree-like layout.
  • Click on an ingredient thumbnail to inspect its Content Credentials in the right panel.
  • Click Compare to compare ingredients either side-by-side or using a slider.
You can zoom in and out in this view using the mouse wheel or trackpad and pan by dragging.

NOTE: The example above shows only one ingredient.
Shows information from the asset's manifest store, as described below:
  • Title and signing information
  • Credit and usage
  • Process
  • About this Content Credential
  • Camera capture details

Title and signing information

The top of the right panel displays a thumbnail of the image with the title of the asset from the title property in the active manifest. The value of this property may not be the same as the file name. For example:

The manifest store for the above example contains the following title property:

 "manifests": {
"adobe:urn:uuid:f2513d23-8ca4-4135-82e8-15344e800ca6": {
"claim_generator": "Adobe_Stock c2pa-rs/0.4.2",
"title": "AdobeStock_135017891.jpeg",
...
}
}

The issuer and time of the claim signature are based on the signature_info property's issuer and time in the active manifest, as shown in the snippet below. The date is converted from UTC to the local time zone.

"signature_info": {
"issuer": "Adobe Inc.",
"cert_serial_number": "121561926467332750920512530884092488196",
"time": "2022-10-26T16:46:46+00:00"
},
note

If the issuer string is too long, then the date may be truncated or may not be shown at all. If so, refer to the About this Content Credential section for the full date.

Credit and usage

The Credit and usage section displays information about the asset's author and usage rights, divided into the following subsections:

Produced by

The Produced by subsection shows information derived from the CreativeWork assertion in the active manifest. If the associated data object has an author property, then the name property is shown under Produced by. If there is a url or license property, then it says Website with a link to the site. For example:

The above example shows the following CreativeWork assertion from the active manifest. The url property is the URL of the asset on the Adobe Stock site:

"assertions": [
{
"label": "stds.schema-org.CreativeWork",
"data": {
"@context": "https://schema.org",
"@type": "CreativeWork",
"url": "https://stock.adobe.com/135017891"
},
"kind": "Json"
},
...]

Social media accounts

If the asset was created with Adobe Photoshop or Adobe Lightroom and the asset's creator has connected social media accounts, then the Credit and usage section shows the information added for any connected accounts, which can include Behance, Instagram, LinkedIn, and X (Twitter).

For more information, see:

For example:

The CreativeWork assertion from the JSON manifest for the above example is shown below.

Show manifest code
{
"label": "stds.schema-org.CreativeWork",
"data": {
"@context": "https://schema.org",
"@type": "CreativeWork",
"author": [
{
"@type": "Person",
"credential": [
{
"alg": "sha256",
"hash": "IcZeS318070nuvDYmPqfQdZmOI7jGumMjHTxNshA2ao=",
"url": "self#jumbf=/c2pa/adobe:urn:uuid:4fd5a284-6fe9-479c-a8af-9bcbbf851d92/c2pa.credentials/did:adobe:ff76b2edfcdb600facacd7a165172c2aecc07718233798ed61bd3a9f4eba0969e"
}
],
"identifier": "did:adobe:ff76b2edfcdb600facacd7a165172c2aecc07718233798ed61bd3a9f4eba0969e",
"name": "obidigbo nzeribe"
},
{
"@id": "https://www.instagram.com/obidinzeribe",
"@type": "Person",
"credential": [
{
"alg": "sha256",
"hash": "IcZeS318070nuvDYmPqfQdZmOI7jGumMjHTxNshA2ao=",
"url": "self#jumbf=/c2pa/adobe:urn:uuid:4fd5a284-6fe9-479c-a8af-9bcbbf851d92/c2pa.credentials/did:adobe:ff76b2edfcdb600facacd7a165172c2aecc07718233798ed61bd3a9f4eba0969e"
}
],
"identifier": "did:adobe:ff76b2edfcdb600facacd7a165172c2aecc07718233798ed61bd3a9f4eba0969e",
"name": "obidinzeribe"
},
{
"@id": "https://www.behance.net/obidigbonzeribe",
"@type": "Person",
"credential": [
{
"alg": "sha256",
"hash": "IcZeS318070nuvDYmPqfQdZmOI7jGumMjHTxNshA2ao=",
"url": "self#jumbf=/c2pa/adobe:urn:uuid:4fd5a284-6fe9-479c-a8af-9bcbbf851d92/c2pa.credentials/did:adobe:ff76b2edfcdb600facacd7a165172c2aecc07718233798ed61bd3a9f4eba0969e"
}
],
"identifier": "did:adobe:ff76b2edfcdb600facacd7a165172c2aecc07718233798ed61bd3a9f4eba0969e",
"name": "obidigbo nzeribe"
}
]
},
"kind": "Json"
}

AI model usage

If the active manifest contains a do not train assertion, then the Credit and usage section displays the following message:

AI model usage
Do not use my content to train AI models

Process

The Process section displays information about the process used to create the asset, divided into the following subsections:

For example:

See the above example yourself, based on a C2PA test image:

App or device used

The value shown for App or device used is derived from the claim_generator property in the active manifest. The string is truncated at the first space character and then underscore and slash characters are converted to spaces. In the above example, "claim_generator": "make_test_images/0.16.1 c2pa-rs/0.16.1" is displayed as make test images 0.16.1.

Actions

The Actions subsection lists actions in the active manifest. For example, here is the actions array for the above example:

Show manifest code
"actions": [
{
"action": "c2pa.opened",
"instanceId": "xmp.iid:813ee422-9736-4cdc-9be6-4e35ed8e41cb",
"parameters": {
"ingredient": {
"hash": "tTBD4/E0R0AjLUdJFpsVz3lE/KJUq22Vz0UGqzhEpVs=",
"url": "self#jumbf=c2pa.assertions/c2pa.ingredient"
}
}
},
{
"action": "c2pa.color_adjustments",
"parameters": {
"name": "brightnesscontrast"
}
},
{
"action": "c2pa.placed",
"instanceId": "xmp.iid:8a00de7a-e694-43b2-a7e6-ed950421a21a",
"parameters": {
"ingredient": {
"hash": "EMeeY5a+lvy1msl+9i5DOcOoeQowrqD7NyV0d8fwAX0=",
"url": "self#jumbf=c2pa.assertions/c2pa.ingredient__1"
}
}
},
{
"action": "c2pa.resized"
}
]

Ingredients

Ingredients shows the resources used to create the asset, derived from the ingredients array in the active manifest. A thumbnail image is shown for each ingredient, if applicable. If an ingredient itself had Content Credentials, the "cr" icon is shown next to the thumbnail. In the above example, the asset was created by combining two ingredients, CAI.jpg and A.jpg, the first of which had Content Credentials.

AI-generated content

If one or more of the asset's ingredients was generated by artificial intelligence, as specified by the generative AI action, then a Content summary is shown and the Process section will also show the AI tool used, as shown in the example above.

About this Content Credential

This section displays the same information as described in Title and singing information.

Camera capture details

If the active manifest includes Exif metadata assertions, then an additional Camera capture details section shows information about the device used to create the asset, as illustrated below:

The Exif metadata assertions from the JSON manifest for the above example is shown below:

Show manifest code
"assertions": [
{
"label": "com.truepic.libc2pa",
"data": {
"git_hash": "023bb51",
"lib_name": "Truepic C2PA C++ Library",
"lib_version": "2.5.1",
"target_spec_version": "1.2"
},
"kind": "Json"
},
{
"label": "stds.exif",
"data": {
"@context": {
"EXIF": "http://ns.adobe.com/EXIF/1.0/",
"EXIFEX": "http://cipa.jp/EXIF/2.32/",
"dc": "http://purl.org/dc/elements/1.1/",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"tiff": "http://ns.adobe.com/tiff/1.0/",
"xmp": "http://ns.adobe.com/xap/1.0/"
},
"EXIF:GPSAltitude": "123.5",
"EXIF:GPSHorizontalAccuracy": "16.4",
"EXIF:GPSLatitude": "43.152093900000",
"EXIF:GPSLongitude": "-77.580532800000",
"EXIF:GPSTimeStamp": "2023-02-12T18:44:26Z"
},
"kind": "Json"
},
{
"label": "stds.exif",
"data": {
"@context": {
"EXIF": "http://ns.adobe.com/EXIF/1.0/",
"EXIFEX": "http://cipa.jp/EXIF/2.32/",
"dc": "http://purl.org/dc/elements/1.1/",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"tiff": "http://ns.adobe.com/tiff/1.0/",
"xmp": "http://ns.adobe.com/xap/1.0/"
},
"EXIF:Make": "Google",
"EXIF:Model": "Pixel 5"
},
"instance": 1,
"kind": "Json"
},
{
"label": "stds.exif",
"data": {
"@context": {
"EXIF": "http://ns.adobe.com/EXIF/1.0/",
"EXIFEX": "http://cipa.jp/EXIF/2.32/",
"dc": "http://purl.org/dc/elements/1.1/",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"tiff": "http://ns.adobe.com/tiff/1.0/",
"xmp": "http://ns.adobe.com/xap/1.0/"
},
"EXIF:DateTimeOriginal": "2023-02-12T18:44:26Z"
},
"instance": 2,
"kind": "Json"
},
...
]

See the above example yourself, based on a C2PA test image:

Searching for matching Content Credentials

Adobe products can save manifest stores in the Adobe Content Credentials Cloud. Click Search for possible matches to search the Adobe Content Credentials Cloud for content similar to the asset's ingredients, as described in the Ingredients section above.