- category: Library
- copyright: 2020 The Apache Software Foundation
- license: ASL 2.0 (Apache License Version 2.0, January 2004)
- link: https://github.com/apache/incubator-milagro-MPC
AMCL - Apache Milagro Crypto Multi-Party Computation
This library implements Multi-Party Computation (MPC) using the milargo crypto library.
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 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
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
The documentation is generated using doxygen and can accessed (post build) via the file
./build/doxygen/html/index.html
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
There is a Python wrapper in ./python.
You can to specify the RSA levels to build in the wrappers using
the cmake flag PYTHON_RSA_LEVELS
. Supported levels are 2048 and 4096.
E.g.
cmake -DPYTHON_RSA_LEVELS="2048,4096" ..
In order for the RSA wrappers to work, the appropriate dynamic libraries need to be generated and installed for AMCL. For instance, to install the dynamic libraries for RSA 2048 and 4069, modify the AMCL cmake build as follows.
cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=ON -D AMCL_CHUNK=64 -D AMCL_CURVE="BLS381,SECP256K1" -D AMCL_RSA="2048,4096" -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 ..
In "./vagrant" there are configuration files to run the software on a VM