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, DRBG, 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.
Oblivious Transfer (and extensions)
- Simplest OT: 1-out-of-2 OT
- IKNP OTe: 1-out-of-2 OT extension
- Ferret OTe: 1-out-of-2 OT extension
- KKRT OTe: 1-out-of-n OT (a.k.a OPRF)
- SGRR OTe: (n-1)-out-of-n OTe
- GYWZ+ OTe: (n-1)-out-of-n OTe with correlated GGM tree optimizations
Distributed Point Function
Threshold Proxy-Re-encryption
- A substitute of umbral. Our implementation supports SM2, SM3 and SM4.
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
# 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