The Coalition for Content Provenance and Authenticity (C2PA) addresses the prevalence of misleading information online through the development of technical standards for certifying the source and history (or provenance) of media content. C2PA is a Joint Development Foundation project, formed through an alliance between Adobe, Arm, Intel, Microsoft and Truepic.
This Rust library for creating and inspecting C2PA data structures is created by Adobe and other contributors as part of our work on the Content Authenticity Initiative.
This project is in a "soft launch" state as of May 2022.
We have been using this crate as the foundation of our Content Authenticity Initiative-related products and services since late 2020, so we have considerable experience with this code ourselves.
That said, we spent most of that time focused on our own internal requirements. As we shift toward making this crate available for open usage, we're aware that there is quite a bit of work to do to create what we'd feel comfortable calling a 1.0 release. We've decided to err on the side of releasing earlier so that people can experiment with it and give us feedback.
We expect to do work on a number of areas in the next few months while we remain in prerelease (0.x) versions. Some broad categories of work (and thus things you might expect to change) are:
While in prerelease form, we'll increment the minor version number (0.x.0) when we make breaking API changes and we expect that this will happen with some frequency.
Add this to your Cargo.toml
:
toml
[dependencies]
c2pa = "0.7.2"
async_signer
enables signing via asynchronous services which require async
support.bmff
enables handling of BMFF file formats. Currently only MP4, M4A, and MOV are enabled for writing.file_io
enables manifest generation, signing via OpenSSL, and embedding manifests in various file formats.serialize_thumbnails
includes binary thumbnail data in the Serde serialization output.xmp_write
enables updating XMP on embed with the dcterms:provenance
field. (Requires xmp_toolkit.)This crate requires Rust version 1.58.0 or newer.
We have tested it on recent versions of the following operating systems:
We would welcome feedback on:
If you would like to contribute to this crate, please read our code of conduct and contribution guidelines.
The c2pa
crate is distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT.
Note that some components and dependent crates are licensed under different terms; please check the license terms for each crate and component for details.