This is a mathematical software library for computing the Edwards Digital Signature Algorithm (EdDSA) and the Diffie-Hellman functions X25519 and X448. The library is optimized with the Intel Advanced Vector eXtensions version 2 (AVX2) and is derived from a research project.
@article{fld_ecc_avx2,
doi = {10.1145/3309759},
author = {Armando Faz-Hern\'{a}ndez and
Julio L\'{o}pez and
Ricardo Dahab},
title = {High-performance Implementation of Elliptic Curve
Cryptography Using Vector Instructions},
year = {2019},
journal = {ACM Transactions on Mathematical Software (TOMS)},
publisher = {ACM},
volume = {45},
number = {3},
keywords = {Edwards Digital Signature Algorithm, Ed25519,
Diffie-Hellman Protocol, AVX2 Vector Instructions,
Elliptic Curve Cryptography, Secure Software},
}
To compile use:
$ cd fld_ecc_avx2
$ mkdir build; cd build
$ cmake ..
$ make all
For running the benchmark program use:
$ ./bin/bench
The timings reported in the paper were obtained using the Clang compiler version 5.
$ cd fld_ecc_avx2
$ mkdir build; cd build
$ CC=/path/to/clang cmake ..
$ make
For running the tests program use:
$ ./bin/tests
BSD 3-Clause LICENSE.txt