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