Skip to content

Commit 25a6f0a

Browse files
committed
Start reorg and consolidation of signing docs
1 parent 626d70f commit 25a6f0a

File tree

4 files changed

+47
-32
lines changed

4 files changed

+47
-32
lines changed

docs/prod-cert.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
id: prod-cert
3-
title: Getting and using a signing certificate
3+
title: Getting and using a production certificate
44
---
55

66
## Overview
77

8-
For convenience, C2PA Tool, the Rust library, and the CAI prerelease libraries include one or more [test certificates](manifest/signing-manifests.md#test-certificates) and private keys for use during development, typically in the `tests/fixtures` directory. While these test certificates and keys are useful during development and testing, for production deployment you must use your own private key and certificate.
8+
For convenience, C2PA Tool, the Rust library, and the CAI prerelease libraries include one or more [test certificates](signing-certs.md#test-certificates) and private keys for use during development, typically in the `tests/fixtures` directory. While these test certificates and keys are useful during development and testing, for production deployment you must use your own private key and certificate.
99

1010
Certificates and private keys are often stored on a hardware security module (HSM), a physical device that attaches directly to a computer or server and is used to securely manage and perform operations on cryptographic keys. A Key Management Service (KMS) is software used to manage keys in a networked environment. A KMS can be connected to a HSM for extra security. For example, the [Python example application](c2pa-python-example/readme.md) uses [AWS KMS](https://aws.amazon.com/kms/).
1111

@@ -26,7 +26,7 @@ A CSR is just an unsigned certificate that's a template for the certificate that
2626
A CSR comprises a public key, as well as ["distinguished name" information](https://knowledge.digicert.com/general-information/what-is-a-distinguished-name) that identifies the individual or organization requesting the certificate. The distinguished name includes a common name, organization, city, state, country, and e-mail address. Not all of these fields are required and will vary depending with the assurance level of the desired certificate.
2727

2828
:::tip
29-
For the C2PA [Verify tool](https://verify.contentauthenticity.org/) to display your organization name in the Content Credentials, your CSR must include the "O" or Organization Name attribute in the distinguished name information. See [below](#organization-name) for details.
29+
For the C2PA [Verify tool](https://verify.contentauthenticity.org/) to display your organization name in the Content Credentials, your CSR must include the "O" or Organization Name attribute in the distinguished name information. See [below](#organization-name) for details.
3030
:::
3131

3232
You sign the CSR with your private key; this proves to the CA that you have control of the private key that corresponds to the public key included in the CSR. Once the requested information in a CSR passes a vetting process and domain control is established, the CA may sign the public key to indicate that it can be publicly trusted.

docs/signing-certs.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
id: signing-certs
3+
title: Signing and certificates
4+
---
5+
6+
TBD

docs/manifest/signing-manifests.md renamed to docs/signing-manifests.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
2-
id: signing-manifests
2+
id: sign-manifests
33
title: Signing manifests
44
---
55

66
:::tip
7-
Before reading this page, be sure to read [Getting started](../getting-started.mdx) so you'll have some basic background on public-key infrastructure (PKI) technology, certificates, and signing manifests.
7+
Before reading this page, be sure to read [Getting started](getting-started.mdx) so you'll have some basic background on public-key infrastructure (PKI) technology, certificates, and signing manifests.
88
:::
99

1010
## Overview
@@ -78,7 +78,7 @@ The information in this table is based on the [C2PA specification Trust Model se
7878
Here is an example of generating a C2PA-compliant set of credentials using [GlobalSign](http://globalsign.com/) certificate authority (CA).
7979

8080
:::note
81-
GlobalSign is just one of many CAs. For a list of some others, see [Getting started](../getting-started.mdx#getting-a-security-certificate).
81+
GlobalSign is just one of many CAs. For a list of some others, see [Getting started](getting-started.mdx#getting-a-security-certificate).
8282
:::note
8383

8484
Credential management is a complex topic and different for every organization. See [above](#overview) for links to best practices.
@@ -163,7 +163,7 @@ Certificate:
163163
.
164164
```
165165

166-
You now have all the needed information to configure C2PA Tool for manifest signing. Edit your [manifest store file](../c2patool/docs/manifest.md) to have the following content:
166+
You now have all the needed information to configure C2PA Tool for manifest signing. Edit your [manifest store file](./c2patool/docs/manifest.md) to have the following content:
167167

168168
```json
169169
"alg": "ps256",
@@ -173,7 +173,7 @@ You now have all the needed information to configure C2PA Tool for manifest sign
173173

174174
The `private_key` and `sign_cert` properties must be full paths to the key and certificate chain files generated above.
175175

176-
You can now use C2PA Tool [to add a manifest to an image or other asset file](../c2patool/docs/usage.md#adding-a-manifest-to-an-asset-file). The command will be something like this:
176+
You can now use C2PA Tool [to add a manifest to an image or other asset file](c2patool/docs/usage.md#adding-a-manifest-to-an-asset-file). The command will be something like this:
177177

178178
```
179179
c2patool -m my_manifest.json -o signed_image.jpg my_image.jpg
@@ -182,7 +182,7 @@ c2patool -m my_manifest.json -o signed_image.jpg my_image.jpg
182182
The example above uses the information in `my_manifest.json` to add a new manifest to output `signed_image.jpg` using source `my_image.jpg`. The manifest will be signed using the PS256 signature algorithm with private key `mykey.pem`. The manifest will contain the trust chain specified in `mycerts.pem`.
183183

184184
:::warning
185-
This example accesses the private key and certificate directly from the file system, which is fine during development, but in production may not be secure. Instead, in a production application, use a hardware security module (HSM) or a Key Management Service (KMS); for example as show in the [C2PA Python Example](../c2pa-python-example/readme.md).
185+
This example accesses the private key and certificate directly from the file system, which is fine during development, but in production may not be secure. Instead, in a production application, use a hardware security module (HSM) or a Key Management Service (KMS); for example as show in the [C2PA Python Example](c2pa-python-example/readme.md).
186186
:::
187187

188188
### Confirm it worked

sidebars.js

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ const sidebars = {
1212
link: { type: 'doc', id: 'getting-started' },
1313
collapsed: true,
1414
items: [
15+
{
16+
type: 'doc',
17+
label: 'FAQs',
18+
id: 'faqs',
19+
},
1520
{
1621
type: 'doc',
1722
id: 'verify',
@@ -40,10 +45,6 @@ const sidebars = {
4045
type: 'doc',
4146
id: 'manifest/manifest-validation',
4247
},
43-
{
44-
type: 'doc',
45-
id: 'manifest/signing-manifests',
46-
},
4748
{
4849
type: 'doc',
4950
id: 'manifest/manifest-examples',
@@ -60,7 +61,6 @@ const sidebars = {
6061
},
6162
],
6263
},
63-
6464
{
6565
type: 'category',
6666
label: 'C2PA Tool',
@@ -111,7 +111,6 @@ const sidebars = {
111111
collapsed: true,
112112
items: jsSdkSidebar.docs,
113113
},
114-
115114
{
116115
type: 'category',
117116
label: 'Prerelease libraries',
@@ -209,7 +208,6 @@ const sidebars = {
209208
},
210209
],
211210
},
212-
213211
{
214212
type: 'category',
215213
label: 'Rust library',
@@ -249,19 +247,22 @@ const sidebars = {
249247
],
250248
},
251249
{
252-
type: 'doc',
253-
label: 'Getting and using a certificate',
254-
id: 'prod-cert',
255-
},
256-
{
257-
type: 'doc',
258-
label: 'FAQs',
259-
id: 'faqs',
260-
},
261-
{
262-
type: 'doc',
263-
label: 'Community resources',
264-
id: 'community-resources',
250+
type: 'category',
251+
label: 'Signing and certificates',
252+
link: { type: 'doc', id: 'signing-certs' },
253+
collapsed: true,
254+
items: [
255+
{
256+
type: 'doc',
257+
label: 'Signing manifests',
258+
id: 'sign-manifests',
259+
},
260+
{
261+
type: 'doc',
262+
label: 'Using a certificate in production',
263+
id: 'prod-cert',
264+
},
265+
],
265266
},
266267
{
267268
type: 'category',
@@ -325,9 +326,17 @@ const sidebars = {
325326
],
326327
},
327328
{
328-
type: 'doc',
329-
label: 'Task planning & roadmap',
330-
id: 'roadmap',
329+
type: 'category',
330+
label: 'Community resources',
331+
link: { type: 'doc', id: 'community-resources' },
332+
collapsed: true,
333+
items: [
334+
{
335+
type: 'doc',
336+
label: 'Task planning & roadmap',
337+
id: 'roadmap',
338+
},
339+
],
331340
},
332341
],
333342
};

0 commit comments

Comments
 (0)