The Pairing-Based Cryptography Library

Ancient History


Uses (generalized) Karatsuba polynomial multiplication for degree 3, 6 polynomials giving a slight speedup. Commented out Sakai-Kasahara Schnorr identity-based signature scheme due to patent issues.

Wed Apr 5 14:10:51 PDT 2006


Various optimizations, e.g. removed gross inefficiencies in polynomial multiplication that were somehow overlooked.

Fri Mar 31 21:02:10 PST 2006


More cleanup. Every source file is in a subdirectory now. Formatted manual in DocBook. Changed output of listmnt. Can see progress of Hilbert polynomial computation. Renamed testmnt to gencparam.

Fri Mar 31 15:38:48 PST 2006


Fixed problems with MNT curve generation.

Thu Mar 30 17:53:59 PST 2006


Started organizing source files into subdirectories. Added Cha-Cheon and Sakai-Kasahara-Schnorr identity-based signatures. Matt Steiner’s broadcast encryption code is now included.

Sat Mar 11 11:22:08 PST 2006


Added BGN curves i.e. type A curves of any given order.

Thu Feb 2 01:19:39 PST 2006


Changed the way compressed points work. Incompatible with last version.

Mon Jan 30 12:20:49 PST 2006


Added wrapper functions for reading/writing compressed/x-coordinate-only points.

Sun Jan 29 22:25:01 PST 2006


Type F pairings implemented: these use curves with embedding degree 12.

Fri May 13 18:23:13 PDT 2005


Sliding windows for exponentiations in finite fields (due to Hovav Shacham). Fixed problem which prevented previous version from compiling.

Sun May 1 02:23:26 PDT 2005


Code cleanup. Type A pairings use projective coordinates. Minor type C pairing optimization.

Thu Apr 28 16:22:30 PDT 2005


Plugged a memory leak.

Thu Apr 28 13:23:26 PDT 2005


When possible, generated curves have group orders whose length in bits match the desired length exactly. Before it could be a off by one. Generated new sample A and E pairing parameters. Type E pairing optimized.

Wed Apr 27 23:18:37 PDT 2005


A few more optimizations.

Tue Apr 26 20:24:38 PDT 2005


Minor optimizations, bugfixes and cleanup.

Tue Apr 26 01:18:20 PDT 2005


Cleaned up code, plugged a memory leak. Implemented one type of singular curve.

Mon Apr 25 14:00:47 PDT 2005


New makefile from Hovav. Now creates the library libpbc.a. More documentation. API changes, pairings can be initialized with parameters from different types of curves.

Sun Apr 24 13:59:18 PDT 2005


Fixed a bug that caused element_from_bytes for field extensions to fail in some situations. Applied patch due to Hovav Shacham: new Makefile, code cleanup, multiexponentiation, bugfix.

Fri Apr 22 11:07:29 PDT 2005


Fixed curve parameter output bugs.

Thu Apr 21 02:35:38 PDT 2005


Plugged a memory leak.

Thu Apr 21 02:04:50 PDT 2005


Tate exponentiation optimization for MNT k=6 curves. The pairing is now over twice as fast for this case.

Wed Apr 20 14:22:58 PDT 2005


Optimizations e.g. denominator elimination for even embedding degrees by using twist curves. Bug fixes, e.g. length_in_bytes() for some fields.

Wed Apr 20 02:42:53 PDT 2005


Plugged memory leaks, some pairing optimizations (Solinas-prime-specific Miller’s algorithm, improved Tate exponentiation for degree 2 extensions). Bumped up minor version number rather than patch level to reflect increased confidence in the library for real applications.

Tue Apr 19 14:31:04 PDT 2005


Code cleanup, implemented k=2 supersingular curves.

Sun Apr 17 02:37:40 PDT 2005


Minor bugfix, BBS group signatures demo.

Thu Apr 14 02:37:48 PDT 2005


Implemented serialization for points.

Fri Apr 8 12:17:58 PDT 2005


Added different ways of generating random numbers. e.g. can call random_set_file("/dev/urandom") to use /dev/urandom as the source of random bits.

Thu Feb 3 13:58:37 PST 2005


Wrote basic serialization/deserialization routines for some data types. Example Boneh-Lynn-Shacham and Boneh-Boyen signature libraries included, though eventually I intend to have a separate library for these.

Mon Jan 24 00:02:50 PST 2005


Introduced the ‘pairing_t’ data type, to make it easier to write programs using pairings. IBE, short signature demo programs.

Thu Dec 9 13:17:13 PST 2004


Routines for MNT curve generation, pairing computation.

Mon Dec 6 18:41:05 PST 2004