install MinGW Please select the mingw32-base and mingw32-gcc-g++ components. Add C:\MinGW\bin to the PATH variable
install Python. Either Python 2.7.x or 3.8.x may be used. During the installation, ensure that the option to add Python to the Windows PATH variable is selected.
install CMake. During installation, ensure that the option to add the CMake executable to the Windows PATH variable is selected.
git clone https://github.com/apache/incubator-milagro-crypto-c.git
cd incubator-milagro-crypto-c
Edit and run this script
./scripts/build.sh
or use the docker build
./scripts/docker.sh -h
Multiple curves and RSA security levels
The default build (see config.mk) uses multiple curves and RSA security
levels. There is an example called testall.c in the examples directory that
shows how to write a program to use the different curves etc in a single
program. To build and run the example use this script;
./scripts/buildMulti.sh
Manual build
NOTE: The default build is for 64 bit machines. Either use Git to clone the repository:
git clone https://github.com/apache/incubator-milagro-crypto-c.git
cd incubator-milagro-crypto-c
Or, if using an official Apache release, download the compressed archive, extract it and navigate into its root directory.
mkdir -p target/build
cd target/build
cmake ../..
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./
make
make test
make doc
sudo make install
NOTE: When running the ASan tests, make sure to export the following variable:
export ASAN_OPTIONS=verify_asan_link_order=0
On Debian/Ubuntu machine instead of executing the “sudo make install” command it is possible to execute “sudo checkinstall” to build and install a DEB package.
Now you can set the path to where libs and python package are installed:
After having built the libraries you can build a Windows installer using this command
mingw32-make package
In order for this to work NSIS has to have been installed
Contributions
This project includes a Makefile that allows you to test and build the project in a Linux-compatible system with simple commands.
All the artifacts and reports produced using this Makefile are stored in the target folder.
All the packages listed in the Dockerfile are required in order to build and test all the library options in the current environment. Alternatively, everything can be built inside a Docker container using the command “make -f Makefile.docker buildall”.
To see all available options:
make help
To build the builder Docker image:
make -f Makefile.docker
To build the project inside a Docker container (requires Docker) you need to build a builder image (once), and then build the project in its context:
make -f Makefile.docker buildall
To build a particular set of predefined makefile options inside a Docker container:
make -f Makefile.docker build TYPE=LINUX_64BIT_NIST256_RSA2048
or in the current environment:
make build TYPE=LINUX_64BIT_NIST256_RSA2048
To execute all the test builds and generate reports in the current environment:
make qa
To format the code (please use this command before submitting any pull request):
make format
Contributors
The following people have contributed to milagro-crypto-c
Mike Scott
Kealan McCusker
Alessandro Budroni
Samuele Andreoli
Please add yourself here if you make or have made a contribution.
Fork the repository to start making your changes. Please use the master branch as a basis.
Write a test which shows that the bug was fixed or that the feature works as expected.
Make a pull request with a reference to the issue
Crypto Notice
This distribution includes cryptographic software. The country in which you
currently reside may have restrictions on the import, possession, use, and/or
re-export to another country, of encryption software. BEFORE using any
encryption software, please check your country’s laws, regulations and
policies concerning the import, possession, or use, and re-export of encryption
software, to see if this is permitted. See http://www.wassenaar.org/ for
more information.
The Apache Software Foundation has classified this software as Export Commodity
Control Number (ECCN) 5D002, which includes information security software using
or performing cryptographic functions with asymmetric algorithms. The form and
manner of this Apache Software Foundation distribution makes it eligible for
export under the “publicly available” Section 742.15(b) exemption (see the BIS
Export Administration Regulations, Section 742.15(b)) for both object code and
source code.
Disclaimer
Apache Milagro is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
AMCL - Apache Milagro Crypto Library
Description
AMCL - Apache Milagro Crypto Library
AMCL is a standards compliant C cryptographic library with no external dependencies.
AMCL is provided in C language but includes a Python wrapper for some modules to aid development work.
NOTE: This product includes software developed at The Apache Software Foundation.
Software Dependencies
In order to build this library, the following packages are required:
The above packages can be installed in different ways, depending on the Operating System used:
Windows
install MinGW Please select the mingw32-base and mingw32-gcc-g++ components. Add C:\MinGW\bin to the PATH variable
install Python. Either Python 2.7.x or 3.8.x may be used. During the installation, ensure that the option to add Python to the Windows PATH variable is selected.
install CMake. During installation, ensure that the option to add the CMake executable to the Windows PATH variable is selected.
install Doxygen
install Git
Build Instructions
Linux and Mac
Quick start
Clone the repository
Edit and run this script
or use the docker build
Multiple curves and RSA security levels
The default build (see config.mk) uses multiple curves and RSA security levels. There is an example called testall.c in the examples directory that shows how to write a program to use the different curves etc in a single program. To build and run the example use this script;
Manual build
NOTE: The default build is for 64 bit machines. Either use Git to clone the repository:
Or, if using an official Apache release, download the compressed archive, extract it and navigate into its root directory.
NOTE: When running the ASan tests, make sure to export the following variable:
On Debian/Ubuntu machine instead of executing the “sudo make install” command it is possible to execute “sudo checkinstall” to build and install a DEB package.
Now you can set the path to where libs and python package are installed:
NOTE: The build can be configured by setting flags on the command line, for example:
It is possible also to build the library supporting more than one elliptic curve and more than one RSA security level, for example
To list other available CMake options, use:
Uninstall software
Building an installer
After having built the libraries you can build a binary installer and a source distribution by running this command
Windows
Start a command prompt as an administrator and either use Git to clone the repository
Or, if using an official Apache release, download the compressed archive, extract it and navigate into its root directory.
Post install append the PATH system variable to point to the install ./lib:
Control Panel - System and Security - System - Advanced System Settings - Environment Variables
The build can be configured using by setting flags on the command line i.e.
Uninstall software
Building an installer
After having built the libraries you can build a Windows installer using this command
In order for this to work NSIS has to have been installed
Contributions
This project includes a Makefile that allows you to test and build the project in a Linux-compatible system with simple commands. All the artifacts and reports produced using this Makefile are stored in the target folder.
All the packages listed in the Dockerfile are required in order to build and test all the library options in the current environment. Alternatively, everything can be built inside a Docker container using the command “make -f Makefile.docker buildall”.
To see all available options:
To build the builder Docker image:
To build the project inside a Docker container (requires Docker) you need to build a builder image (once), and then build the project in its context:
To build a particular set of predefined makefile options inside a Docker container:
or in the current environment:
To execute all the test builds and generate reports in the current environment:
To format the code (please use this command before submitting any pull request):
Contributors
The following people have contributed to milagro-crypto-c
Please add yourself here if you make or have made a contribution.
Making a Contribution
Crypto Notice
This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country’s laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.
The Apache Software Foundation has classified this software as Export Commodity Control Number (ECCN) 5D002, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the “publicly available” Section 742.15(b) exemption (see the BIS Export Administration Regulations, Section 742.15(b)) for both object code and source code.
Disclaimer
Apache Milagro is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.