██╗ ██╗ █████╗ ██████╗██╗ ██████╗
╚██╗ ██╔╝██╔══██╗██╔════╝██║ ██╔══██╗
╚████╔╝ ███████║██║ ██║ █████╗██████╔╝
╚██╔╝ ██╔══██║██║ ██║ ╚════╝██╔══██╗
██║ ██║ ██║╚██████╗███████╗ ██║ ██║
╚═╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ ╚═╝ ╚═╝
Yacl-r is a fork and extension of the C++ crypto library secretflow/yacl. The crypto modules in Yacl implement many state-of-art secure computation protocols, including primitives like OT, VOLE, TPRE, and tools like PRG, RO. Check the full list of Yacl's supported algorithms in ALGORITHMS.md.
Warning
Yacl-r is under heavy development, please use at your own risk
Target Platforms (hopefully): MacOS Apple Silicon, Linux x86_64 and Linux aarch64.
- base: some basic types and utils in yacl.
- crypto: crypto algorithms without link.
- engine: interactive engines that is desgined for a purpose.
- io: a simple streaming-based io library.
- kernel: crypto kernel that includes link with (WIP) multi-thread support, i.e. OT, DPF.
- link: a simple rpc-based MPI framework, providing the SPMD parallel programming capability.
- math: a simplified math lib (or interface), supporting big integer.
- utils: other good-to-have utilities
- gcc >= 10.3
- ninja/ninja-build
- Perl 5 with core modules (Required by OpenSSL)
- TODO others
Yacl-r tries to support both cmake and bazel build system. For more guidelines about how to develop on yacl, please check the Getting Started Guide.
TL; DR
# for cmake
mkdir -p build
cd build
cmake ..
make -j8
# for bazel
bazel build //...