|
|
@ -9,6 +9,15 @@ Run `cargo build --release`, the binary will be built to `./target/release/chach
|
|
|
|
Run `cargo test && cargo build && ./test.sh debug` to test the program.
|
|
|
|
Run `cargo test && cargo build && ./test.sh debug` to test the program.
|
|
|
|
Alternatively, run `./test.sh` after building to test the release build's correctness.
|
|
|
|
Alternatively, run `./test.sh` after building to test the release build's correctness.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
|
|
|
To enable explicit buffer clearing, compile with the option `--features explicit_clear`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The `explicit_clear` feature forces any temporary work buffers to be zeroed out in memory when the corresponding stream is flushed itself.
|
|
|
|
|
|
|
|
It requires the nonstandard glibc extension `explicit_bzero(void*, size_t)` to build.
|
|
|
|
|
|
|
|
On x86 targets with the Rust nightly toolchain installed, this will also force a cache flush of the corresponding memory address.
|
|
|
|
|
|
|
|
This is *usually not needed*, and can cause a slowdown; but it prevents any lingering data being left in the buffer.
|
|
|
|
|
|
|
|
The unit test `remainder()` checks the process' memory map for leftover data in the working buffer when testing with this feature enabled.
|
|
|
|
|
|
|
|
|
|
|
|
# Usage
|
|
|
|
# Usage
|
|
|
|
Copies stdin to stdout while encrypting or decrypting with the stream cipher `chacha20_poly1305`.
|
|
|
|
Copies stdin to stdout while encrypting or decrypting with the stream cipher `chacha20_poly1305`.
|
|
|
|
|
|
|
|
|
|
|
|