You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/getting-started.mdx
+1-44Lines changed: 1 addition & 44 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -106,50 +106,7 @@ The [Creator Assertions Working Group (CAWG)](https://creator-assertions.github.
106
106
107
107
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.
108
108
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
-
<imgsrc={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
153
110
154
111
Once you've generated a manifest, you must attach it to the asset for it to be useful.
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
14
14
15
15
## What's in the SDK
16
16
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:
18
18
19
-
<imgsrc={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.
27
27
28
28
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).
29
29
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.
45
31
46
-
### Other language libraries
32
+
<imgsrc={cai_open_source}width="800" />
47
33
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
49
35
50
-
### Rust library
36
+
Applications can use the CAI SDK in several different ways:
51
37
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.
53
45
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).
55
47
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.
59
49
60
50
## Which tool is right for you?
61
51
@@ -67,7 +57,7 @@ import green_check from '../static/img/green_check.png';
Copy file name to clipboardExpand all lines: docs/js-sdk/getting-started/overview.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ import Deprecation from '../deprecation-notice.md';
7
7
8
8
<Deprecationname="deprecation" />
9
9
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.
Copy file name to clipboardExpand all lines: docs/signing/local-signing.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ Trust lists connect the end-entity certificate that signed a manifest back to th
13
13
14
14
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).
15
15
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.
17
17
18
18
:::warning Warning
19
19
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).
Copy file name to clipboardExpand all lines: docs/signing/test-certs.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ The CAI SDK does not allow you to use a self-signed certificate to sign a manife
7
7
8
8
For initial development and testing, the SDK provides example *test certificates* and private keys:
9
9
- 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.
11
11
12
12
:::warning Warning
13
13
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