Skip to content

yacl-r: Yet Another Cryptographic Library for Research

License

Notifications You must be signed in to change notification settings

Jamie-Cui/yacl-r

Repository files navigation

Yet Another Cryptographic Library for Research

██╗   ██╗ █████╗  ██████╗██╗           ██████╗ 
╚██╗ ██╔╝██╔══██╗██╔════╝██║           ██╔══██╗
 ╚████╔╝ ███████║██║     ██║     █████╗██████╔╝
  ╚██╔╝  ██╔══██║██║     ██║     ╚════╝██╔══██╗
   ██║   ██║  ██║╚██████╗███████╗      ██║  ██║
   ╚═╝   ╚═╝  ╚═╝ ╚═════╝╚══════╝      ╚═╝  ╚═╝

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.

Repo Layout

  • 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

Prerequisites

Getting Started

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 //...

License

See LICENSE and NOTICE.md

Releases

No releases published

Packages

No packages published