Skip to content

Commit bb041aa

Browse files
authored
Merge pull request #188 from contentauth/cert-sanity-check
Add docs for preliminary check for trust list certs
2 parents d9cbcf2 + 0af1bfd commit bb041aa

File tree

1 file changed

+61
-3
lines changed

1 file changed

+61
-3
lines changed

docs/trust-list.mdx

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,68 @@ The [contentcredentials.org](https://contentcredentials.org/) site hosts the fol
2626
- **The temporary known anchor list** in https://contentcredentials.org/trust/anchors.pem contains the list of known anchor certificates. If an end-entity [certificate's chain](getting-started.mdx#signing-and-certificates) can be traced back to an anchor certificate on this list, the certificate is considered "known."
2727
- **The configuration file**, https://contentcredentials.org/trust/store.cfg, specifies the [Extended Key Usage (EKU)](https://datatracker.ietf.org/doc/html/rfc9336) values accepted for end-entity certificates. An end-entity certificate must have at least one of the EKUs in this list to be valid.
2828

29+
## Checking your certificate
30+
31+
Before requesting to [add your signing certificate to the known certificate list](#how-to-add-a-certificate-to-the-list), perform a preliminary check to ensure the certificate is configured properly.
32+
33+
### Prerequisites
34+
35+
The preliminary certificate check procedure below requires the following tools. You must install them if you haven't done so already:
36+
37+
- [jq](https://jqlang.org/), a lightweight and flexible command-line JSON processor. On macOS, if you have [Homebrew](https://brew.sh/), you can install jq by entering `brew install jq`.
38+
- [OpenSSL](https://www.openssl.org/), a cryptographic software library and CLI. It's installed on many systems such as macOS (but make sure you have a recent version). If OpenSSL is not installed on your system, see the [list of unofficial binary distributions](https://wiki.openssl.org/index.php/Binaries).
39+
- [C2PA Tool](c2patool/readme.md), the command line tool for working with C2PA manifests and media assets.
40+
41+
### Procedure
42+
43+
:::note
44+
In the example commands given below, `cert.pem` is your certificate file.
45+
:::
46+
47+
Check your certificate by following these steps:
48+
49+
1. **Ensure that signing with the certificate doesn't have any validation errors** by using a C2PA Tool command like this:
50+
51+
```
52+
c2patool ./image.jpg trust --allowed_list ./cert.pem
53+
```
54+
55+
Confirm that the result does not contain a `validation_status` field, which indicates an error.
56+
57+
1. **Confirm that the `signature_info.issuer` field in the manifest is correct**. This field determines what [Verify displays for the organization name](verify.mdx#title-and-signing-information) after "Issued by ...". Use a C2PA Tool command like this:
58+
59+
```
60+
c2patool ./image.jpg trust --allowed_list ./cert.pem \
61+
| jq --args '.manifests[].signature_info.issuer'
62+
```
63+
64+
The response should be something like this:
65+
66+
```
67+
"XYZ Inc."
68+
```
69+
70+
Where "XYZ Inc." is the name of your organization.
71+
72+
1. **Use `openssl` to perform basic verification of the certificate** you're submitting; for example:
73+
74+
```
75+
openssl x509 -noout -text -in 'cert.pem' | grep 'Subject:'
76+
```
77+
78+
Example response:
79+
80+
```
81+
Subject: organizationIdentifier=XYZ-7155227, C=US, ST=Delaware, L=Dover, O=Whatever Inc., SN=xxx, GN=xxx, CN=xxx
82+
```
83+
2984
## Using the known certificate list
3085

3186
You can use the C2PA Tool or the CAI JavaScript library to determine whether a certificate is on the temporary known certificate list.
3287

3388
### Using with C2PA Tool
3489

35-
The [C2PA Tool documentation](c2patool/readme.md#configuring-trust-support) explains how to use the temporary known certificate list with the tool.
90+
The [C2PA Tool documentation](c2patool/docs/usage.md#configuring-trust-support) explains how to use the temporary known certificate list with the tool.
3691

3792
### Using with the JavaScript library
3893

@@ -84,6 +139,9 @@ This code is for illustration purposes only. To ensure acceptable performance, p
84139

85140
## How to add a certificate to the list
86141

87-
If you have an application that is in production and publicly available, you can request to add its signing certificate to the temporary known certificate list: Simply email `[email protected]`.
142+
If you have an application that is in production and publicly available, you can request to add its signing certificate to the temporary known certificate list.
143+
144+
Follow these steps:
88145

89-
We will review your request, and if it is approved, we'll ask for more details. Once we receive them and deploy the change, you will receive a confirmation email.
146+
1. [**Do a preliminary check of your certificate**](#checking-your-certificate) to ensure it meets the requirements for C2PA signing certificates and to be in the Verify temporary certificate list.
147+
1. **Submit your request** by emailing `[email protected]`. We will review your request, and if it is approved, we'll ask for more details. Once we receive them and deploy the update to the trust list, you will receive a confirmation email.

0 commit comments

Comments
 (0)