#boring-ssl #boring #wrapper #hide #rust

superboring

纯 Rust 重写的 'boring' 库

3 个版本

0.1.2 2023年12月17日
0.1.1 2023年12月17日
0.1.0 2023年12月17日

#484 in 加密学

Download history 4692/week @ 2024-03-14 4018/week @ 2024-03-21 4910/week @ 2024-03-28 9573/week @ 2024-04-04 11197/week @ 2024-04-11 15605/week @ 2024-04-18 16026/week @ 2024-04-25 21535/week @ 2024-05-02 18137/week @ 2024-05-09 34706/week @ 2024-05-16 35446/week @ 2024-05-23 36357/week @ 2024-05-30 35713/week @ 2024-06-06 39699/week @ 2024-06-13 35878/week @ 2024-06-20 30882/week @ 2024-06-27

150,473 每月下载量
13 库中使用 (直接使用 2 个)

ISC 许可证

200KB
816

Superboring

为 Rust 加密实现提供的 Boring(SSL) 兼容 API 抽象层。

什么是 Superboring?

Superboring 在 Rust 中实现了 boring API 的模拟,从而隐藏了加密实现(Rust 对 BoringSSL 的优秀包装)的复杂性、多样性和不稳定性。

这允许使用 boring API 编写的应用程序也能使用纯 Rust 实现,而不必维护两个代码库。

为什么使用模拟而不是始终使用 boring

以下是一些使用 boring 有时可能不是选择的有效原因。

这些都是尚未在 boring 库中实现的功能,而且 boring 维护者可能更愿意得到帮助,而不是让人们找到解决方案。

WebAssembly

虽然 BoringSSL 本身 可以编译成 WebAssembly,但 boring 库目前不支持此功能。

静态构建

boring 库(实际上 boring-sys)目前没有创建静态构建的能力。

尽管默认情况下,musl 使得 Rust 代码变慢,但纯 Rust 代码通常支持默认的静态构建。

与 OpenSSL 的符号冲突

OpenSSL 和 BoringSSL 共享大量符号,这可能导致冲突。

BoringSSL 有能力在符号前加前缀以避免这种情况。但 boring 库目前不支持此功能。

目前实现了什么?

Superboring 目前实现了处理 RSA 签名的几乎所有所需功能。

依赖项

~0–1MB
~18K SLoC