pbc.h now includes more header files so all the functions documented in the manual can be used without generating warnings (or learning about these extra header files).
I also added the pbc_mpz_randomb() function and a couple of test programs use this now.
Minor fixes: applied John Bethencourt’s patch to address bugs that arose on 64-bit machines, added some comments from Dmitry Kosolapov, resolved a naming conflict that should solve compilation problems in some cases.
The official PBC library URL is now
which means PBC is hosted by a department webserver rather than my personal office machine. However, the git repository still lives on my system.
I’ll try to keep the old URLs working for a while.
I reordered the arguments to element_from_hash(). It seems to be standard to pass the length of a buffer after the pointer to the buffer. This is incompatible with older versions of the library.
I renamed quan.c (contributed by Dmitry Kosolapov) to yuanli.c and removed workarounds that are not needed anymore.
I fixed a bug in element_init_same_as() (reported by John Bethencourt).
I also implemented some discrete log algorithms (brute force, Pollard rho and index calculus for some cases), but these aren’t documented.
I added the element_mul_zn() function so using additive notation for groups matches multiplicative notation better.
I changed how element_from_hash() and element_to_bytes() work. They are incompatible with older versions of PBC.
By default, PBC now tries to use /dev/urandom for random number generation. If this fails, it prints a warning and falls back to a deterministic random number generator.
Dmitry Kosolapov contributed quan.c (in the test subdirectory), which demonstrates the scheme described in this paper.