https://github.com/armfazh/fld-ecc-vec
SIMD Vectorized implementation of X25519, Ed25519, X448 and Ed448
https://github.com/armfazh/fld-ecc-vec
avx2 avx512 cryptography ed25519 ed448 rfc7748 rfc8032 x25519 x448
Last synced: about 1 month ago
JSON representation
SIMD Vectorized implementation of X25519, Ed25519, X448 and Ed448
- Host: GitHub
- URL: https://github.com/armfazh/fld-ecc-vec
- Owner: armfazh
- License: bsd-3-clause
- Created: 2017-10-23T21:05:15.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-03-10T02:41:06.000Z (3 months ago)
- Last Synced: 2025-04-15T12:18:49.523Z (about 1 month ago)
- Topics: avx2, avx512, cryptography, ed25519, ed448, rfc7748, rfc8032, x25519, x448
- Language: C
- Homepage: https://armfazh.github.io/publication/faz-ld-toms-2019/
- Size: 1.37 MB
- Stars: 30
- Watchers: 5
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# FLD ECC AVX2/AVX512
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 AVX2 and AVX512 product of this research project.
```bibtex
@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},
}
```### Compilation
To compile use:
```bash
$ cd fld_ecc_avx2
$ mkdir build; cd build
$ cmake ..
$ make all
```#### Enabling AVX512
Use AVX512 extensions to perform two X25519 operations simultaneously.
```bash
$ cmake .. -DENABLE_AVX512=ON
$ make all
```### Benchmarks
For running the benchmark program use:
```bash
$ ./bin/bench
```The timings reported in the paper were obtained using the Clang compiler version 5.
```bash
$ cd fld_ecc_avx2
$ mkdir build; cd build
$ CC=/path/to/clang cmake ..
$ make
```### Tests
For running the tests program use:
```bash
$ make test_mine unit_tests
$ ./bin/test_mine
$ ./bin/unit_tests
```### Formating Code
For formating code use [astyle](https://astyle.sourceforge.net/):
```bash
$ astyle --style=linux ./src/*c ./include/*.h
```### LICENSE
BSD 3-Clause [LICENSE.txt](LICENSE.txt)