#证书 #tor #arti #onion-service #networking

tor-cert

由 Tor 使用的不标准证书格式

31 个版本 (16 个破坏性更新)

0.21.0 2024 年 8 月 1 日
0.20.0 2024 年 6 月 27 日
0.19.0 2024 年 6 月 5 日
0.11.0 2024 年 3 月 4 日
0.0.0 2021 年 6 月 24 日

#360解析器实现

Download history 593/week @ 2024-04-28 410/week @ 2024-05-05 301/week @ 2024-05-12 592/week @ 2024-05-19 794/week @ 2024-05-26 508/week @ 2024-06-02 648/week @ 2024-06-09 1439/week @ 2024-06-16 1239/week @ 2024-06-23 1656/week @ 2024-06-30 258/week @ 2024-07-07 557/week @ 2024-07-14 733/week @ 2024-07-21 1322/week @ 2024-07-28 1446/week @ 2024-08-04 1050/week @ 2024-08-11

每月 4,664 次下载
用于 36 个 crate(直接使用 3 个)

MIT/Apache

225KB
3.5K SLoC

tor-cert

Tor 证书的实现

概述

tor-cert crate 实现了 Tor 的 cert-spec.txt 中记录的二进制证书类型,这些类型用于验证 Tor 通道。 (最终还将添加对洋葱服务证书的支持。)

此 crate 是 Arti 项目的一部分,Arti 是一个用 Rust 实现 Tor 的项目。

此外,Tor 还使用其他类型的证书,它们在别处实现。特别是,请参阅 tor-netdoc::doc::authcert 了解目录协议中权威机构使用的证书类型。

设计说明

tor-cert 代码在其自己的单独的 crate 中,因为它被几个不相互依赖的高级 crate 所需要。例如,tor-netdoc 解析来自路由器描述符的编码证书,而 tor-proto 在验证中继时使用证书。

示例

解析、验证和检查证书

use base64ct::{Base64, Encoding as _};
use tor_cert::*;
use tor_checkable::*;
// Taken from a random relay on the Tor network.
let cert_base64 =
 "AQQABrntAThPWJ4nFH1L77Ar+emd4GPXZTPUYzIwmR2H6Zod5TvXAQAgBAC+vzqh
  VFO1SGATubxcrZzrsNr+8hrsdZtyGg/Dde/TqaY1FNbeMqtAPMziWOd6txzShER4
  qc/haDk5V45Qfk6kjcKw+k7cPwyJeu+UF/azdoqcszHRnUHRXpiPzudPoA4=";
// Remove the whitespace, so base64 doesn't choke on it.
let cert_base64: String = cert_base64.split_whitespace().collect();
// Decode the base64.
let cert_bin = Base64::decode_vec(&cert_base64).unwrap();

// Decode the cert and check its signature.
let cert = Ed25519Cert::decode(&cert_bin).unwrap()
    .check_key(None).unwrap()
    .check_signature().unwrap()
    .dangerously_assume_timely();
let signed_key = cert.subject_key();

许可:MIT 或 Apache-2.0

依赖关系

~15MB
~273K SLoC