12 个重大版本发布

0.21.0 2024 年 8 月 1 日
0.20.0 2024 年 6 月 27 日
0.19.0 2024 年 6 月 5 日
0.8.0 2024 年 3 月 4 日
0.1.0 2023 年 6 月 30 日

#148 in 加密学

Download history 293/week @ 2024-05-04 168/week @ 2024-05-11 252/week @ 2024-05-18 796/week @ 2024-05-25 664/week @ 2024-06-01 352/week @ 2024-06-08 1330/week @ 2024-06-15 1276/week @ 2024-06-22 1510/week @ 2024-06-29 354/week @ 2024-07-06 404/week @ 2024-07-13 744/week @ 2024-07-20 1221/week @ 2024-07-27 1275/week @ 2024-08-03 1166/week @ 2024-08-10 1077/week @ 2024-08-17

4,949 个月下载量
19 个crate(5 个直接)中使用

MIT/Apache

1MB
16K SLoC

tor-keymgr

用于获取、存储和更新密钥的代码。

概述

此crate是Arti项目的一部分,该项目旨在使用Rust实现Tor

可能变化

此crate公开的API(甚至没有keymgr功能)是新的,可能会迅速变化。因此,我们经常会进行semver破坏性更改(并将相应更新crate版本)。

密钥存储库

KeyMgr是一个到一个或多个密钥存储库的接口。密钥存储库是实现了Keystore trait的类型。

提供的以下密钥存储库实现:

  • ArtiNativeKeystore:一个磁盘存储库,使用OpenSSH格式存储密钥。它目前不支持带密码的密钥。密码支持将在未来添加(见#902)。
  • (尚未实现)C Tor密钥存储库:一个磁盘存储库,与C Tor向后兼容(新密钥以C Tor使用的格式存储,任何现有密钥也期望以该格式存储)。

未来我们还计划支持基于HSM的密钥存储库。

密钥指定符和密钥类型

Keystore API使用KeySpecifierKeyType来标识密钥的特定实例。这使得密钥存储库可以拥有具有相同角色(即相同的KeySpecifier::arti_path)但不同密钥类型(即不同的KeyType::arti_extension)的多个密钥。

KeySpecifier用于标识一组等效密钥,每个密钥具有不同的类型(算法)。在ArtiNativeKeystore中,它用于确定密钥在密钥库中的路径(不包括扩展名),密钥的扩展名是从其KeyType派生的。KeySpecifier实现者必须指定

  • ArtiPath指定者的路径:这是特定密钥实例的唯一标识符,并由ArtiNativeKeystore用于确定磁盘上的密钥路径
  • CTorPath密钥路径:密钥在C Tor密钥库中的位置(可选)。

KeyType代表密钥的类型(“密钥对”、“公钥”)和算法(“ed25519”、“x25519”)。KeyType::arti_extension指定在ArtiNativeKeystore中存储该类型的密钥时预期的文件扩展名:ArtiNativeKeystoreKeySpecifier::arti_pathKeyType::arti_extension组合在一起,形成密钥在磁盘上的路径(相对于密钥库的根目录)。

功能标志

附加功能

  • keymgr -- 使用完整密钥管理器支持构建。禁用此功能将导致tor-keymgr导出一个无操作、占位符实现。

实验性和不稳定的功能

请注意,由这些功能启用的API不受语义版本保证的覆盖:我们可能会在补丁版本之间破坏它们或删除它们。

  • (目前无)

[^1]: 记住,语义版本化是使各种cargo功能可靠工作的原因。明确地说:如果您希望cargo update只进行安全更改,则不能启用这些功能。

依赖关系

~20–33MB
~506K SLoC