blob: 128f6656e5448fd5a6a9c95d23a6651931724fe4 [file] [log] [blame]
AMCL is very simple to build for Rust.
This version supports both 32-bit and 64-bit builds.
If your processor and operating system are both 64-bit, a 64-bit build
will probably be best. Otherwise use a 32-bit build.
First - decide the modulus and curve type you want to use. Edit rom32.rs
or rom64.rs where indicated. You will probably want to use one of the curves
whose details are already in there. You might want to "raid" the rom
file from the C version of the library for more curves.
Three example API files are provided, mpin.rs which
supports our M-Pin (tm) protocol, ecdh.rs which supports elliptic
curve key exchange, digital signature and public key crypto, and rsa.rs
which supports the RSA method. The first can be tested using the
TestMPIN.rs driver program, the second can be tested using TestECDH.rs,
and the third with TestRSA.rs
In the rom32.rs/rom64.rs file you must provide the curve constants. Several
examples are provided there, if you are willing to use one of these.
To help generate the ROM constants for your own curve some MIRACL helper
programs are included. The programs bngen.cpp and blsgen.cpp generate ROM
data for a BN and BLS pairing friendly curves, and the program ecgen.cpp
generates ROM data for regular EC curves.
The MIRACL based program check.cpp helps choose the best number base for
big number representation, given the word-length and the size of the modulus.
The program bigtobig.cpp converts a big number to the AMCL
BIG format.
For a quick jumpstart:-
Copy rom32.rs to rom.rs for a 32-bit build
rustc --cfg D32 -O -A dead_code TestMPIN.rs
or
rustc --cfg D32 -O -A dead_code TestECDH.rs
or
rustc --cfg D32 -O -A dead_code TestRSA.rs
also
rustc --cfg D32 -O -A dead_code BenchtestEC.rs
rustc --cfg D32 -O -A dead_code BenchtestPAIR.rs
For a 64-bit build copy rom64.rs to rom.rs, and use instead the
flag --cfg D64