c2pa-rs

A fork of https://github.com/contentauth/c2pa-rs/
git clone git://archive.git.mtrnord.blog/mtrnords-photography-manager/c2pa-rs.git
Log | Files | Refs | README

commit 26f9ed1395bc389f9967d762fe2e29cd415a0f47
parent ff293565bff377e9eef03624bc9503757a59c51e
Author: Rand McKinney <crandmck@yahoo.com>
Date:   Wed, 20 Jul 2022 14:19:02 -0700

(IGNORE) Update README (#86)


Diffstat:
MCODE_OF_CONDUCT.md | 12++++++------
MCONTRIBUTING.md | 35+++++++++++++++++++++++++++++------
MREADME.md | 77+++++++++++++++++++++++++++--------------------------------------------------
3 files changed, 62 insertions(+), 62 deletions(-)

diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md @@ -1,6 +1,6 @@ -# Adobe Code of Conduct +# Adobe code of conduct -## Our Pledge +## Our pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and @@ -9,7 +9,7 @@ size, disability, ethnicity, gender identity and expression, level of experience nationality, personal appearance, race, religion, or sexual identity and orientation. -## Our Standards +## Our standards Examples of behavior that contributes to creating a positive environment include: @@ -31,7 +31,7 @@ advances. * Other conduct which could reasonably be considered inappropriate in a professional setting. -## Our Responsibilities +## Our responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in @@ -61,13 +61,13 @@ is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. -Project maintainers who do not follow or enforce the Code of Conduct in good +Project maintainers who do not follow or enforce the code of conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +This code of conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version]. [homepage]: https://contributor-covenant.org diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md @@ -4,19 +4,42 @@ We welcome contributions to this project! Before you start, we ask that you understand the following guidelines. -## Code of Conduct +## Code of conduct This project adheres to the Adobe [code of conduct](../CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [Grp-opensourceoffice@adobe.com](mailto:Grp-opensourceoffice@adobe.com). -## Have a Question? +## Have a question? Start by filing an issue. The existing committers on this project work to reach consensus around project direction and issue solutions within issue threads (when appropriate). -## Contributor License Agreement +### Current areas of work + +The Adobe CAI team has been using this crate as the foundation of Adobe's Content Authenticity Initiative-related products and services since late 2020. 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: + +* We'll be reviewing and refining our APIs for ease of use and comprehension. We'd appreciate feedback on areas that you find confusing or unnecessarily difficult. +* We'll also be reviewing our APIs for compliance with Rust community best practices. There are some areas (for example, use of public fields and how we take ownership vs references) where we know some work is required. +* Our documentation is incomplete. We'll be working on refining the documentation. +* Our testing infrastructure is incomplete. We'll be working on improving test coverage, memory efficiency, and performance benchmarks. + +### Desired feedback + +We welcome feedback on: + +* API design +* Prioritization of upcoming development, especially: + * File format support + * Assertion support +* Optimizations and performance concerns +* Bugs or non-compliance with the C2PA spec +* Additional platform support + +## Contributor license agreement All third-party contributions to this project must be accompanied by a signed contributor license agreement. This gives Adobe permission to redistribute your contributions @@ -24,7 +47,7 @@ as part of the project. [Sign our CLA](https://opensource.adobe.com/cla.html). Y only need to submit an Adobe CLA one time, so if you have submitted one previously, you are good to go! -## Code Reviews +## Code reviews All submissions should come in the form of pull requests and need to be reviewed by project committers. Read [GitHub's pull request documentation](https://help.github.com/articles/about-pull-requests/) @@ -36,7 +59,7 @@ These include such things as Rust code format, Clippy/lint checks, and unit test We encourage you to raise an issue in GitHub before starting work on a major addition to the crate. This will give us an opportunity to discuss API design and avoid duplicate efforts. -## From Contributor to Committer +## From contributor to committer We love contributions from our community! If you'd like to go a step beyond contributor and become a committer with full write access and a say in the project, you must @@ -45,7 +68,7 @@ process that must reach lazy consensus (silence is approval) before invitations are issued. If you feel you are qualified and want to get more deeply involved, feel free to reach out to existing committers to have a conversation about that. -## Security Issues +## Security issues Security issues shouldn't be reported on this issue tracker. Instead, [file an issue to our security experts](https://helpx.adobe.com/security/alertus.html). diff --git a/README.md b/README.md @@ -2,40 +2,43 @@ [![CI](https://github.com/contentauth/c2pa-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/contentauth/c2pa-rs/actions/workflows/ci.yml) [![Latest Version](https://img.shields.io/crates/v/c2pa.svg)](https://crates.io/crates/c2pa) [![docs.rs](https://img.shields.io/docsrs/c2pa)](https://docs.rs/c2pa/) [![codecov](https://codecov.io/gh/contentauth/c2pa-rs/branch/main/graph/badge.svg?token=YVHWI19EGN)](https://codecov.io/gh/contentauth/c2pa-rs) -The **[Coalition for Content Provenance and Authenticity](https://c2pa.org)** (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](https://contentauthenticity.org). +The **[Coalition for Content Provenance and Authenticity](https://c2pa.org)** (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. The C2PA Rust SDK was created by Adobe and other contributors as part of the [Content Authenticity Initiative](https://contentauthenticity.org) and [released to open source](https://contentauthenticity.org/blog/cai-releases-suite-of-open-source-tools-to-advance-digital-content-provenance) in June, 2022. ## Key features -* Creation and signing of C2PA [claims](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_claims) and [manifests](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_manifests) -* Embedding manifests in certain file formats -* Parsing and validation of manifests found in certain file formats -* Support for several common C2PA [assertions](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_c2pa_standard_assertions) -* [Hard binding](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_hard_bindings) support +The C2PA Rust SDK implements a subset of the [C2PA 1.0 technical specification](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html). + +The SDK enables a desktop, mobile, or embedded application to: +* Create and sign C2PA [claims](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_claims) and [manifests](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_manifests). +* Embed manifests in certain file formats. +* Parse and validate manifests found in certain file formats. + +The SDK supports several common C2PA [assertions](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_c2pa_standard_assertions) and [hard bindings](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html#_hard_bindings). ## State of the project -This project is in a "soft launch" state as of May 2022. +This project is an early pre-release version and has unimplemented features and may have outstanding issues or bugs. While in prerelease form, the minor version number (0.x.0) will be incremented when there are breaking API changes, which may happen frequently. -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. +The SDK: +* Currently supports only still image formats (JPEG and PNG). +* Does not parse identity structures (verifiable credentials). -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. +### Contributions and 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: +We welcome contributions to this project. For information on contributing, providing feedback, and about ongoing work, see [Contributing](https://github.com/contentauth/c2pa-js/blob/main/CONTRIBUTING.md). -* We'll be reviewing and refining our APIs for ease of use and comprehension. We'd appreciate feedback on areas that you find confusing or unnecessarily difficult. -* We'll also be reviewing our APIs for compliance with Rust community best practices. There are some areas (for example, use of public fields and how we take ownership vs references) where we know some work is required. -* Our documentation is incomplete. We'll be working on refining the documentation. -* Our testing infrastructure is incomplete. We'll be working on improving test coverage, memory efficiency, and performance benchmarks. +## Requirements -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. +The SDK requires **Rust version 1.58.0** or newer. -## What's implemented and not implemented? +### Supported platforms -* This crate implements a subset of the [C2PA 1.0 technical specification](https://c2pa.org/specifications/specifications/1.0/specs/C2PA_Specification.html). -* This crate currently only supports still image formats (JPEG and PNG). -* We haven't yet implemented parsing of identity structures (verifiable credentials). +The SDK has been tested on the following operating systems: + +* Windows +* MacOS (Intel and Apple silicon) +* Ubuntu Linux +* WebAssembly (Wasm); NOTE: claim _generation_ is not available on Wasm. ## Usage @@ -48,43 +51,17 @@ c2pa = "0.9.1" ## Crate features +The Rust SDK crate provides: + * `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](https://serde.rs/) serialization output. * `xmp_write` enables updating XMP on embed with the `dcterms:provenance` field. (Requires [xmp_toolkit](https://crates.io/crates/xmp_toolkit).) -## Rust version requirements - -This crate requires **Rust version 1.58.0** or newer. - -## Supported platforms - -We have tested it on recent versions of the following operating systems: - -* Windows -* MacOS (Intel and Apple Silicon) -* Ubuntu Linux -* WASM (note that claim _generation_ is not available on WASM) - -## What feedback do we seek? - -We would welcome feedback on: - -* API design -* prioritization of upcoming development, especially: - * file format support - * assertion support -* optimizations and performance concerns -* bugs or non-compliance with the C2PA spec -* additional platform support - -If you would like to contribute to this crate, please read our [code of conduct](./CODE_OF_CONDUCT.md) and [contribution guidelines](./CONTRIBUTING.md). ## License -The `c2pa` crate is distributed under the terms of both the MIT license and the Apache License (Version 2.0). - -See [LICENSE-APACHE](./LICENSE-APACHE) and [LICENSE-MIT](./LICENSE-MIT). +The `c2pa` crate is distributed under the terms of both the [MIT license](https://github.com/contentauth/c2pa-rs/blob/main/LICENSE-MIT) and the [Apache License (Version 2.0)](https://github.com/contentauth/c2pa-rs/blob/main/LICENSE-APACHE). Note that some components and dependent crates are licensed under different terms; please check the license terms for each crate and component for details.