a portable and fast pairing-based cryptography library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
mcl/readme.md

4.3 KiB

mcl

A class library of finite field, elliptic curve and pairing

Abstract

mcl is a library for pairing-based cryptography. The current version supports the optimal Ate pairing over BN curves.

Support architecture

  • 64-bit Windows + Visual Studio
  • x86, x86-64 Linux + gcc/clang
  • ARM
  • ARM64
  • (maybe any platform to be supported by LLVM)

Installation Requirements

apt install libgmp-dev

Create a working directory (e.g., work) and clone the following repositories.

mkdir work
cd work
git clone git://github.com/herumi/mcl.git
git clone git://github.com/herumi/cybozulib.git
git clone git://github.com/herumi/xbyak.git
git clone git://github.com/herumi/cybozulib_ext.git
  • Xbyak is a prerequisite for optimizing the operations in the finite field on x86-64.
  • Cybozulib_ext is a prerequisite for running OpenSSL and GMP on VC (Visual C++).

Build and test

To make lib/libmcl.a and test, run

make test

To measure pairing, run

bin/bn_test.exe

To make sample programs, run

make sample

If LLVM is installed, then

make MCL_USE_LLVM=1 LLVM_VER=-3.8

Change LLVM_VER=-3.8 to LLVM_VER=-3.7 if the version of LLVM is 3.7.

Build for 32-bit Linux

Build openssl and gmp for 32-bit mode and install

make ARCH=x86 CFLAGS_USER="-I <lib32>/include" LDFLAGS_USER="-L <lib32>/lib -Wl,-rpath,<lib32>/lib"

Build for 64-bit Windows

  1. make library
>mklib.bat
  1. make exe binary of sample\pairing.cpp
>mk sample\pairing.cpp

open mcl.sln and build or if you have msbuild.exe

msbuild /p:Configuration=Release

Build for ARM64 Linux

make MCL_USE_LLVM=1 LLVM_VER=-3.7 ARCH=aarch64

Build for ARM Linux

make MCL_USE_LLVM=1 LLVM_VER=-3.8 ARCH=arm

Benchmark

A benchmark of a BN curve over the 254-bit prime.

  • x64, x86 ; Core i7 4700MQ
    • sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
  • arm ; 900MHz quad-core ARM Cortex-A7 on Raspberry Pi2, Linux 4.4.11-v7+
  • arm64 ; 1.2GHz ARM Cortex-A53 HiKey
software x64 x86 arm arm64
ate-pairing 0.35 - - -
mcl 0.63 2.9 32 5.7
TEPLA 2.3 4.8 37 17.9
RELIC PRIME=254 1.4 4.0 36 -
MIRACL ake12bnx 5.2 - 78 -
NEONabe - - 16 -

License

modified new BSD License http://opensource.org/licenses/BSD-3-Clause

The original source of the followings are https://github.com/aistcrypt/Lifted-ElGamal . These files are licensed by BSD-3-Clause and are used for only tests.

include/mcl/elgamal.hpp
include/mcl/window_method.hpp
test/elgamal_test.cpp
test/window_method_test.cpp
sample/vote.cpp

This library contains mie and Lifted-ElGamal.

References

Author

光成滋生 MITSUNARI Shigeo(herumi@nifty.com)