#openssh #certificate #ssh #key-file #file-format #sshsig

无需std ssh-key

根据RFC4251/RFC4253和OpenSSH密钥格式描述的纯Rust实现的SSH密钥文件格式解码器/编码器,以及“sshsig”签名和证书(包括证书验证和证书颁发机构支持),并进一步支持authorized_keysknown_hosts文件格式。

24个版本

0.7.0-pre.12024年8月13日
0.7.0-pre.02024年7月28日
0.6.6 2024年4月12日
0.6.5 2024年3月12日
0.0.0 2021年11月18日

#824 in 加密学

Download history 13414/week @ 2024-05-02 12710/week @ 2024-05-09 14469/week @ 2024-05-16 14253/week @ 2024-05-23 15706/week @ 2024-05-30 13666/week @ 2024-06-06 16085/week @ 2024-06-13 15458/week @ 2024-06-20 15910/week @ 2024-06-27 16244/week @ 2024-07-04 13779/week @ 2024-07-11 16975/week @ 2024-07-18 21367/week @ 2024-07-25 24627/week @ 2024-08-01 22726/week @ 2024-08-08 20468/week @ 2024-08-15

92,055 每月下载量
用于 107 个crate(38直接)

Apache-2.0 OR MIT

405KB
8K SLoC

RustCrypto: SSH密钥和证书

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

文档

关于

根据RFC4251和RFC4253以及OpenSSH的PROTOCOL.key格式规范实现的纯Rust SSH密钥文件格式解码器/编码器。

此外,还提供对SSH签名(即“sshsig”)的支持,如PROTOCOL.sshsig所述,OpenSSH证书(包括证书验证和证书颁发机构(CA)支持),FIDO/U2F密钥(以及相应的证书),以及authorized_keysknown_hosts文件格式。

支持最小配置文件,适用于堆内存不足的no_std目标。下表中的“支持算法”表显示了哪些密钥格式可以在堆内存不足的目标上工作,以及哪些算法需要alloc

当启用此crate的ed25519p256和/或rsa功能时,提供相应SSH密钥算法的密钥生成和证书签名/验证支持。

功能

  • 使用base64ct/pem-rfc7468 crate实现的恒定时间Base64解码器/编码器
  • 以下格式的OpenSSH兼容解码器/编码器
    • OpenSSH公钥
    • OpenSSH私钥(即BEGIN OPENSSH PRIVATE KEY
    • OpenSSH证书
    • OpenSSH签名(又称“sshsig”)
  • OpenSSH证书支持
    • OpenSSH证书验证
    • 支持OpenSSH证书颁发机构(CA),即证书构建/签名器
  • 支持私钥加密/解密(仅限 bcrypt-pbkdf + aes256-ctr
  • 支持私钥生成:DSA、Ed25519、ECDSA(P-256/P-384/P-521)和RSA
  • 支持FIDO/U2F密钥(sk-*),具体参见 PROTOCOL.u2f
  • 支持指纹
    • "randomart" 指纹可视化
  • 支持 no_std,包括对 "heapless"(无-alloc)目标的支持
  • 解析 authorized_keys 文件
  • 解析 known_hosts 文件
  • 支持 serde
  • 支持私钥的 zeroize

待办事项

  • 支持FIDO/U2F签名
  • 支持旧版(OpenSSH之前)SSH密钥格式
    • 支持PKCS#1 SSH私钥(即仅限RSA)
    • 支持PKCS#8 SSH私钥
    • RFC4716 SSH公钥
    • SEC1 SSH公钥

支持的签名算法

名称 解码 编码 证书 密钥生成 签名 验证 功能 no_std
ecdsa‑sha2‑nistp256 ✅️ ✅️ ✅️ p256 heapless
ecdsa‑sha2‑nistp384 ✅️ ✅️ ✅️ p384 heapless
ecdsa‑sha2‑nistp521 ✅️️ ✅️ ️ ✅️️ p521 heapless
ssh‑dsa ✅️ ✅️ dsa alloc
ssh‑ed25519 ✅️ ✅️ ed25519 heapless
ssh‑rsa ✅️ ✅️ rsa alloc
sk‑ecdsa‑sha2‑nistp256@openssh.com ⛔️ ✅️ alloc
sk‑ssh‑ed25519@openssh.com ⛔️ ✅️️ ed25519 alloc

默认情况下,没有启用SSH签名算法,如果您尝试使用它们,将会得到一个 Error::AlgorithmUnsupported 错误。

为了使用加密功能,请启用 "crypto" 功能或上表中的特定算法的 "功能"(例如 p256rsa)。

"功能"列列出了可以启用的 ssh-keycrate功能名称,这些功能可以启用以提供对特定SSH密钥算法的"密钥生成"、"签名"和"验证"功能的全面支持。

最低支持的Rust版本

此crate至少需要 Rust 1.73

我们可能会在将来更改MSRV,但将会伴随小版本号的提升。

许可

根据您的要求,许可为以下之一

任选其一。

贡献

除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证定义,都应如上所述双许可,没有额外的条款或条件。

依赖关系

~0.7-9MB
~80K SLoC