Skip to content

Commit bc50d45

Browse files
committed
Consolidate some stuff from GS and intro, Remove 'prerelease' everywhere, etc.
1 parent fd59ef0 commit bc50d45

File tree

6 files changed

+28
-87
lines changed

6 files changed

+28
-87
lines changed

docs/getting-started.mdx

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -106,50 +106,7 @@ The [Creator Assertions Working Group (CAWG)](https://creator-assertions.github.
106106

107107
In addition, Adobe tools can use the [Connected Accounts service](https://connected-accounts.adobe.com/) to connect social media accounts such as Behance, Instagram, or Twitter to an identity in a manifest. This service uses OAuth, so a user must be able to log in to an Adobe account to connect it.
108108

109-
## How to use the SDK
110-
111-
The CAI open-source SDK consist of:
112-
113-
- [**C2PA Tool**](c2patool/readme.md), a command-line tool for working with manifests and media. This tool is a wrapper around the Rust SDK and provides most of the same capabilities that it does.
114-
- [**JavaScript library**](c2pa-js) that enables web pages to verify and read manifest data using client JavaScript.
115-
- **[C/C++](c2pa-c/readme.md), [Python](c2pa-python/readme.md), [Node.js](c2pa-node/readme.md) libraries** that enable applications to read and validate manifest data, create and sign manifest data and embed it supported asset files.
116-
- [**Mobile libraries**](mobile.md) that enable mobile applications for iOS and Android to to read and generate manifest data.
117-
- [**The Rust library**](rust-sdk/readme.md) that generates the other language bindings and can also be used directly to read and generate manifest data.
118-
119-
C2PA Tool and language-specific libraries are built using the Rust library to ensure consistency.
120-
121-
The following diagram provides a high-level view of how to use the open-source CAI SDK.
122-
123-
<img src={cai_open_source} width="800" />
124-
125-
Applications can use the CAI SDK in several different ways:
126-
127-
- Web pages can use the JavaScript library to display Content Credentials.
128-
- Applications can "shell out" to call C2PA Tool directly, though doing so is not highly scalable.
129-
- Applications written in C++, Python, or Node.js can use the corresponding language libraries to:
130-
- Create, modify, and sign manifests.
131-
- Embed manifests into media files.
132-
- Parse and validate manifests.
133-
- Mobile apps can use the iOS and Android libraries do all the above.
134-
135-
Alternatively, native applications can use Rust's _Foreign Function Interface_ (FFI) to call functions in the Rust library. The FFI enables interoperability between Rust and code written in other languages. For example, a Windows application can use the FFI to call Rust functions from languages such as C++ or C#. For an example, see the [c2c2pa repository](https://github.com/contentauth/c2c2pa).
136-
137-
### Websites
138-
139-
A website can serve web pages that use the JavaScript library to display manifest data using client JavaScript.
140-
A server-side web application can create, modify, and sign claims (and view them) by:
141-
142-
- Executing a shell command to invoke C2PA Tool. For an example, see the [c2patool Node.js service example](c2pa-service-example). While this approach works, it is not highly scalable.
143-
- Use the [Node.js](c2pa-node), [Python](c2pa-python), or [C++/C](c2pa-c) libraries.
144-
- Bind to the Rust library and use it, similarly to native applications.
145-
146-
### Embedded applications
147-
148-
An embedded application can use the Rust FFI (foreign function interface) to call Rust functions from languages such as C or C++, similarly to a native application.
149-
150-
Embedded applications have unique constraints tied to the devices on which they run, including small memory footprint, low-powered hardware, intermittent network access, unique operating systems, or the lack of an operating system OS (running on bare metal). For these reasons, if you want to develop a CAI-enabled embedded application, please contact the CAI team directly.
151-
152-
## Attaching and storing the manifest
109+
## Attaching and storing manifest data
153110

154111
Once you've generated a manifest, you must attach it to the asset for it to be useful.
155112

docs/introduction.mdx

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ title: CAI open source SDK
44
---
55

66
import cr_pin from '../static/img/cr-pin.png';
7-
import cai_open_source_red from '../static/img/cai-open-source.jpg';
7+
import cai_open_source from '../static/img/cai-open-source.jpg';
88

99
:::tip
1010
You're strongly encouraged to read this introduction and [Getting started](getting-started.mdx) to give you some basic background and context, before you dive right into development. [Working with manifests](manifest/understanding.md) also has some crucial information, regardless of which language and library you use.
@@ -14,48 +14,38 @@ The Coalition for Content Provenance and Authenticity (C2PA) and Content Authent
1414

1515
## What's in the SDK
1616

17-
The CAI open-source SDK (software development kit) is a set of tools and libraries that enable developers to create, verify, and display Content Credentials based on C2PA standards.
17+
The CAI open-source SDK consist of:
1818

19-
<img src={cai_open_source_red} width="800" />
20-
21-
The CAI open-source SDK consists of:
22-
23-
- [C2PA Tool](#c2pa-tool): a command-line tool for working with C2PA manifests and media assets.
24-
- [The JavaScript library](#javascript-library) (also known as the JavaScript SDK): Client JavaScript library for code that runs, for example, in a web browser.
25-
- [Prerelease libraries](#prerelease-libraries) for Node.js, Python, and C++/C.
26-
- [The Rust library](#rust-library), which is the code that underlies everything else. It's the "source of truth" that all the other libraries use.
19+
- [**C2PA Tool**](c2patool/readme.md), a command-line tool for working with manifests and media. This tool is a wrapper around the Rust SDK and provides most of the same capabilities that it does. C2PA Tool can:
20+
- Read a JSON report of manifest data.
21+
- Attach a manifest store to an asset, if it doesn't already have an associated manifest store.
22+
- Add a manifest to to the associated manifest store if the asset does have an associated manifest store.
23+
- [**JavaScript library**](c2pa-js) that enables web pages to verify and read manifest data using client JavaScript. Use it to add user interface elements to your website that display manifest data while following the [C2PA user experience recommendations](https://c2pa.org/specifications/specifications/1.0/ux/UX_Recommendations.html).
24+
- **[C/C++](c2pa-c/readme.md), [Python](c2pa-python/readme.md), [Node.js](c2pa-node/readme.md) libraries** that enable applications to read and validate manifest data, create and sign manifest data and embed it supported asset files.
25+
- [**Mobile libraries**](mobile.md) that enable mobile applications for iOS and Android to to read and generate manifest data.
26+
- [**The Rust library**](rust-sdk/readme.md) that generates the other language bindings and can also be used directly to read and generate manifest data. The Rust library is the fundamental system underlying everything else.
2727

2828
To see a summary of what each tool and library can do, see [Which tool is right for you?](#which-tool-is-right-for-you).
2929

30-
### C2PA Tool
31-
32-
[C2PA Tool](c2patool/readme.md), is a **command-line utility for working with C2PA manifest data**. Use this tool to work with assets in a supported file format to:
33-
34-
- Read a JSON report of manifest data.
35-
- Attach a manifest store to an asset, if it doesn't already have an associated manifest store.
36-
- Add a manifest to to the associated manifest store if the asset does have an associated manifest store.
37-
38-
### JavaScript library
39-
40-
The client [JavaScript library](js-sdk/js-landing.md) enables **working with manifest data in the browser**. Use this library to:
41-
42-
- Verify and display manifest data on a website or web application.
43-
- Link manifest data displayed on your site to [Verify](https://verify.contentauthenticity.org/).
44-
- Easily add user interface elements to your website that display manifest data while following the [C2PA user experience recommendations](https://c2pa.org/specifications/specifications/1.0/ux/UX_Recommendations.html).
30+
The following diagram provides a high-level view of the SDK.
4531

46-
### Other language libraries
32+
<img src={cai_open_source} width="800" />
4733

48-
The [C++/C](c2pa-c/readme.md), [Python](c2pa-python/readme.md), and [Node.js](c2pa-node/readme.md) libraries enable applications written in those languages to **create, verify, and display Content Credentials**.
34+
## How to use the SDK
4935

50-
### Rust library
36+
Applications can use the CAI SDK in several different ways:
5137

52-
The [Rust library](rust-sdk/readme.md) enables **adding C2PA capabilities to a desktop, mobile, or embedded application**. The Rust library is the fundamental system underlying everything else. C2PA Tool uses it "under the hood" and language-specific APIs are generated from it.
38+
- Web pages can use the JavaScript library to display Content Credentials.
39+
- Applications can "shell out" to call C2PA Tool directly, though doing so is not highly scalable.
40+
- Applications written in C++, Python, or Node.js can use the corresponding language libraries to:
41+
- Create, modify, and sign manifests.
42+
- Embed manifests into media files.
43+
- Parse and validate manifests.
44+
- Mobile apps can use the iOS and Android libraries do all the above.
5345

54-
You can use the Rust library via the Foreign Function Interface (FFI) to:
46+
Native applications can also use Rust's _Foreign Function Interface_ (FFI) to call functions in the Rust library. The FFI enables interoperability between Rust and code written in other languages. For example, a Windows application can use the FFI to call Rust functions from languages such as C++ or C#. For an example, see the [c2c2pa repository](https://github.com/contentauth/c2c2pa).
5547

56-
- Create and sign C2PA claims and manifests.
57-
- Embed a manifest store into certain asset file formats.
58-
- Parse and validate manifests found in certain asset file formats.
48+
An embedded application can use the Rust FFI (foreign function interface) to call Rust functions from languages such as C or C++, similarly to a native application. Embedded applications have unique constraints tied to the devices on which they run, including small memory footprint, low-powered hardware, intermittent network access, unique operating systems, or the lack of an operating system OS (running on bare metal). For these reasons, if you want to develop a CAI-enabled embedded application, please contact the CAI team directly.
5949

6050
## Which tool is right for you?
6151

@@ -67,7 +57,7 @@ import green_check from '../static/img/green_check.png';
6757
<th style={{ textAlign: 'left' }}>Use To...</th>
6858
<th style={{ textAlign: 'left' }}>JavaScript Library </th>
6959
<th style={{ textAlign: 'left' }}>C2PA Tool</th>
70-
<th style={{ textAlign: 'left' }}>Prerelease Libraries </th>
60+
<th style={{ textAlign: 'left' }}>Python, C++, and Node.js Libraries </th>
7161
<th style={{ textAlign: 'left' }}>Rust Library</th>
7262
</tr>
7363
</thead>

docs/js-sdk/getting-started/overview.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Deprecation from '../deprecation-notice.md';
77

88
<Deprecation name="deprecation" />
99

10-
The CAI JavaScript library (sometimes referred to as the "JavaScript SDK") enables client JavaScript applications to view and verify [C2PA](https://c2pa.org/) data. It performs only **read** operations on C2PA manifests, unlike the [Rust library](../../rust-sdk/), and the [prerelease libraries](../../other-langs) which can both read and write manifests.
10+
The CAI JavaScript library (sometimes referred to as the "JavaScript SDK") enables client JavaScript applications to view and verify [C2PA](https://c2pa.org/) data. It performs only **read** operations on C2PA manifests.
1111

1212
## What you should already know
1313

docs/other-langs.mdx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@ title: Libraries for other programming languages
44
pagination_prev: null
55
---
66

7-
:::warning Warning
8-
These libraries are all early prerelease versions. They may have bugs and unimplemented features, and their APIs are subject to change.
9-
:::
10-
11-
The prerelease libraries enable applications written in each language to create, verify, and display content credentials:
12-
137
- [Node.js](c2pa-node/readme.md)
148
- [Python](c2pa-python/readme.md)
159
- [C++/C](c2pa-c/readme.md)

docs/signing/local-signing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Trust lists connect the end-entity certificate that signed a manifest back to th
1313

1414
The simplest way to add a C2PA manifest to an asset file and sign it is by using C2PA Tool (`c2patool`). You can run C2PA Tool manually from the command line (for example, during development) and more generally from any executable program that can call out to the shell, such as a Node.js application as shown in the [c2patool Node.js service example](../c2pa-node-example).
1515

16-
Similarly, using the Rust SDK, you can [add a manifest to an asset file](https://docs.rs/c2pa/latest/c2pa/#example-adding-a-manifest-to-a-file), referencing the certificate and private key file. The prerelease libraries for [Node.js](../c2pa-node), [Python](../c2pa-python), and [C++/C](../c2pa-c) can also add and sign a manifest.
16+
Similarly, using the Rust SDK, you can [add a manifest to an asset file](https://docs.rs/c2pa/latest/c2pa/#example-adding-a-manifest-to-a-file), referencing the certificate and private key file. The [Node.js](../c2pa-node), [Python](../c2pa-python), and [C++/C](../c2pa-c) libraries can also add and sign a manifest.
1717

1818
:::warning Warning
1919
Accessing a private key and certificate directly from the file system is fine during development, but doing so in production is not secure. Instead use a Key Management Service (KMS) or a hardware security module (HSM) to access the certificate and key; For more information, see [Using a certificate in production](prod-cert.mdx).

docs/signing/test-certs.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The CAI SDK does not allow you to use a self-signed certificate to sign a manife
77

88
For initial development and testing, the SDK provides example *test certificates* and private keys:
99
- The [Rust library `sdk/tests/fixtures/certs/` folder](https://github.com/contentauth/c2pa-rs/tree/main/sdk/tests/fixtures/certs) contains certificates and signing keys for many of the supported [signature types](get-cert.md#signature-types).
10-
- The prerelease libraries (Node.js, Python, and C++) provide a subset of test certificates in each repository's `tests/fixtures` folder. The Node.js library even provides a [`CreateTestSigner()`](https://github.com/contentauth/c2pa-node/blob/main/docs/README.md#createtestsigner) convenience function to create a local signer instance using the test certificate.
10+
- The Node.js, Python, and C++ libraries provide a subset of test certificates in each repository's `tests/fixtures` folder. The Node.js library even provides a [`CreateTestSigner()`](https://github.com/contentauth/c2pa-node/blob/main/docs/README.md#createtestsigner) convenience function to create a local signer instance using the test certificate.
1111

1212
:::warning Warning
1313
While these test credentials are useful during development, you must [get your own certificate](get-cert.md) and use your own private key for production deployment.

0 commit comments

Comments
 (0)