Yacl is a C++ library that contains common cryptgraphy, network and io modules which other SecretFlow code depends on. 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.
Supported platforms:
Linux x86_64 | Linux aarch64 | macOS x86_64 | macOS Apple Silicon | Windows x86_64 | Windows WSL2 x86_64 |
---|---|---|---|---|---|
yes | yes | yes1 | yes | no | yes1 |
- Yacl has not been thoroughly tested on these platforms.
- base: some basic types and utils in yacl.
- crypto: crypto algorithms without link.
- kernel: crypto kernel that includes link with multi-thread support, i.e. OT, DPF.
- io: a simple streaming-based io library.
- link: a simple rpc-based MPI framework, providing the SPMD parallel programming capability.
- bazel: the recommended verion is described in .bazelversion file. We recommend to use the official bazelisk to manage bazel version.
- gcc >= 10.3
- cmake
- ninja/ninja-build
- Perl 5 with core modules (Required by OpenSSL)
# build as debug
bazel build //... -c dbg
# build as release
bazel build //... -c opt
# test
bazel test //...
# [optional] build & test with ASAN if you're not on MacOS
bazel build //... -c dbg --config=asan
bazel test //... --config=asan -c dbg
# [optional] build & test with ASAN on MacOS
bazel build //... -c dbg --config=macos-asan
bazel test //... --config=macos-asan -c dbg