#pem #key #pkcs #private-key #rsa #email

no-std pem-rfc7468

PEM编码(RFC 7468)用于PKIX、PKCS和CMS结构,实现了原始Privacy-Enhanced Mail编码的一个严格子集,旨在专门用于加密密钥、证书和其他消息。提供了一种适用于加密私钥的no_std友好的、常数时间的实现。

14个版本

1.0.0-rc.12024年7月28日
1.0.0-pre.02024年1月7日
0.7.0 2023年2月26日
0.6.0 2022年4月26日
0.0.0 2021年2月16日

#1349加密学

Download history 508248/week @ 2024-04-29 513629/week @ 2024-05-06 577761/week @ 2024-05-13 580436/week @ 2024-05-20 554752/week @ 2024-05-27 620869/week @ 2024-06-03 597268/week @ 2024-06-10 563181/week @ 2024-06-17 585872/week @ 2024-06-24 514508/week @ 2024-07-01 598172/week @ 2024-07-08 569025/week @ 2024-07-15 606763/week @ 2024-07-22 614805/week @ 2024-07-29 612469/week @ 2024-08-05 623118/week @ 2024-08-12

2,480,101 每月下载量
用于 622 个crate(直接使用23个)

Apache-2.0 OR MIT

115KB
2K SLoC

RustCrypto: PEM编码 (RFC 7468)

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

纯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 许可证定义的,您提交的任何有意包含在本作品中的贡献,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖项