Skip to content

Instantly share code, notes, and snippets.

@sebastinas
Forked from artjomb/PairingLibs.md
Last active December 16, 2016 08:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebastinas/b7ff08aa9bf4382d913076d99b80e14e to your computer and use it in GitHub Desktop.
Save sebastinas/b7ff08aa9bf4382d913076d99b80e14e to your computer and use it in GitHub Desktop.
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)

TEPLA (University of Tsukuba Elliptic Curve and Pairing Library)

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

Java crypto provider and offers pairings on Barreto-Naehrig curves.

License: commercial, special license agreements for research and teaching available Language: Java

Uses PBC for performance, but is also full implemented in Java. Code can be found on SourceForge.

License: LGPL v3
Language: Java

arcanum-pbc under the arcanum umbrella

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

NEON optimized pairing

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

PBC through CPABE in Priv.io

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:

  • Asymmetric pairing over Barreto-Naehrig curve
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment