13个版本

0.3.8 2024年7月24日
0.3.6 2024年1月15日
0.3.5 2023年9月29日
0.3.4 2023年1月25日
0.1.1 2021年6月24日

#43 in 密码学

Download history 32270/week @ 2024-04-28 27285/week @ 2024-05-05 46686/week @ 2024-05-12 47810/week @ 2024-05-19 55337/week @ 2024-05-26 63766/week @ 2024-06-02 43711/week @ 2024-06-09 41302/week @ 2024-06-16 46914/week @ 2024-06-23 32209/week @ 2024-06-30 59759/week @ 2024-07-07 80337/week @ 2024-07-14 79778/week @ 2024-07-21 79585/week @ 2024-07-28 59797/week @ 2024-08-04 80958/week @ 2024-08-11

304,687 每月下载量
16 个crate(10个直接使用) 中使用

Apache-2.0

365KB
8K SLoC

COSET

Docs CI Status codecov

此crate包含一组Rust类型,用于处理CBOR对象签名和加密(COSE)对象,如RFC 8152中定义。它建立在ciborium crate的核心CBOR解析功能之上。

请参阅crate文档签名示例,了解如何使用代码的文档。

此仓库正在建设中,因此API和代码的详细信息可能会随时更改。

特性

crate的std特性启用了对CoseErrorError实现。

no_std 支持

此crate支持no_std(当未设置std特性时,这是默认设置),但使用alloc crate。

最低支持的Rust版本

MSRV是1.58。

整数范围

CBOR支持范围在

[-18_446_744_073_709_551_616, -1] ∪ [0, 18_446_744_073_709_551_615]

[-264, -1] ∪ [0, 264 - 1]的整数。

这不能映射到单个Rust整数类型,因此不同的CBOR crate采用不同的方法。

  • serde_cbor crate使用单个i128整数类型表示所有整数值,这意味着所有CBOR整数值都可以表示,但也有一些无法在CBOR中编码的i128值。这也意味着数据大小更大。
  • 《ciborium》也使用单个内部整型类型 i128,但将其封装在其自己的 Integer 类型中,并且只为 i128 / u128 转换实现了 TryFrom(而不是 From),以便可以拒绝无法表示的数字。
  • 《sk-cbor》包使用不同的类型
    • 正数作为 u64,涵盖 [0, 264 - 1]
    • 负数作为 i64,涵盖 [-263, -1](这意味着一些理论上有效的负值无法表示)。

此包使用单一类型来涵盖正数和负数,但为了保持数据大小较小,使用 i64 作为该类型。这意味着

  • i64 中的正数涵盖 [0, 263 - 1]
  • i64 中的负数涵盖 [-263, -1]

因此,此包不支持大值——包括正数和负数。

代码工作

通过持续集成作业强制执行本地编码约定,包括

  • 干净构建并通过所有测试。
  • 没有 Clippy 警告。
  • 使用本地 rustfmt.toml 设置格式化,使用 rustfmt
  • 遵守本地约定
    • 所有 TODO 标记应采用形式 TODO(#99) 并引用一个开放的 GitHub 问题。
    • 对可能引发 panic 的函数(panic!unwrapexpect)的调用应在同一行上注释,形式为 // safe: reason(或 /* safe: reason */)以记录为何可以接受 panic。

免责声明

这不是一个官方支持的 Google 产品。

依赖关系

~0.8–1.4MB
~31K SLoC