Fixed an internal bug in rsa.c
[libgcrypt.git] / NEWS
1 Noteworthy changes in version 1.4.0
2 ------------------------------------------------
3
4
5 Noteworthy changes in version 1.3.2 (2007-12-03)
6 ------------------------------------------------
7
8  * The visibility attribute is now used if supported by the toolchain.
9
10  * The ACE engine of VIA processors is now used for AES-128.
11
12  * The ASN.1 DER template for SHA-224 has been fixed.
13
14
15 Noteworthy changes in version 1.3.1 (2007-10-26)
16 ------------------------------------------------
17
18  * The entire library is now under the LGPL. The helper programs and
19    the manual are under the GPL.  Kudos to Peter Gutmann for giving
20    permissions to relicense the rndw32 and rndunix modules.
21
22  * The Camellia cipher is now under the LGPL and included by default.
23
24  * Fixed a bug in the detection of symbol prefixes which inhibited the
25    build of optimzied assembler code on certain systems.
26
27  * Updated the entropy gatherer for W32.
28
29
30 Noteworthy changes in version 1.3.0 (2007-05-04)
31 ------------------------------------------------
32
33  * Changed the way the RNG gets initialized. This allows to keep it
34    uninitialized as long as no random numbers are used.  To override
35    this, the new macro gcry_fast_random_poll may be used.  It is in
36    general a good idea to spread this macro into the application code
37    to make sure that these polls happen often enough.
38
39  * Made the RNG immune against fork without exec.
40
41  * Reading and writing the random seed file is now protected by a
42    fcntl style file lock on systems that provide this function.
43
44  * Support for SHA-224 and HMAC using SHA-384 and SHA-512.
45
46  * Support for the SEED cipher.
47
48  * Support for the Camellia cipher.  Note that Camellia is disabled by
49    default, and that enabling it changes the license of libgcrypt from
50    LGPL to GPL.
51
52  * Support for OFB encryption mode.
53
54  * gcry_mpi_rshift does not anymore truncate the shift count.
55
56  * Reserved algorithm ranges for use by applications.
57
58  * Support for DSA2.
59
60  * The new function gcry_md_debug should be used instead of the
61    gcry_md_start_debug and gcry_md_stop_debug macros.
62
63  * New configure option --enable-random-daemon to support a system
64    wide random daemon.  The daemon code is experimental and not yet
65    very well working.  It will eventually allow to keep a global
66    random pool for the sake of short living processes.
67
68  * Non executable stack support is now used by default on systems
69    supporting it.
70
71  * Support for Microsoft Windows.
72
73  * Assembler support for the AMD64 architecture.
74
75  * New configure option --enable-mpi-path for optimized builds.
76
77  * Experimental support for ECDSA; should only be used for testing.
78
79  * New control code GCRYCTL_PRINT_CONFIG to print the build
80    configuration.
81
82  * Minor changes to some function declarations.  Buffer arguments are
83    now typed as void pointer.  This should not affect any compilation.
84    Fixed two bugs in return values and clarified documentation.
85
86  * Interface changes relative to the 1.2.0 release:
87  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88  gcry_fast_random_poll   NEW
89  gcry_md_debug           NEW
90  gcry_sexp_nth_string    NEW
91  GCRY_MD_SHA224          NEW
92  GCRY_PK_USAGE_CERT      NEW
93  GCRY_PK_USAGE_AUTH      NEW
94  GCRY_PK_USAGE_UNKN      NEW
95  GCRY_PK_ECDSA           NEW
96  GCRY_CIPHER_SEED        NEW
97  GCRY_CIPHER_CAMELLIA128 NEW
98  GCRY_CIPHER_CAMELLIA192 NEW
99  GCRY_CIPHER_CAMELLIA256 NEW
100  GCRYCTL_FAKED_RANDOM_P  NEW 
101  GCRYCTL_PRINT_CONFIG    NEW
102  GCRYCTL_SET_RNDEGD_SOCKET  NEW.
103  gcry_mpi_scan           CHANGED: Argument BUFFER is now void*.
104  gcry_pk_algo_name       CHANGED: Returns "?" instead of NULL.
105  gcry_cipher_algo_name   CHANGED: Returns "?" instead of "".
106  gcry_pk_spec_t          CHANGED: Element ALIASES is now const ptr.
107  gcry_md_write_t         CHANGED: Argument BUF is now a const void*.
108  gcry_md_ctl             CHANGED: Argument BUFFER is now void*.
109  gcry_cipher_encrypt     CHANGED: Arguments IN and OUT are now void*.
110  gcry_cipher_decrypt     CHANGED: Arguments IN and OUT are now void*.
111  gcry_sexp_sprint        CHANGED: Argument BUFFER is now void*.
112  gcry_create_nonce       CHANGED: Argument BUFFER is now void*.
113  gcry_randomize          CHANGED: Argument BUFFER is now void*.
114  gcry_cipher_register    CHANGED: Argument ALGORITHM_ID is now int*.
115  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116
117
118 Noteworthy changes in version 1.2.0 (2004-04-15)
119 ------------------------------------------------
120
121  * First stable release.
122
123
124 Noteworthy changes in version 1.1.94 (2004-03-29)
125 -------------------------------------------------
126
127  * The support for multi-threaded users goes into its third
128    incarnation.  We removed compile time support for thread libraries.
129    To support the thread library of your choice, you have to set up
130    callback handlers at initialization time.  New data structures, a
131    new control command, and default initializers are provided for this
132    purpose.
133
134  * Interface changes relative to the 1.1.93 release:
135 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
136 libgcrypt-config --thread       OBSOLETE
137 libgcrypt-pth.la                REMOVED
138 libgcrypt-pthread.la            REMOVED
139 GCRYCTL_SET_THREAD_CBS          NEW
140 struct gcrypt_thread_cbs        NEW
141 enum gcry_thread_option         NEW
142 GCRY_THREAD_OPTION_PTH_IMPL     NEW
143 GCRY_THREAD_OPTION_PTHREAD_IMPL NEW
144 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
145
146 Noteworthy changes in version 1.1.93 (2004-03-06)
147 -------------------------------------------------
148
149  * The automatic thread library detection has finally been removed.
150    From now on, only linking explicitely to libgcrypt, libgcrypt-pth
151    or libgcrypt-pthread is supported.
152
153 Noteworthy changes in version 1.1.92 (2004-02-20)
154 -------------------------------------------------
155
156  * Minor bug fixes.
157
158  * Included a limited implementation of RFC2268.
159
160  * Changed API of the gcry_ac_ functions.  Only a very few programs
161    should be affected by this.
162
163  * Interface changes relative to the 1.1.91 release:
164 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
165 GCRY_CIPHER_RFC2268_40          NEW.
166 gcry_ac_data_set                CHANGED: New argument FLAGS.
167 gcry_ac_data_get_name           CHANGED: New argument FLAGS.
168 gcry_ac_data_get_index          CHANGED: New argument FLAGS.
169 gcry_ac_key_pair_generate       CHANGED: New and reordered arguments.
170 gcry_ac_key_test                CHANGED: New argument HANDLE.
171 gcry_ac_key_get_nbits           CHANGED: New argument HANDLE.
172 gcry_ac_key_get_grip            CHANGED: New argument HANDLE.
173 gcry_ac_data_search             REMOVED.
174 gcry_ac_data_add                REMOVED.
175 GCRY_AC_DATA_FLAG_NO_BLINDING   REMOVED.
176 GCRY_AC_FLAG_NO_BLINDING        NEW: Replaces above.
177
178
179 Noteworthy changes in version 1.1.91 (2003-12-19)
180 -------------------------------------------------
181
182  * Code cleanups and minor bug fixes.
183
184
185 Noteworthy changes in version 1.1.90 (2003-11-14)
186 -------------------------------------------------
187
188  * The use of the GCRY_WEAK_RANDOM level is now deprecated in favor of
189    the new gcry_create_nonce function.
190
191  * gcry_sexp_build now supports a "%b" format to include a memory buffer.
192
193  * Minor configuration fixes.
194  
195  * Interface changes relative to the 1.1.44 release:
196 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
197 gcry_create_nonce               NEW
198 gcry_sexp_build                 ENHANCED
199
200
201 Noteworthy changes in version 1.1.44 (2003-10-31)
202 -------------------------------------------------
203
204  * Bug fixes and more code cleanups.
205
206  * Enhanced the prime API.
207
208  * Interface changes relative to the 1.1.43 release:
209 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
210 gcry_prime_group_generator      NEW
211 gcry_prime_release_factors      NEW
212
213
214 Noteworthy changes in version 1.1.43 (2003-09-04)
215 -------------------------------------------------
216
217  * Bug fixes and internal code cleanups.
218
219  * Support for the Serpent cipher algorithm.
220
221  * Interface changes relative to the 1.1.42 release:
222 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
223 gcry_prime_generate             NEW
224 gcry_prime_check                NEW
225
226
227 Noteworthy changes in version 1.1.42 (2003-07-31)
228 -------------------------------------------------
229
230  * Major API cleanup.  Applications need to be converted to the new
231    API.  See README.apichanges for hints on how to do that.  Backward
232    compatibility is provided where it was possible without too much
233    effort and did not collide with the overall sanitization effort.
234    However, this is only for ease of transition.  NO DEPRECATED
235    FUNCTION OR DATA TYPE IS CONSIDERED A PART OF THE API OR ABI AND
236    WILL BE DROPPED IN THE FUTURE WITHOUT CHANGING THE SONAME OF THE
237    LIBRARY. 
238
239  * If gcrypt.h is included in sources compiled by GCC 3.1 or later,
240    deprecated attributes will warn about use of obsolete functions and
241    type definitions.  You can suppress these warnings by passing
242    -Wno-deprecated-declarations to the gcc command.
243
244  * gcry_check_version must be called from now on to initialize the
245    library, it is not longer optional.
246
247  * Removed `libgcrypt errno' concept.
248
249  * Libgcrypt depends on libgpg-error, a library that provides error
250    codes and according functions for all GnuPG components.  Functions
251    that used to return error codes asa `int' have been changed to
252    return a code of type `gcry_error_t'.  All GCRYERR_* error symbols
253    have been removed, since they are now contained in libgpg-error
254    (GPG_ERR_*). All functions and types in libgpg-error have also been
255    wrapped in Libgcrypt. The new types are gcry_err_code_t and
256    gcry_err_source_t.  The new functions are gcry_err_code,
257    gcry_err_source, gcry_error, gcry_err_make, gcry_error_from_errno,
258    gcry_err_make_from_errno, gcry_err_code_from_errno,
259    gcry_err_code_to_errno, gcry_strsource.
260
261  * New function gcry_mpi_dump to help in debugging. 
262
263  * Added alternative interface for asymmetric cryptography.
264
265  * CRC-32, CRC-32 a'la RFC 1510, CRC-24 a'la RFC 2440 are now
266    supported.
267
268  * SHA-256, SHA-384 and SHA-512 are now supported.
269
270  * 128 bit Twofish is now supported.
271
272  * The random module won't print the "not enough random bytes
273    available" anymore.  A new progress status is issued instead.
274
275  * CBC-MAC for block ciphers is now supported, by using a
276    GCRY_CIPHER_CBC_MAC cipher flag.
277
278  * CTR mode for block ciphers is now supported.
279
280  * The public RSA exponent can now be specified in key generation. 
281
282  * RSA blinding is now supported and is used automatically for RSA
283    decryption.  It can be explicitely disabled by using the
284    `no-blinding' symbol in the `flags' S-Expression or by using the
285    GCRY_AC_FLAG_DATA_NO_BLINDING flag when using the ac interface.
286
287  * gcry_sexp_canon_len does not use a `historically encoded' error
288    code anymore.
289
290
291  * Interface changes relative to the 1.1.12 release:
292 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
293 GCRY_MPI                        DEPRECATED; Use: gcry_mpi_t
294 GcryMPI                         DEPRECATED; Use: gcry_mpi_t
295 GCRY_SEXP                       DEPRECATED; Use: gcry_sexp_t
296 GcrySexp                        DEPRECATED; Use: gcry_sexp_t
297 GCRY_CIPHER_HD                  DEPRECATED; Use: gcry_cipher_hd_t
298 GcryCipherHd                    DEPRECATED; Use: gcry_cipher_hd_t
299 GCRY_MD_HD                      DEPRECATED; Use: gcry_md_hd_t
300 GcryMDHd                        DEPRECATED; Use: gcry_md_hd_t
301 gcry_error_t                    NEW
302 gcry_err_code_t                 NEW
303 gcry_err_source_t               NEW
304 gcry_err_make                   NEW
305 gcry_error                      NEW
306 gcry_err_code                   NEW
307 gcry_err_source                 NEW
308 gcry_err_code_from_errno        NEW
309 gcry_err_code_to_errno          NEW
310 gcry_err_make_from_errno        NEW
311 gcry_error_from_errno           NEW
312 gcry_strsource                  NEW
313 GCRYERR_{some error code}       REMOVED; Use GPG_ERR_*
314                                          from libgpg-error instead.
315 gcry_errno                      REMOVED
316 gcry_sexp_canon_len             CHANGED
317 gcry_sexp_build_array           NEW
318 gcry_mpi_scan                   CHANGED: New argument to separate in/out args.
319 gcry_mpi_print                  CHANGED: Ditto.
320 gcry_mpi_dump                   NEW
321 gcry_cipher_open                CHANGED
322 gcry_cipher_reset               NEW
323 gcry_cipher_register            NEW
324 gcry_cipher_unregister          NEW
325 gcry_cipher_list                NEW
326 gcry_cipher_algo_keylen         REPLACED macro with function.
327 gcry_cipher_algo_blklen         REPLACED macro with function.
328 gcry_pk_register                NEW
329 gcry_pk_unregister              NEW
330 gcry_pk_list                    NEW
331 gcry_pk_decrypt                 ENHANCED: Allows flag to return
332                                           complete S-expression.
333 gcry_md_open                    CHANGED
334 gcry_md_copy                    CHANGED
335 gcry_md_is_enabled              NEW
336 gcry_md_is_secure               NEW
337 gcry_md_register                NEW
338 gcry_md_unregister              NEW
339 gcry_md_list                    NEW
340 gcry_ac_data_t                  NEW
341 gcry_ac_key_t                   NEW
342 gcry_ac_key_pair_t              NEW
343 gcry_ac_handle_t                NEW
344 gcry_ac_key_spec_rsa_t          NEW
345 gcry_ac_data_new                NEW
346 gcry_ac_data_destroy            NEW
347 gcry_ac_data_set                NEW
348 gcry_ac_data_copy               NEW
349 gcry_ac_data_length             NEW
350 gcry_ac_data_get_name           NEW
351 gcry_ac_data_get_index          NEW
352 gcry_ac_data_clear              NEW
353 gcry_ac_open                    NEW
354 gcry_ac_close                   NEW
355 gcry_ac_key_init                NEW
356 gcry_ac_key_pair_generate       NEW
357 gcry_ac_key_pair_extract        NEW
358 gcry_ac_key_data_get            NEW
359 gcry_ac_key_test                NEW
360 gcry_ac_key_get_nbits           NEW
361 gcry_ac_key_get_grip            NEW
362 gcry_ac_key_destroy             NEW
363 gcry_ac_key_pair_destroy        NEW
364 gcry_ac_data_encrypt            NEW
365 gcry_ac_data_decrypt            NEW
366 gcry_ac_data_sign               NEW
367 gcry_ac_data_verify             NEW
368 gcry_ac_id_to_name              NEW
369 gcry_ac_name_to_id              NEW
370 gcry_handler_progress_t         NEW
371 gcry_handler_alloc_t            NEW
372 gcry_handler_secure_check_t     NEW
373 gcry_handle_realloc_t           NEW
374 gcry_handler_free_t             NEW
375 gcry_handler_no_mem_t           NEW
376 gcry_handler_error_t            NEW
377 gcry_handler_log_t              NEW
378 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
379
380 Noteworthy changes in version 1.1.12 (2003-01-20)
381 -------------------------------------------------
382
383  * gcry_pk_sign, gcry_pk_verify and gcry_pk_encrypt can now handle an
384    optional pkcs1 flags parameter in the S-expression.  A similar flag
385    may be passed to gcry_pk_decrypt but it is only syntactically
386    implemented.
387
388  * New convenience macro gcry_md_get_asnoid.
389
390  * There is now some real stuff in the manual.
391
392
393 Noteworthy changes in version 1.1.11 (2002-12-21)
394 -------------------------------------------------
395
396  * Don't export internal symbols anymore (currently only for GNU systems)
397
398  * New algorithm: MD4
399
400  * Implemented ciphertext stealing.
401
402  * Smaller bugs fixes and a few new OIDs.
403
404  * Interface changes relative to the 1.1.8 release:
405 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
406 gcry_cipher_cts                   NEW
407 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
408
409
410 Noteworthy changes in version 1.1.10 (2002-09-20)
411 -------------------------------------------------
412
413  * Fixed shared library builds for i386, PPC and Sparc.
414
415  * Added simple benchmark tool.
416
417  * Replaced the internal mutexes by code which automatically adapts to
418    the used threading library.  Currently Pth and Pthread are
419    supported.  For non-ELF systems the GNU toolchain is now required..
420
421  * Added untested support to build Windows DLLs.
422
423 Noteworthy changes in version 1.1.9 (2002-08-23)
424 ------------------------------------------------
425
426  * Support for plain old DES.
427
428
429 Noteworthy changes in version 1.1.8 (2002-06-25)
430 ------------------------------------------------
431
432  * Minor cleanups and exported a few new functions.
433
434  * Interface changes relative to the 1.1.7 release:
435 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
436 gcry_mpi_div                      NEW
437 gcry_mpi_mod                      NEW
438 gcry_mpi_invm                     NEW
439 gcry_mpi_swap                     NEW
440 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
441
442 Noteworthy changes in version 1.1.7 (2002-05-21)
443 ------------------------------------------------
444
445 * Libgcrypt is now distributed under the terms of the GNU Lesser
446   General Public License; see the README file for details.    
447   
448 * It is possible to use libgcrypt w/o intialized secure memory.
449
450 * Libgcrypt should now be thread safe after the initialization.
451   gcry_control (GCRYCRL_INITIALIZATION_FINISHED,NULL,0) should have
452   been called before creating additional threads.
453
454  * Interface changes relative to the 1.1.6 release:
455 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
456 GCRYCTL_DISABLE_INTERNAL_LOCKING  NEW
457 GCRYCTL_DISABLE_SECMEM            NEW
458 GCRYCTL_INITIALIZATION_FINISHED   NEW
459 GCRYCTL_INITIALIZATION_FINISHED_P NEW
460 GCRYCTL_ANY_INITIALIZATION_P      NEW
461 gcry_strdup                       NEW
462 gcry_sexp_create                  NEW
463 gcry_sexp_new                     NEW
464 gcry_set_progress_handler         NEW
465 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
466
467 Noteworthy changes in version 1.1.6 (2002-02-07)
468 ------------------------------------------------
469
470   * Enhanced the S-expression conversion functions.
471         
472 Noteworthy changes in version 1.1.5 (2001-12-18)
473 ------------------------------------------------
474
475   * gcry_{cipher,md}_map_name are now able to map stringified object IDs.
476
477   * New functions gcry_sexp_canon_len and gcry_cipher_mode_from_oid.
478
479   * Closed some memory leaks.
480
481
482 Noteworthy changes in version 1.1.4 (2001-08-03)
483 ------------------------------------------------
484
485   * Arcfour does now work.                   
486
487   * Some minor fixes.
488
489   * Added a first test program
490
491   * Migrated to autoconf 2.52.
492
493
494 Noteworthy changes in version 1.1.3 (2001-05-31)
495 ------------------------------------------------
496
497   * First release of Libgcrypt which is a result of splitting GnuPG
498     into into libgcrypt and GnuPG.
499
500
501 Copyright 2001, 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
502
503 This file is free software; as a special exception the author gives
504 unlimited permission to copy and/or distribute it, with or without
505 modifications, as long as this notice is preserved.
506
507 This file is distributed in the hope that it will be useful, but
508 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
509 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.