Apache Milagro MPC Multi-Party Computation

Clone this repo:
  1. bbf62d7 Merge pull request #26 from apache/develop by Kealan McCusker · 3 months ago master
  2. 1d4de99 Merge pull request #23 from apache/issue21 by Kealan McCusker · 3 months ago
  3. 73efc2c update README by Kealan McCusker · 3 months ago
  4. 83cccc4 change org for sonar by Kealan McCusker · 3 months ago
  5. f599311 add static code analysis by Kealan McCusker · 3 months ago

Apache Milagro Multi-Party Computation Library

Master Branch Master Build Status Master Coverage Status

Develop Branch Develop Build Status Develop Coverage Status

Quality Gate Status

Description

AMCL - Apache Milagro Crypto Multi-Party Computation

This library implements Multi-Party Computation (MPC) using the milargo crypto library.

Dependencies

In order to build this library, the following packages are required:

  • CMake is required to build the source code.
  • CFFI, the C Foreign Function Interface for the Python wrapper
  • Doxygen is required to build the source code documentation.
  • Python language is required to build the Python language wrapper.

On Ubuntu 18.04 these packages are installed with the following commands;

sudo apt-get update
sudo apt-get install -y build-essential cmake doxygen lcov python3-dev python3-pip wget git
pip3 install cffi

AMCL

AMCL is required

Build and install the AMCL library

git clone https://github.com/apache/incubator-milagro-crypto-c.git 
cd incubator-milagro-crypto-c
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=ON -D AMCL_CHUNK=64 -D AMCL_CURVE="BLS381,SECP256K1" -D AMCL_RSA="" -D BUILD_PAILLIER=ON -D BUILD_PYTHON=ON -D BUILD_BLS=ON -D BUILD_WCC=OFF -D BUILD_MPIN=ON -D BUILD_X509=OFF -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
make test
sudo make install

Compiling

Build and test code.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./
mkdir build
cd build
cmake ..
make
make doc
make test
sudo make install

or build and run test on all builds

./scripts/build.sh
./scripts/test.sh

Documentation

The documentation is generated using doxygen and can accessed (post build) via the file

./build/doxygen/html/index.html

Docker

Build and run tests using docker

docker build --no-cache -t libmpc .
docker run --cap-add SYS_PTRACE --rm libmpc

Generate coverage figures

docker run --rm libmpc ./scripts/coverage.sh

or copy to host

CONTAINER_ID=$(docker run --cap-add SYS_PTRACE -d libmpc ./scripts/coverage.sh)
docker logs $CONTAINER_ID
docker cp ${CONTAINER_ID}:"/root/target/Coverage/coverage" ./
docker rm -f ${CONTAINER_ID} || true

Python

There is a Python wrapper in ./python.

Virtual machine

In “./vagrant” there are configuration files to run the software on a VM