#tor #arti #type-state #certificate #signature #object #timestamp

tor-checkable

确保在使用之前对签名或时间限制数据进行验证的类型

28 个版本 (13 个重大更新)

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.0.0 2021 年 6 月 24 日

#1059 in 密码学

Download history 545/week @ 2024-04-26 423/week @ 2024-05-03 351/week @ 2024-05-10 331/week @ 2024-05-17 840/week @ 2024-05-24 710/week @ 2024-05-31 485/week @ 2024-06-07 1288/week @ 2024-06-14 1418/week @ 2024-06-21 1664/week @ 2024-06-28 504/week @ 2024-07-05 440/week @ 2024-07-12 700/week @ 2024-07-19 1262/week @ 2024-07-26 1549/week @ 2024-08-02 1024/week @ 2024-08-09

每月 4,760 次下载
36 个 crate(直接使用 6 个) 中使用

MIT/Apache

110KB
1.5K SLoC

tor-checkable

封装签名和/或时间限制对象的特质

概述

经常(出于测试原因或其他原因),我们想确保只有在签名有效或某些时间戳足够新时,对象才能被使用。

例如,考虑一个自签名证书。你可以足够便宜地解析它(并找到它的密钥),但你可能想确保除非证书的签名正确且时间戳未过期,否则没有人会使用该证书。

使用 tor-checkable crate,你可以返回代表证书的未检查状态的对象。调用者可以访问证书,但只能在检查签名和时间之后。

该 crate 是 Arti 项目的一部分,Arti 是在 Rust 中实现 Tor 的项目。Arti 中的许多其他 crate 都依赖于它,但它应该对 Arti 之外也很有用。

设计说明和替代方案

该 crate 中的类型提供函数来返回未经检查的底层对象。这对于测试来说非常方便,但在生产代码中你不想这样做。为了避免错误,这些函数都以单词 dangerously 开头。

你可能采取的另一种方法是将在你的解析函数中放入签名和时间检查。但如果你这样做,将很难测试你的代码:你只能解析在解析器运行时有效的证书。如果你想测试解析新类型的证书,你需要确保它在上面有有效的签名。(所有这些签名解析都会减慢模糊解析器的尝试。)

你的解析器可以有一个标志来告诉它是否检查签名和时间,但这可能会出错:如果有人设置了错误的标志,他们将跳过检查。

许可证:MIT OR Apache-2.0

依赖关系

~10MB
~179K SLoC