A C++ library that contains common cryptgraphy, network and io modules which other SecretFlow code depends on.
Repo layout:
- base: some basic types and utils in yacl.
- crypto: a crypto library desigend for secure computation and so on.
- base: basic/standarized crypto, i.e. AES, hashing.
- primitives: crypto primitives, i.e. OT, DPF.
- tools: theoretical crypto tools, i.e. Random Oracle (RO), PRG.
- utils: easy-to-use crypto utilities.
- io: a simple streaming-based io library.
- link: a simple rpc-based MPI framework, providing the SPMD parallel programming capability.
See Full List of supported algorithms in: ALGORITHMS.md
Selected algorithms:
- Oblivious Transfer (and extensions): Simplest OT, IKNP OTe, Ferret OTe, KKRT OTe, SGRR OTe.
- VOLE: Silent VOLE, Sparse VOLE (GF128)
- Distributed Point Function: BGI16
- Threshold Proxy-Re-encryption: umbral with GM.
Linux x86_64 | Linux aarch64 | macOS x86_64 | macOS Apple Silicon | Windows x86_64 | Windows WSL2 x86_64 | |
---|---|---|---|---|---|---|
CPU | yes | yes | yes | yes | no | yes |
Install gcc>=10.3, cmake, ninja, nasm
# Install Xcode
https://apps.apple.com/us/app/xcode/id497799835?mt=12
# Select Xcode toolchain version
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
# Install homebrew
https://brew.sh/
# Install dependencies
brew install bazel cmake ninja nasm automake libtool libomp
# 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