82 个版本 (33 个重大更改)
1.0.0 |
|
---|---|
0.33.3 | 2024 年 8 月 17 日 |
0.33.1 | 2024 年 7 月 30 日 |
0.31.1 | 2024 年 3 月 25 日 |
0.0.1 | 2022 年 3 月 23 日 |
#45 in 密码学
每月下载量 158,419
用于 3 crates
2MB
37K SLoC
C2PA Rust 库
内容来源与真实性联盟 (C2PA) 通过制定技术标准来证明媒体内容的来源和历史(或来源),以应对网络中误导性信息的普遍存在。Adobe 和其他贡献者创建了 C2PA Rust 库,作为 内容真实性倡议 和 开源发布 的一部分,于 2022 年 6 月发布。
关键特性
C2PA Rust 库(之前称为“Rust SDK”)实现了 C2PA 技术规范 的一个子集。
该库使桌面、移动或嵌入式应用程序能够
项目状态
这是项目的beta版本(版本0.x.x)。当有破坏性的API更改时,次要版本号(0.x.0)会递增,这种情况可能发生得比较频繁。
新API
库正在开发一个新API,最终将取代现有的读取和写入C2PA数据的方法。最终,它将支持所有语言绑定和构建环境。要使用此API,启用unstable_api
功能;例如
c2pa = {version="0.33.1", features=["unstable_api"]}
新API专注于流式I/O,并支持以下结构
有关一些非正式的开发和使用说明,请参阅2024_API_NOTES.md。
贡献和反馈
我们欢迎对这个项目的贡献。有关贡献、提供反馈以及关于正在进行的工作的信息,请参阅贡献。
要求
库需要Rust版本1.74.0或更高版本。
支持的平台
库已经在以下操作系统上进行过测试
- Windows(仅Intel)
- MacOS(Intel和Apple硅)
- Ubuntu Linux(64位Intel和ARM v8)
- WebAssembly(Wasm)
支持的文件格式
扩展名 | MIME类型 |
---|---|
avi |
video/msvideo ,video/x-msvideo ,video/avi ,application/x-troff-msvideo |
avif |
image/avif |
c2pa |
application/x-c2pa-manifest-store |
dng |
image/x-adobe-dng |
heic |
image/heic |
heif |
image/heif |
jpg ,jpeg |
image/jpeg |
m4a |
audio/mp4 |
mp4 |
video/mp4 ,application/mp4 |
mov |
video/quicktime |
png |
image/png |
svg |
image/svg+xml |
tif ,tiff |
image/tiff |
wav |
audio/wav |
webp |
image/webp |
mp3 |
audio/mpeg |
gif |
image/gif |
使用方法
将此内容添加到您的Cargo.toml
[dependencies]
c2pa = "0.33.3"
如果您想读取或写入manifest文件,请将file_io
依赖项添加到您的Cargo.toml
。add_thumbnails
功能将为JPEG和PNG文件生成缩略图。例如
c2pa = { version = "0.25.0", features = ["file_io", "add_thumbnails"] }
注意:如果您正在为WASM构建,请省略file_io
依赖项。
箱子功能
Rust库箱子提供
file_io
启用manifest生成、通过OpenSSL进行签名以及在各种文件格式中嵌入manifest。add_thumbnails
将自动为JPEG和PNG文件生成缩略图。(不再包含在file_io
中)serialize_thumbnails
将二进制缩略图数据包含在Serde序列化输出中。xmp_write
启用使用dcterms:provenance
字段更新嵌入的XMP。(需要xmp_toolkit。)no_interleaved_io
强制完全同步I/O;否则,库将使用线程I/O进行某些操作以提高性能。fetch_remote_manifests
启用验证步骤以检索外部引用的manifest存储。只有在没有嵌入的manifest存储以及没有同名的本地相邻.c2pa manifest存储文件时,才会检索外部manifest。json_schema
由make schema
使用以生成表示ManifestStore
数据结构的JSON模式文档。psxxx_ocsp_stapling_experimental
这是一个演示功能,它将尝试从清单签名证书中列出的OCSP响应者获取OCSP数据。响应成为清单的一部分,并用于证明证书在签名时未被吊销。此功能仅针对PS256、PS384和PS512签名实现,并作为演示目的。openssl_ffi_mutex
防止多个线程同时访问C OpenSSL库。(此库不是可重入的。)在多线程进程(如Cargo的测试运行器)中,这可能导致不可预测的行为。
示例代码
在 sdk/examples 目录中包含一些最小示例代码。在 client/client.rs 中提供了最富有教育意义的示例,展示了如何读取清单存储的内容,递归显示嵌套清单。
许可证
c2pa
包根据MIT许可证和Apache许可证(版本2.0)的条款进行分发。
某些组件和依赖项以不同的条款进行许可;请查看每个包和组件的许可条款以获取详细信息。
夜间构建
在大多数情况下,您应通过crates.io发布的此包依赖。
Adobe团队通过nightly
分支生成此包的夜间快照,我们使用该分支测试对上游依赖项的待定更改的影响。
您可能希望在我们的发布之前使用这些构建进行自己的测试,您可以通过以下Cargo.toml
条目包含库
c2pa = { git = "https://github.com/contentauth/c2pa-rs.git", branch = "nightly", features = [...]}
此分支中的提交已修改sdk/Cargo.toml
条目,其中包括类似于以下版本号的版本号
version = "0.25.3-nightly+2023-08-28-2f33ab3"
请注意,夜间发布中没有正式支持代码,但如果您发现任何问题,我们将非常欢迎收到包括此版本号的错误报告。
变更日志
有关从Git提交历史记录派生的详细更改,请参阅变更日志。
依赖项
~31-51MB
~1M SLoC