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

superboring

A reimplementation of the 'boring' crate in pure Rust

3 releases

0.1.2 Dec 17, 2023
0.1.1 Dec 17, 2023
0.1.0 Dec 17, 2023

#1032 in Cryptography

Download history 397/week @ 2023-12-17 497/week @ 2023-12-24 960/week @ 2023-12-31 1701/week @ 2024-01-07 1507/week @ 2024-01-14 1483/week @ 2024-01-21 3382/week @ 2024-01-28 2965/week @ 2024-02-04 3971/week @ 2024-02-11 3638/week @ 2024-02-18 3543/week @ 2024-02-25 5203/week @ 2024-03-03 5323/week @ 2024-03-10 4073/week @ 2024-03-17 4078/week @ 2024-03-24 6091/week @ 2024-03-31

19,975 downloads per month
Used in 13 crates (2 directly)

ISC license

200KB
816 lines

Superboring

A Boring(SSL)-compatible API abstraction for Rust cryptographic implementations.

What is Superboring?

Superboring hides the complexity, diversity and instability of cryptographic implementations written in Rust behind an emulation of the boring API (Rust excellent wrappers for BoringSSL).

This allows application written using the boring API to be able to also use pure Rust implementations without having to maintain two code bases.

Why use emulation instead of always using boring?

Here are valid reasons why using boring may sometimes not be an option.

All of them are just features that haven't been implemented in the boring crate yet, and that the boring maintainers would probably love getting help with, rather than people finding workarounds.

WebAssembly

While BoringSSL itself can be compiled to WebAssembly, the boring crate currently doesn't support this.

Static builds

The boring crate (actually boring-sys) currently doesn't have the ability to create static builds.

Even though by default, musl makes Rust code slow, pure Rust code generally supports static builds out of the box.

Symbol collisions with OpenSSL

OpenSSL and BoringSSL share a lot of symbols, which can cause collisions.

BoringSSL has the ability to prefix symbols in order to avoid this. But the boring crate currently doesn't support this.

What is currently implemented?

Superboring currently implements pretty much everything required to handle RSA signatures.

Dependencies

~0–1MB
~18K SLoC