The Pairing-Based Cryptography Library


Pairing-based cryptography is a relatively young area of cryptography that revolves around a certain function with special properties.

The PBC (Pairing-Based Cryptography) library is a free C library (released under the GNU Public License) built on the GMP library that performs the mathematical operations underlying pairing-based cryptosystem.

The PBC library is designed to be the backbone of implementations of pairing-based cryptosystems, thus speed and portability are important goals. It provides routines such as elliptic curve generation, elliptic curve arithmetic and pairing computation.

The API is abstract enough that the PBC library can be used even if the programmer possesses only an elementary understanding of pairings. There is no need to learn about elliptic curves or much of number theory. (The minimum requirement is some knowledge of cyclic groups and properties of the pairing.)

This tutorial shows how to implement a pairing-based cryptosystem in a few lines using the PBC library.

The PBC library can also be used to build conventional cryptosystems.


In the example directory, there are demonstrations of many cryptosystems. More work would be needed to turn them into practical applications, but they show how to build pairing-based cryptosystems using the PBC library. Examples include:

Thanks to Dmitry Kosolapov for many of these programs.

Mailing List

Please send PBC related messages to the PBC developers' mailing list.


The main author of the PBC library is Ben Lynn who is still developing and maintaining it.

Thanks to the many others have contributed, including Hovav Shacham, Matt Steiner, Joe Cooley, Rob Figueiredo, Roger Khazan, Dmitry Kosolapov, John Bethencourt, Paul Miller and Michael Cheng.