24个版本
0.7.0-pre.1 | 2024年8月13日 |
---|---|
0.7.0-pre.0 | 2024年7月28日 |
0.6.6 | 2024年4月12日 |
0.6.5 | 2024年3月12日 |
0.0.0 |
|
#824 in 加密学
92,055 每月下载量
用于 107 个crate(38直接)
405KB
8K SLoC
RustCrypto: SSH密钥和证书
关于
根据RFC4251和RFC4253以及OpenSSH的PROTOCOL.key
格式规范实现的纯Rust SSH密钥文件格式解码器/编码器。
此外,还提供对SSH签名(即“sshsig”)的支持,如PROTOCOL.sshsig
所述,OpenSSH证书(包括证书验证和证书颁发机构(CA)支持),FIDO/U2F密钥(以及相应的证书),以及authorized_keys
和known_hosts
文件格式。
支持最小配置文件,适用于堆内存不足的no_std
目标。下表中的“支持算法”表显示了哪些密钥格式可以在堆内存不足的目标上工作,以及哪些算法需要alloc
。
当启用此crate的ed25519
、p256
和/或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" 功能或上表中的特定算法的 "功能"(例如 p256
、rsa
)。
"功能"列列出了可以启用的 ssh-key
crate功能名称,这些功能可以启用以提供对特定SSH密钥算法的"密钥生成"、"签名"和"验证"功能的全面支持。
最低支持的Rust版本
此crate至少需要 Rust 1.73。
我们可能会在将来更改MSRV,但将会伴随小版本号的提升。
许可
根据您的要求,许可为以下之一
任选其一。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证定义,都应如上所述双许可,没有额外的条款或条件。
依赖关系
~0.7-9MB
~80K SLoC