Update README to make master the default branch

Update README to make master the default branch.
Remove travis from build. Remove badges.
2 files changed
tree: 703650946b805f2991b27d3ed6771355c2511fc9
  1. benchmark/
  2. cmake/
  3. doxygen/
  4. examples/
  5. include/
  6. python/
  7. scripts/
  8. src/
  9. test/
  10. testVectors/
  11. vagrant/
  12. .dockerignore
  13. .gitignore
  14. .gitlab-ci.yml
  15. cmake_uninstall.cmake.in
  16. CMakeLists.txt
  17. CPackConfig.cmake
  18. DISCLAIMER
  19. Dockerfile
  20. LICENSE
  21. NOTICE
  22. README.md
  23. sonar-project.properties
  24. VERSION
README.md

Apache Milagro Multi-Party Computation Library

Description

libmpc - Apache Milagro Crypto Multi-Party Computation Library

This library implements Multi-Party Computation (MPC) using the Apache Milagro crypto library (AMCL).

Building and running libmpc with Docker (preferred)

The preferred way to get libmpc built and tested is through the use of docker.

Once your docker installation is correctly set-up, simply run:

 git clone https://github.com/apache/incubator-milagro-MPC.git && cd incubator-milagro-MPC
 docker build -t libmpc .

If you want to run tests and ensure all routines perform as expected, run:

docker run --cap-add SYS_PTRACE --rm libmpc

This procedure has been tested on all major platforms (Linux, Mac OS, Windows) on arm64 and x86_64 platforms. If your build or execution fails, please open a bug.

Note that all of the above commands will by default generate an image native to your platform. In case you wish to build and run code for a different platform, use the --platform linux/amd64 or --platform linux/arm64 switches (paying a performance hit). For example:

docker build --platform linux/amd64 -t libmpc_x86 .

In case you run into problems, make sure your docker installation runs fine:

docker run hello-world

in case you run in permission errors, on some Linux platforms you might need to add your user to the docker group:

sudo gpasswd -a <youruser> docker

Once this works, you can use this Dockerfile as a base to build your own recipes. We will eventually publish an official OCI image on a registry, if there is sufficient demand (please open an issue).

Documentation

To build the Doxygen documentation, make sure you ask for it at build time, with the build_doc parameter:

  docker build -t libmpc_doc --build-arg build_doc=true .

If the documentation is built, you can extract it with this command:

  docker run --rm libmpc_doc /usr/bin/tar c -C /root/build doxygen > doxygen.tar

Generate coverage figures:

You can ask docker to build a test image with coverage statistics using the Coverage build type:

docker build --build-arg build_type=Coverage -t libmpc-coverage .

This command will run automated tests and generate coverage figures which you can extract using cat.

docker run --rm libmpc-coverage cat coverage/libmpc.info > libmpc.info

If you just want a summary, you can run

docker run --rm libmpc-coverage genhtml coverage/libmpc.info;

or to get html files, export the files already generated for you at build time:

docker run --rm libmpc-coverage /usr/bin/tar c -C /root/build coverage > coverage.tar

Python

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

Building natively

Sometimes, you will need to build and run libmpc natively. Here's how you do that:

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
  • Python language is required to build the Python language wrapper.

On the latest Ubuntu LTS these packages are installed with the following commands;

sudo apt-get update
sudo apt-get install -y build-essential cmake 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