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 |
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-providerprintf abc | openssl dgst -sha256 -provider-path target/debug -provider libbc_rustmake testThe book covers the design, the algorithm tables, and the build invariants:
mdbook serve docsApache License 2.0, the same terms as OpenSSL itself — see LICENSE.txt.