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 密码学
304,687 每月下载量
在 16 个crate(10个直接使用) 中使用
365KB
8K SLoC
COSET
此crate包含一组Rust类型,用于处理CBOR对象签名和加密(COSE)对象,如RFC 8152中定义。它建立在ciborium
crate的核心CBOR解析功能之上。
此仓库正在建设中,因此API和代码的详细信息可能会随时更改。
特性
crate的std
特性启用了对CoseError
的Error
实现。
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!
、unwrap
、expect
)的调用应在同一行上注释,形式为// safe: reason
(或/* safe: reason */
)以记录为何可以接受 panic。
- 所有
免责声明
这不是一个官方支持的 Google 产品。
依赖关系
~0.8–1.4MB
~31K SLoC