This is an adaptation of SLOTH (slow-timed hash function) into a time-asymmetric permutation using a standard CBC block cipher.
This library consists of 2 major implementations:
- CPU
- CUDA
CPU Implementation contains 3 flavors:
- optimized assembly-assisted implementation for x86-64 processors with ADX ISA extension (Linux, macOS and Windows)
- any 64-bt platform with support for
__int128
C type (modern GCC/Clang, but not MSVC) - fallback for other platforms
For more details, README.md under src/cpu
can be referred.
CUDA implementation is heavily using low-level PTX code to achieve the maximum performance.
Details of the CUDA implementation can be found in
README.md under src/cuda
.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in cc-rs by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.