Add Apache License version 2.0.
[pbc.git] / NEWS
blob4c08dae83400e2ec7685ee97bcb6526458b8c498
1 The PBC pairing-based cryptography library. See COPYING for license.
3 Ben Lynn
5 Changes between PBC version 0.5.14 and 0.5.13
7 * Eta pairing (type I), by Homer Hsing
9 Changes between PBC version 0.5.13 and 0.5.12
11 * Many thanks to Homer Hsing for volunteering to maintain this library.
12 * Flattened nested functions.
13 * Bugfix for test script.
15 Changes between PBC version 0.5.12 and 0.5.11
17 * Fixed a parsing bug reported by Michael Adjedj.
19 Changes between PBC version 0.5.11 and 0.5.10
21 * Support native win32 compilation via autotools. Thanks to Michael Rushanan.
23 Changes between PBC version 0.5.10 and 0.5.9
25 * pairing_init_pbc_param() fix thanks to Michael Adjedj.
27 Changes between PBC version 0.5.9 and 0.5.8
29 * Bugfix thanks to Michael Adjedj.
30 * Reduce high exponents for exponentiations in finite groups.
32 Changes between PBC version 0.5.8 and 0.5.7
34 * Changed the license to LGPL.
36 Changes between PBC version 0.5.7 and 0.5.6
38 * Faster multi-pairing (product of pairings) for A, A1, and D pairings.
39   Contributed by Zhang Ye.
40 * New API functions element_pairing() and element_prod_pairing().
42 Changes between PBC version 0.5.6 and 0.5.5
44 * Projective coordinates for A1 pairings. Contributed by Zhang Ye.
45 * Bugfix for affine coordinates for A pairings. Contributed by Zhang Ye.
46 * Optionally suppress error messages. Based on code by Geremy Condra.
48 Changes between PBC version 0.5.5 and 0.5.4
50 * Fixed bug reported by Zhang Ye: comparisons with the identity element in the
51   input groups was broken.
52 * Fixed bug reported by Mario Di Raimondo: comparisons in G2 for some pairing
53   types were broken. (Different representatives of the same coset are now
54   considered equal.)
56 Changes between PBC version 0.5.4 and 0.5.3
58 * Accessors for coordinates of points and coefficients of polynomials.
60 Changes between PBC version 0.5.3 and 0.5.2
62 * Revamped pairing-based calculator.
64 Changes between PBC version 0.5.2 and 0.5.1
66 * Fixed pbc_param_set_str().
67 * Add DLL to Windows release.
69 Changes between PBC version 0.5.1 and 0.5.0
71 * Fixed pbc_param_t parsing bugs, and added error detection.
72 * Increased buffer size in pbc_demo_pairing_init() so the sample parameters
73   actually work.
75 == New in PBC 0.5.0 ==
77 The largest changes involve pairing initialization and pairing parameters.
79 For pairing initialization, supply a buffer containing pairing parameters
80 instead of a `FILE *` stream. For example, rather than:
82   pairing_init_inp_str(pairing, stdin);
84 write something like:
86   char s[1024];
87   size_t count = fread(s, 1, 1024, stdin);
88   if (!count) pbc_die("input error");
89   if (pairing_init_set_buf(pairing, s, count)) pbc_die("pairing init failed");
91 For file reads, personally I like to use mmap() which suits
92 pairing_init_set_buf().
94 The `pbc_param_t` data type for pairing parameters replaces `a_param_t`, ...,
95 `g_param_t`. Having the same data type for all pairing parameter types
96 simplifies the library, though some functions had to be changed slightly.
98 At last, one can initialize a `pairing_t` from a `pbc_param_t`:
100   pairing_t p;
101   pbc_param_t par;
102   pbc_param_init_a_gen(par, 160, 512);
103   pairing_init_pbc_param(p, par);
104   pbc_param_clear(par);
106 === Minor differences ===
108 I trimmed the API. The file stream operations are gone. I removed the
109 fetch_ops_t and tracker_t types: the standard C library already provides
110 routines for reading from disk to memory.
112 I refactored to avoid exposing `symtab_t` and `darray_t`, and undocumented
113 routines such as `poly_alloc()`. I mostly preserved the headers that define
114 these functions, but they are no longer included by `pbc.h`.
116 I replaced the CMake files with `simple.make`, which I use during development,
117 though I test the autotools build before release.
119 To reduce symbol pollution, all official functions and variables of the PBC
120 now start with `pbc_`, `field_`, `element_` or `pairing_`. Other names mostly
121 have hidden visibility in a shared library. Watch out for renamed functions.