14个版本
1.0.0-rc.1 | 2024年7月28日 |
---|---|
1.0.0-pre.0 | 2024年1月7日 |
0.7.0 | 2023年2月26日 |
0.6.0 | 2022年4月26日 |
0.0.0 |
|
#1349 在 加密学 中
2,480,101 每月下载量
用于 622 个crate(直接使用23个)
115KB
2K SLoC
RustCrypto: PEM编码 (RFC 7468)
纯Rust实现的PEM编码(RFC 7468)用于PKIX、PKCS和CMS结构,这是原始Privacy-Enhanced Mail编码的一个严格子集,旨在专门用于加密密钥、证书和其他消息。
提供了一种no_std
友好的、常数时间的实现,适用于加密私钥。
关于
许多与加密学相关的文档格式,如证书(PKIX)、私钥和公钥/密钥对(PKCS)以及其他加密消息(CMS)提供了ASCII编码,这种编码可以追溯到定义在RFC 1421中的Privacy-Enhanced Mail(PEM),如下所示
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIBftnHPp22SewYmmEoMcX8VwI4IHwaqd+9LFPj/15eqF
-----END PRIVATE KEY-----
然而,所有这些格式实际上实现了一种基于文本的编码,它与RFC 1421中描述的传统PEM编码相似,但不相同。
因此,创建了一个RFC 7468来描述用于这些应用的更严格的“PEM编码”形式,该编码规定了大多数实现所遵循的先例规则,并提出了促进互操作性的建议。
这个crate提供了对RFC 7468规则的严格解释,实现了必须和应该做的,避免了可以做的,目标是实现RFC 7468第3节图3(第6页)中描述的语法“ABNF(严格)”子集。
实现说明
no_std
友好的核心实现,不需要堆分配,避免复制和临时缓冲区。- 可选的
alloc
依赖便利功能和缓冲解码器/编码器。 - 使用
base64ct
crate在常数时间内解码/编码Base64。 - PEM 解析器尽可能地避免在可能包含秘密数据的情况下进行分支。
论文《Util::Lookup: 利用加密库中的密钥解码》[链接]演示了如何利用非常量时间 PEM 解析器的泄露来从 SGX 容器中实际提取 RSA 私钥。
最低支持的 Rust 版本
此软件包至少需要 Rust 1.60。
我们可能会在将来更改最低支持版本,但将伴随小版本号的增加。
许可证
根据您的选择,许可协议可以是以下之一:
。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您提交的任何有意包含在本作品中的贡献,将按照上述方式双重许可,不附加任何额外条款或条件。