List of Pairing Libraries
Pairings can be used for all kinds of advanced cryptographic schemes such as Encryption (Identity-based, Attribute-based, Predicate-based, etc.), Signatures, Zero-Knowledge Proofs, etc. It is in no particular order.
Provides multiple types of Elliptic Curve groups with appropriate pairings on top of them. Code repository resides here.
License: LGPL
Language: C
Thesis: On the Implementation of Pairing-Based Cryptography by Ben Lynn (2007)
License: LGPL v2.1
Language: C
License: Unlicensed
Language: nesC
License: AGPL v3 or later, proprietary possible Language: C, C++ (wrapper)
License: 3-clause BSD
Language: C
Paper: Software Implementation of a Pairing Function for Public Key Cryptosystems by Kanbara, Yusuke; Teruya, Tadanori; Kanayama, Naoki; Nishide, Takashi; Okamoto, Eiji (2015)
Uses PBC (or MIRACL or RELIC)
License: LGPL v3
Language: Python
Uses PBC for performance, but is also full implemented in Java. Code can be found on SourceForge.
License: LGPL v3
Language: Java
Repackaged from jPBC.
License: LGPL
Language: Java
License: 3-clause BSD
Language: C++, Java (wrapper)
Paper: High-Speed Software Implementation of the Optimal Ate Pairing over Barreto-Naehrig Curves by Jean-Luc Beuchat, Jorge Enrique González Díaz, Shigeo Mitsunari, Eiji Okamoto, Francisco Rodríguez-Henríquez, Tadanori Teruya (2010)
License: Commercial
Language: C/C++
Contains hardware-accelerated pairings.
License: ?/unlicensed
Language: VHDL + C++
Implementation of etaT, Tate, modified Tate and Hyper Elliptic Pairings.
License: ?/unlicensed
Language: Java
Pairing with use of NEON instruction set for ARMv7+. Instantiation through ABE.
License: Public Domain
Language: C + Assembler(NEON)
Platform: ARMv7
Contains an etaT pairing implementation here.
License: propietary Language: Java
Contains an "edwards" pairing implementation here.
License: MIT
Language: C++
CryptoSage contains many crypto primitives built on top of SageMath.
License: ?/unlicensed
Language: Python
Pure JavaScript implementation for Eta, Ate, Tate pairings.
License: ?/unlicensed
Language: JavaScript
License: GPL v2 Language: Java
Pairings on top of BouncyCastle.
License: GPL v3 Language: Java
Efficient Pairings for NEON.
License: ?
Language: C + ASM_446/ASM_638
Platform: ARMv7 & ARMv8
Thesis: Efficient Implementations of Pairing-BasedCryptography on Embedded Systems
Efficient Pairings for wireless sensors.
License: LGPL v?
Language: nesC
Platform: TinyOS
Paper: TinyPairing: A Fast and Lightweight Pairing-Based Cryptographic Library for Wireless Sensor Networks
The Priv.io project uses CPABE in JavaScript and compiled it to JavaScript from C using Emscripten.
License: ?
Language: JavaScript/asm.js
Platform: Any JavaScript interpreter
Code:
License: Public Domain
Language: C+QHASM
Code: dclxvi-20130329.tar.bz2
Paper: New software speed records for cryptographic pairings
Patched code: agl/dclxvi for use in agl/pond (a Go library)
License: MIT or Apache 2.0
Language: Rust
Notes:
License: GPL 3.0 or LGPL 3.0 Language: Go
Notes:
License: LGPL Language: Perl
Notes:
License: AGPL 3.0 Language: JavaScript
Notes:
License: BSD-style
Language: Go
Notes:
License: BSD 3-clause
Language: ASM
Langauge bindings: C++, Java, C#
Notes:
License: BSD 3-clause
Language: Haskell
Java crypto provider and offers pairings over Barreto-Naehrig curves (Type-2 and Type-3).
License: commercial, special free license agreements for research and teaching available
Language: Java, JCE