Skip to content

Repository files navigation

rustle

Rust crates for building OpenSSL 3.4+ loadable providers — dynamically loaded modules that supply cryptographic algorithm implementations to libcrypto.

The workspace splits the problem in two, so that speaking the provider ABI and implementing cryptography never live in the same crate:

Crate Role
crates/rustle Safe abstraction over the provider FFI — contains every unsafe block in the workspace, behind safe APIs
crates/rustle-macros Host-side method-presence macro for optional provider callbacks
crates/bc-rust-provider The loadable provider module (cdylib) — #![forbid(unsafe_code)], crypto from bc-rust

Quick start

Needs a Rust toolchain with edition 2024 and OpenSSL 3.4 or newer. Cargo fetches bc-rust automatically from Git.

cargo build -p bc-rust-provider
printf abc | openssl dgst -sha256 -provider-path target/debug -provider libbc_rust
make test

Documentation

The book covers the design, the algorithm tables, and the build invariants:

mdbook serve docs

License

Apache License 2.0, the same terms as OpenSSL itself — see LICENSE.txt.

About

Safe abstraction over the provider FFI

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages