20 releases (10 breaking)
0.11.0 | Oct 4, 2024 |
---|---|
0.10.0 | Jul 18, 2024 |
0.9.3 | Mar 25, 2024 |
0.9.1 | Oct 23, 2023 |
0.3.0 | Mar 27, 2020 |
#82 in Unix APIs
7,697 downloads per month
Used in 3 crates
185KB
4K
SLoC
libcryptsetup-rs
This crate provides Rust bindings for libcryptsetup.
Note on thread-safety
libcryptsetup is not thread-safe and also depends on libraries that are not thread-safe. Any use of libcryptsetup by default in a multithreaded environment will result in undefined behavior.
As a workaround, this library provides a feature (mutex
) to cause all calls to
libcryptsetup to acquire a crate-level mutex. This will enforce single threaded
access to all invocations of the libcryptsetup API.
Rust's decision to make pointers !Send
should be respected. Any data structure that
contains a pointer is not safe to send across threads. Providing an unsafe impl Send {}
for any data structure provided by libcryptsetup-rs that is not Send
may result in undefined behavior.
Building
The libcryptsetup bindings require some dependencies outside of cargo to build properly:
- cryptsetup (provided by
cryptsetup
on Fedora) - cryptsetup development headers (provided by
cryptsetup-devel
on Fedora) - libclang (provided by
clang
on Fedora)
Sanity testing bindings
There is one test that actually invokes libcryptsetup and can be used for basic sanity testing of the bindings as it will only succeed if low level bindings are correctly generated, the high level bindings build, and libcryptsetup successfully encrypts a loopback device.
This can be invoked as follows:
make test-loopback
Dependencies
~1–4.5MB
~85K SLoC