SCAPI is an open-source Java library for implementing secure two-party and multiparty computation protocols (SCAPI stands for the “Secure Computation API”). It provides a reliable, efficient, and highly flexible cryptographic infrastructure. SCAPI is comprised of three layers:

  1. Low-level cryptographic functions: these are functions that are basic building blocks for cryptographic constructions (e.g., pseudorandom functions, pseudorandom generators, discrete logarithm groups, hash functions and more belong to this layer).
    2. Non-interactive mid-level cryptographic functions: these are non-interactive functions that can be applications within themselves in addition to being tools (e.g., encryption and signature schemes belong to this layer).
    3. Interactive cryptographic protocols: these are interactive protocols involving two or more parties; typically, the protocols in this layer are popular building blocks like commitment schemes, zero knowledge proofs and oblivious transfer.

In addition, SCAPI includes high-level protocols like Yao and others for carrying out full-blown secure computation (with security for semi-honest and/or malicious adversaries).

More information about SCAPI can be found, as follows:

  • The source code for the Java version of SCAPI can be found at this github page, and the associated Javadoc can be found here.
  • The source code for the C++ version of SCAPI (libscapi) can be found at this github page.
  • Our online documentations can be found here.


An outdated paper describing the early days of SCAPI can be found here.