██╗ ██╗ █████╗ ██████╗██╗ ██████╗
╚██╗ ██╔╝██╔══██╗██╔════╝██║ ██╔══██╗
╚████╔╝ ███████║██║ ██║ █████╗██████╔╝
╚██╔╝ ██╔══██║██║ ██║ ╚════╝██╔══██╗
██║ ██║ ██║╚██████╗███████╗ ██║ ██║
╚═╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ ╚═╝ ╚═╝
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)
- gflags (Required by brpc)
- protobuf
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.
Ubuntu with CMake
# install dependencies
sudo apt install -y git cmake gcc-11 g++-11
# optional, make gcc-11 g++-11 system default
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 10
# download yacl-r
git clone https://github.com/Jamie-Cui/yacl-r.git
# enter the project
cd yacl-r
# configure
cmake -S . -B build
# build (this may take a while)
cmake --build build
See LICENSE