random: Try to use getrandom() instead of /dev/urandom (Linux only).
[libgcrypt.git] / NEWS
1 Noteworthy changes in version 1.7.1 (unreleased)  [C21/A1/R_]
2 ------------------------------------------------
3
4
5 Noteworthy changes in version 1.7.0 (2016-04-15)  [C21/A1/R0]
6 ------------------------------------------------
7
8  * New algorithms and modes:
9
10    - SHA3-224, SHA3-256, SHA3-384, SHA3-512, and MD2 hash algorithms.
11
12    - SHAKE128 and SHAKE256 extendable-output hash algorithms.
13
14    - ChaCha20 stream cipher.
15
16    - Poly1305 message authentication algorithm
17
18    - ChaCha20-Poly1305 Authenticated Encryption with Associated Data
19      mode.
20
21    - OCB mode.
22
23    - HMAC-MD2 for use by legacy applications.
24
25  * New curves for ECC:
26
27    - Curve25519.
28
29    - sec256k1.
30
31    - GOST R 34.10-2001 and GOST R 34.10-2012.
32
33  * Performance:
34
35    - Improved performance of KDF functions.
36
37    - Assembler optimized implementations of Blowfish and Serpent on
38      ARM.
39
40    - Assembler optimized implementation of 3DES on x86.
41
42    - Improved AES using the SSSE3 based vector permutation method by
43      Mike Hamburg.
44
45    - AVX/BMI is used for SHA-1 and SHA-256 on x86.  This is for SHA-1
46      about 20% faster than SSSE3 and more than 100% faster than the
47      generic C implementation.
48
49    - 40% speedup for SHA-512 and 72% for SHA-1 on ARM Cortex-A8.
50
51    - 60-90% speedup for Whirlpool on x86.
52
53    - 300% speedup for RIPE MD-160.
54
55    - Up to 11 times speedup for CRC functions on x86.
56
57  * Other features:
58
59    - Improved ECDSA and FIPS 186-4 compliance.
60
61    - Support for Montgomery curves.
62
63    - gcry_cipher_set_sbox to tweak S-boxes of the gost28147 cipher
64      algorithm.
65
66    - gcry_mpi_ec_sub to subtract two points on a curve.
67
68    - gcry_mpi_ec_decode_point to decode an MPI into a point object.
69
70    - Emulation for broken Whirlpool code prior to 1.6.0.  [from 1.6.1]
71
72    - Flag "pkcs1-raw" to enable PCKS#1 padding with a user supplied
73      hash part.
74
75    - Parameter "saltlen" to set a non-default salt length for RSA PSS.
76
77    - A SP800-90A conforming DRNG replaces the former X9.31 alternative
78      random number generator.
79
80    - Map deprecated RSA algo number to the RSA algo number for better
81      backward compatibility. [from 1.6.2]
82
83    - Use ciphertext blinding for Elgamal decryption [CVE-2014-3591].
84      See http://www.cs.tau.ac.il/~tromer/radioexp/ for details.
85      [from 1.6.3]
86
87    - Fixed data-dependent timing variations in modular exponentiation
88      [related to CVE-2015-0837, Last-Level Cache Side-Channel Attacks
89       are Practical]. [from 1.6.3]
90
91    - Flag "no-keytest" for ECC key generation.  Due to a bug in
92      the parser that flag will also be accepted but ignored by older
93      version of Libgcrypt. [from 1.6.4]
94
95    - Speed up the random number generator by requiring less extra
96      seeding. [from 1.6.4]
97
98    - Always verify a created RSA signature to avoid private key leaks
99      due to hardware failures. [from 1.6.4]
100
101    - Mitigate side-channel attack on ECDH with Weierstrass curves
102      [CVE-2015-7511].  See http://www.cs.tau.ac.IL/~tromer/ecdh/ for
103      details. [from 1.6.5]
104
105  * Internal changes:
106
107    - Moved locking out to libgpg-error.
108
109    - Support of the SYSROOT envvar in the build system.
110
111    - Refactor some code.
112
113    - The availability of a 64 bit integer type is now mandatory.
114
115  * Bug fixes:
116
117    - Fixed message digest lookup by OID (regression in 1.6.0).
118
119    - Fixed a build problem on NetBSD
120
121    - Fixed memory leaks in ECC code.
122
123    - Fixed some asm build problems and feature detection bugs.
124
125  * Interface changes relative to the 1.6.0 release:
126    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127    gcry_cipher_final               NEW macro.
128    GCRY_CIPHER_MODE_CFB8           NEW constant.
129    GCRY_CIPHER_MODE_OCB            NEW.
130    GCRY_CIPHER_MODE_POLY1305       NEW.
131    gcry_cipher_set_sbox            NEW macro.
132    gcry_mac_get_algo               NEW.
133    GCRY_MAC_HMAC_MD2               NEW.
134    GCRY_MAC_HMAC_SHA3_224          NEW.
135    GCRY_MAC_HMAC_SHA3_256          NEW.
136    GCRY_MAC_HMAC_SHA3_384          NEW.
137    GCRY_MAC_HMAC_SHA3_512          NEW.
138    GCRY_MAC_POLY1305               NEW.
139    GCRY_MAC_POLY1305_AES           NEW.
140    GCRY_MAC_POLY1305_CAMELLIA      NEW.
141    GCRY_MAC_POLY1305_SEED          NEW.
142    GCRY_MAC_POLY1305_SERPENT       NEW.
143    GCRY_MAC_POLY1305_TWOFISH       NEW.
144    gcry_md_extract                 NEW.
145    GCRY_MD_FLAG_BUGEMU1            NEW [from 1.6.1].
146    GCRY_MD_GOSTR3411_CP            NEW.
147    GCRY_MD_SHA3_224                NEW.
148    GCRY_MD_SHA3_256                NEW.
149    GCRY_MD_SHA3_384                NEW.
150    GCRY_MD_SHA3_512                NEW.
151    GCRY_MD_SHAKE128                NEW.
152    GCRY_MD_SHAKE256                NEW.
153    gcry_mpi_ec_decode_point        NEW.
154    gcry_mpi_ec_sub                 NEW.
155    GCRY_PK_EDDSA                   NEW constant.
156    GCRYCTL_GET_TAGLEN              NEW.
157    GCRYCTL_SET_SBOX                NEW.
158    GCRYCTL_SET_TAGLEN              NEW.
159    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160
161
162 Version 1.6.5 (2016-02-09) [C20/A0/R5]
163 Version 1.6.4 (2015-09-08) [C20/A0/R4]
164 Version 1.6.3 (2015-02-27) [C20/A0/R3]
165 Version 1.6.2 (2014-08-21) [C20/A0/R2]
166 Version 1.6.1 (2014-01-29) [C20/A0/R1]
167
168
169 Noteworthy changes in version 1.6.0 (2013-12-16) [C20/A0/R0]
170 ------------------------------------------------
171
172  * Removed the long deprecated gcry_ac interface.  Thus Libgcrypt is
173    not anymore ABI compatible to previous versions if they used the ac
174    interface.
175
176  * Removed the module register subsystem.
177
178  * The deprecated message digest debug macros have been removed.  Use
179    gcry_md_debug instead.
180
181  * Removed deprecated control codes.
182
183  * Improved performance of most cipher algorithms as well as for the
184    SHA family of hash functions.
185
186  * Added support for the IDEA cipher algorithm.
187
188  * Added support for the Salsa20 and reduced Salsa20/12 stream ciphers.
189
190  * Added limited support for the GOST 28147-89 cipher algorithm.
191
192  * Added support for the GOST R 34.11-94 and R 34.11-2012 (Stribog)
193    hash algorithms.
194
195  * Added a random number generator to directly use the system's RNG.
196    Also added an interface to prefer the use of a specified RNG.
197
198  * Added support for the SCRYPT algorithm.
199
200  * Mitigated the Yarom/Falkner flush+reload side-channel attack on RSA
201    secret keys.  See <http://eprint.iacr.org/2013/448> [CVE-2013-4242].
202
203  * Added support for Deterministic DSA as per RFC-6979.
204
205  * Added support for curve Ed25519.
206
207  * Added a scatter gather hash convenience function.
208
209  * Added several MPI amd SEXP helper functions.
210
211  * Added support for negative numbers to gcry_mpi_print,
212    gcry_mpi_aprint and gcry_mpi_scan.
213
214  * The algorithm ids GCRY_PK_ECDSA and GCRY_PK_ECDH are now
215    deprecated.  Use GCRY_PK_ECC if you need an algorithm id.
216
217  * Changed gcry_pk_genkey for "ecc" to only include the curve name and
218    not the parameters.  The flag "param" may be used to revert this.
219
220  * Added a feature to globally disable selected hardware features.
221
222  * Added debug helper functions.
223
224  * Interface changes relative to the 1.5.0 release:
225  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
226  gcry_ac_*                       REMOVED.
227  GCRY_AC_*                       REMOVED.
228  gcry_module_t                   REMOVED.
229  gcry_cipher_register            REMOVED.
230  gcry_cipher_unregister          REMOVED.
231  gcry_cipher_list                REMOVED.
232  gcry_pk_register                REMOVED.
233  gcry_pk_unregister              REMOVED.
234  gcry_pk_list                    REMOVED.
235  gcry_md_register                REMOVED.
236  gcry_md_unregister              REMOVED.
237  gcry_md_list                    REMOVED.
238  gcry_md_start_debug             REMOVED (macro).
239  gcry_md_stop_debug              REMOVED (macro).
240  GCRYCTL_SET_KEY                 REMOVED.
241  GCRYCTL_SET_IV                  REMOVED.
242  GCRYCTL_SET_CTR                 REMOVED.
243  GCRYCTL_DISABLE_ALGO            CHANGED: Not anymore thread-safe.
244  gcry_pk_genkey                  CHANGED: ECC curve params not returned.
245  gcry_md_hash_buffers            NEW.
246  gcry_buffer_t                   NEW.
247  GCRYCTL_SET_ENFORCED_FIPS_FLAG  NEW.
248  GCRYCTL_SET_PREFERRED_RNG_TYPE  NEW.
249  GCRYCTL_GET_CURRENT_RNG_TYPE    NEW.
250  GCRYCTL_CLOSE_RANDOM_DEVICE     NEW.
251  GCRY_RNG_TYPE_STANDARD          NEW.
252  GCRY_RNG_TYPE_FIPS              NEW.
253  GCRY_RNG_TYPE_SYSTEM            NEW.
254  gcry_mpi_is_neg                 NEW.
255  gcry_mpi_neg                    NEW.
256  gcry_mpi_abs                    NEW.
257  gcry_mpi_snatch                 NEW.
258  gcry_mpi_set_opaque_copy        NEW.
259  gcry_mpi_point_t                NEW.
260  gcry_mpi_point_new              NEW.
261  gcry_mpi_point_release          NEW.
262  gcry_mpi_point_get              NEW.
263  gcry_mpi_point_snatch_get       NEW.
264  gcry_mpi_point_set              NEW.
265  gcry_mpi_point_snatch_set       NEW.
266  gcry_ctx_t                      NEW.
267  gcry_ctx_release                NEW.
268  gcry_mpi_ec_new                 NEW.
269  gcry_mpi_ec_get_mpi             NEW.
270  gcry_mpi_ec_get_point           NEW.
271  gcry_mpi_ec_set_mpi             NEW.
272  gcry_mpi_ec_set_point           NEW.
273  gcry_mpi_ec_get_affine          NEW.
274  gcry_mpi_ec_dup                 NEW.
275  gcry_mpi_ec_add                 NEW.
276  gcry_mpi_ec_mul                 NEW.
277  gcry_mpi_ec_curve_point         NEW.
278  GCRYMPI_FLAG_IMMUTABLE          NEW.
279  GCRYMPI_FLAG_CONST              NEW.
280  GCRYMPI_FLAG_USER1              NEW.
281  GCRYMPI_FLAG_USER2              NEW.
282  GCRYMPI_FLAG_USER3              NEW.
283  GCRYMPI_FLAG_USER4              NEW.
284  GCRYMPI_CONST_ONE               NEW.
285  GCRYMPI_CONST_TWO               NEW.
286  GCRYMPI_CONST_THREE             NEW.
287  GCRYMPI_CONST_FOUR              NEW.
288  GCRYMPI_CONST_EIGHT             NEW.
289  GCRYMPI_FMT_OPAQUE              NEW.
290  GCRYPT_VERSION_NUMBER           NEW.
291  GCRY_KDF_SCRYPT                 NEW.
292  gcry_pubkey_get_sexp            NEW.
293  GCRYCTL_DISABLE_LOCKED_SECMEM   NEW.
294  GCRYCTL_DISABLE_PRIV_DROP       NEW.
295  GCRY_CIPHER_SALSA20             NEW.
296  gcry_sexp_nth_buffer            NEW.
297  gcry_sexp_extract_param         NEW.
298  GCRY_CIPHER_SALSA20R12          NEW.
299  GCRY_CIPHER_GOST28147           NEW.
300  GCRY_MD_GOSTR3411_94            NEW.
301  GCRY_MD_STRIBOG256              NEW.
302  GCRY_MD_STRIBOG512              NEW.
303  GCRY_PK_ECC                     NEW.
304  gcry_log_debug                  NEW.
305  gcry_log_debughex               NEW.
306  gcry_log_debugmpi               NEW.
307  gcry_log_debugpnt               NEW.
308
309
310 Noteworthy changes in version 1.5.0 (2011-06-29)
311 ------------------------------------------------
312
313  * New function gcry_kdf_derive implementing OpenPGP S2K algorithms
314    and PBKDF2.
315
316  * Support for WindowsCE.
317
318  * Support for ECDH.
319
320  * Support for OAEP and PSS methods as described by RFC-3447.
321
322  * Fixed PKCS v1.5 code to always return the leading zero.
323
324  * New format specifiers "%M" and "%u" for gcry_sexp_build.
325
326  * Support opaque MPIs with "%m" and "%M" in gcry_sexp_build.
327
328  * New functions gcry_pk_get_curve and gcry_pk_get_param to map ECC
329    parameters to a curve name and to retrieve parameter values.
330
331  * gcry_mpi_cmp applied to opaque values has a defined semantic now.
332
333  * Uses the Intel AES-NI instructions if available.
334
335  * The use of the deprecated Alternative Public Key Interface
336    (gcry_ac_*) will now print compile time warnings.
337
338  * The module register subsystem has been deprecated.  This subsystem
339    is not flexible enough and would always require ABI changes to
340    extend the internal interfaces.  It will eventually be removed.
341    Please contact us on the gcrypt-devel mailing list to discuss
342    whether you really need this feature or how it can be replaced by
343    an internal plugin mechanism.
344
345  * CTR mode may now be used with data chunks of arbitrary length.
346
347  * Changes also done in 1.4.6 (2010-07-13):
348  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
349
350  * New variants of the TIGER algorithm.
351
352  * New cipher algorithm mode for AES-WRAP.
353
354  * Changes also done in 1.4.5 (2009-12-11):
355  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
356
357  * Fixed minor memory leak in DSA key generation.
358
359  * No more switching to FIPS mode if /proc/version is not readable.
360
361  * Fixed sigill during Padlock detection on old CPUs.
362
363  * Fixed a hang on some W2000 machines.
364
365  * Boosted SHA-512 performance by 30% on ia32 boxes and gcc 4.3;
366    SHA-256 went up by 25%.
367
368  * Interface changes relative to the 1.4.6 release:
369  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
370  GCRY_PK_ECDH               NEW.
371  gcry_pk_get_curve          NEW.
372  gcry_pk_get_param          NEW.
373  GCRYCTL_DISABLE_HWF        NEW.
374  gcry_kdf_derive            NEW.
375  gcry_pk_encrypt            EXTENDED: Support OAEP.
376  gcry_pk_decrypt            EXTENDED: Support OAEP.
377  gcry_pk_sign               EXTENDED: Support PSS.
378  gcry_pk_verify             EXTENDED: Support PSS.
379  gcry_sexp_build            EXTENDED: Add format specifiers M and u.
380
381  * Interface changes relative to the 1.4.2 release:
382  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
383  GCRY_CIPHER_MODE_AESWRAP   NEW.
384  GCRY_MD_TIGER1             NEW.
385  GCRY_MD_TIGER2             NEW.
386
387
388 Noteworthy changes in version 1.4.4 (2009-01-22)
389 ------------------------------------------------
390
391  * Publish GCRY_MODULE_ID_USER and GCRY_MODULE_ID_USER_LAST constants.
392    This functionality has been in Libgcrypt since 1.3.0.
393
394  * MD5 may now be used in non-enforced fips mode.
395
396  * Fixed HMAC for SHA-384 and SHA-512 with keys longer than 64 bytes.
397
398  * In fips mode, RSA keys are now generated using the X9.31 algorithm
399    and DSA keys using the FIPS 186-2 algorithm.
400
401  * The transient-key flag is now also supported for DSA key
402    generation.  DSA domain parameters may be given as well.
403
404
405 Noteworthy changes in version 1.4.3 (2008-09-18)
406 ------------------------------------------------
407
408  * Try to auto-initialize Libgcrypt to minimize the effect of
409    applications not doing that correctly.  This is not a perfect
410    solution but given that many applicationion would totally fail
411    without such a hack, we try to help at least with the most common
412    cases.  Folks, please read the manual to learn how to properly
413    initialize Libgcrypt!
414
415  * Auto-initialize the secure memory to 32k instead of aborting the
416    process.
417
418  * Log fatal errors via syslog.
419
420  * Changed the name and the semantics of the fips mode config file.
421
422  * Add convenience macro gcry_fips_mode_active.
423
424  * More self-tests.
425
426  * Documentation cleanups.
427
428
429 Noteworthy changes in version 1.4.2 (2008-09-08)
430 ------------------------------------------------
431
432  * The long missing gcry_mpi_lshift function has been added.
433
434  * RSA key generation now supports a "transient-key" flag.
435
436  * The keygrip computation for ECDSA has been implemented thus ECDSA
437    is now fully supported.
438
439  * A few macros have been replaced by functions for better type
440    checking.
441
442  * The thread initialization structure now carries version
443    information.
444
445  * The manual describes more clearly how to initialize Libgcrypt.
446
447  * The library may now be switched into a FIPS mode.
448
449  * Interface changes relative to the 1.3.0 release:
450  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
451  GCRYCTL_OPERATIONAL_P   NEW.
452  GCRYCTL_FIPS_MODE_P     NEW.
453  GCRYCTL_FORCE_FIPS_MODE NEW.
454  gcry_cipher_setkey      NEW: Replaces macro.
455  gcry_cipher_setiv       NEW: Replaces macro.
456  gcry_cipher_setctr      NEW: Replaces macro.
457  gcry_mpi_lshift         NEW.
458  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
459
460
461 Noteworthy changes in version 1.4.1 (2008-04-25)
462 ------------------------------------------------
463
464  * Fixed a bug introduced by 1.3.1 which led to the comsumption of far
465    too much entropy for the intial seeding.
466
467  * Improved AES performance for CFB and CBC modes.
468
469  * Removed build problems for the Padlock support.
470
471
472 Noteworthy changes in version 1.4.0 (2007-12-10)
473 ------------------------------------------------
474
475  * New configure option --disable-padlock-support which is mostly
476    useful in case of build problems.
477
478
479 Noteworthy changes in version 1.3.2 (2007-12-03)
480 ------------------------------------------------
481
482  * The visibility attribute is now used if supported by the toolchain.
483
484  * The ACE engine of VIA processors is now used for AES-128.
485
486  * The ASN.1 DER template for SHA-224 has been fixed.
487
488
489 Noteworthy changes in version 1.3.1 (2007-10-26)
490 ------------------------------------------------
491
492  * The entire library is now under the LGPL. The helper programs and
493    the manual are under the GPL.  Kudos to Peter Gutmann for giving
494    permissions to relicense the rndw32 and rndunix modules.
495
496  * The Camellia cipher is now under the LGPL and included by default.
497
498  * Fixed a bug in the detection of symbol prefixes which inhibited the
499    build of optimzied assembler code on certain systems.
500
501  * Updated the entropy gatherer for W32.
502
503
504 Noteworthy changes in version 1.3.0 (2007-05-04)
505 ------------------------------------------------
506
507  * Changed the way the RNG gets initialized. This allows to keep it
508    uninitialized as long as no random numbers are used.  To override
509    this, the new macro gcry_fast_random_poll may be used.  It is in
510    general a good idea to spread this macro into the application code
511    to make sure that these polls happen often enough.
512
513  * Made the RNG immune against fork without exec.
514
515  * Reading and writing the random seed file is now protected by a
516    fcntl style file lock on systems that provide this function.
517
518  * Support for SHA-224 and HMAC using SHA-384 and SHA-512.
519
520  * Support for the SEED cipher.
521
522  * Support for the Camellia cipher.  Note that Camellia is disabled by
523    default, and that enabling it changes the license of libgcrypt from
524    LGPL to GPL.
525
526  * Support for OFB encryption mode.
527
528  * gcry_mpi_rshift does not anymore truncate the shift count.
529
530  * Reserved algorithm ranges for use by applications.
531
532  * Support for DSA2.
533
534  * The new function gcry_md_debug should be used instead of the
535    gcry_md_start_debug and gcry_md_stop_debug macros.
536
537  * New configure option --enable-random-daemon to support a system
538    wide random daemon.  The daemon code is experimental and not yet
539    very well working.  It will eventually allow to keep a global
540    random pool for the sake of short living processes.
541
542  * Non executable stack support is now used by default on systems
543    supporting it.
544
545  * Support for Microsoft Windows.
546
547  * Assembler support for the AMD64 architecture.
548
549  * New configure option --enable-mpi-path for optimized builds.
550
551  * Experimental support for ECDSA; should only be used for testing.
552
553  * New control code GCRYCTL_PRINT_CONFIG to print the build
554    configuration.
555
556  * Minor changes to some function declarations.  Buffer arguments are
557    now typed as void pointer.  This should not affect any compilation.
558    Fixed two bugs in return values and clarified documentation.
559
560  * Interface changes relative to the 1.2.0 release:
561  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
562  gcry_fast_random_poll   NEW
563  gcry_md_debug           NEW
564  gcry_sexp_nth_string    NEW
565  GCRY_MD_SHA224          NEW
566  GCRY_PK_USAGE_CERT      NEW
567  GCRY_PK_USAGE_AUTH      NEW
568  GCRY_PK_USAGE_UNKN      NEW
569  GCRY_PK_ECDSA           NEW
570  GCRY_CIPHER_SEED        NEW
571  GCRY_CIPHER_CAMELLIA128 NEW
572  GCRY_CIPHER_CAMELLIA192 NEW
573  GCRY_CIPHER_CAMELLIA256 NEW
574  GCRYCTL_FAKED_RANDOM_P  NEW
575  GCRYCTL_PRINT_CONFIG    NEW
576  GCRYCTL_SET_RNDEGD_SOCKET  NEW.
577  gcry_mpi_scan           CHANGED: Argument BUFFER is now void*.
578  gcry_pk_algo_name       CHANGED: Returns "?" instead of NULL.
579  gcry_cipher_algo_name   CHANGED: Returns "?" instead of "".
580  gcry_pk_spec_t          CHANGED: Element ALIASES is now const ptr.
581  gcry_md_write_t         CHANGED: Argument BUF is now a const void*.
582  gcry_md_ctl             CHANGED: Argument BUFFER is now void*.
583  gcry_cipher_encrypt     CHANGED: Arguments IN and OUT are now void*.
584  gcry_cipher_decrypt     CHANGED: Arguments IN and OUT are now void*.
585  gcry_sexp_sprint        CHANGED: Argument BUFFER is now void*.
586  gcry_create_nonce       CHANGED: Argument BUFFER is now void*.
587  gcry_randomize          CHANGED: Argument BUFFER is now void*.
588  gcry_cipher_register    CHANGED: Argument ALGORITHM_ID is now int*.
589  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
590
591
592 Noteworthy changes in version 1.2.0 (2004-04-15)
593 ------------------------------------------------
594
595  * First stable release.
596
597
598 Noteworthy changes in version 1.1.94 (2004-03-29)
599 -------------------------------------------------
600
601  * The support for multi-threaded users goes into its third
602    incarnation.  We removed compile time support for thread libraries.
603    To support the thread library of your choice, you have to set up
604    callback handlers at initialization time.  New data structures, a
605    new control command, and default initializers are provided for this
606    purpose.
607
608  * Interface changes relative to the 1.1.93 release:
609 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
610 libgcrypt-config --thread       OBSOLETE
611 libgcrypt-pth.la                REMOVED
612 libgcrypt-pthread.la            REMOVED
613 GCRYCTL_SET_THREAD_CBS          NEW
614 struct gcrypt_thread_cbs        NEW
615 enum gcry_thread_option         NEW
616 GCRY_THREAD_OPTION_PTH_IMPL     NEW
617 GCRY_THREAD_OPTION_PTHREAD_IMPL NEW
618 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
619
620 Noteworthy changes in version 1.1.93 (2004-03-06)
621 -------------------------------------------------
622
623  * The automatic thread library detection has finally been removed.
624    From now on, only linking explicitely to libgcrypt, libgcrypt-pth
625    or libgcrypt-pthread is supported.
626
627 Noteworthy changes in version 1.1.92 (2004-02-20)
628 -------------------------------------------------
629
630  * Minor bug fixes.
631
632  * Included a limited implementation of RFC2268.
633
634  * Changed API of the gcry_ac_ functions.  Only a very few programs
635    should be affected by this.
636
637  * Interface changes relative to the 1.1.91 release:
638 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
639 GCRY_CIPHER_RFC2268_40          NEW.
640 gcry_ac_data_set                CHANGED: New argument FLAGS.
641 gcry_ac_data_get_name           CHANGED: New argument FLAGS.
642 gcry_ac_data_get_index          CHANGED: New argument FLAGS.
643 gcry_ac_key_pair_generate       CHANGED: New and reordered arguments.
644 gcry_ac_key_test                CHANGED: New argument HANDLE.
645 gcry_ac_key_get_nbits           CHANGED: New argument HANDLE.
646 gcry_ac_key_get_grip            CHANGED: New argument HANDLE.
647 gcry_ac_data_search             REMOVED.
648 gcry_ac_data_add                REMOVED.
649 GCRY_AC_DATA_FLAG_NO_BLINDING   REMOVED.
650 GCRY_AC_FLAG_NO_BLINDING        NEW: Replaces above.
651
652
653 Noteworthy changes in version 1.1.91 (2003-12-19)
654 -------------------------------------------------
655
656  * Code cleanups and minor bug fixes.
657
658
659 Noteworthy changes in version 1.1.90 (2003-11-14)
660 -------------------------------------------------
661
662  * The use of the GCRY_WEAK_RANDOM level is now deprecated in favor of
663    the new gcry_create_nonce function.
664
665  * gcry_sexp_build now supports a "%b" format to include a memory buffer.
666
667  * Minor configuration fixes.
668
669  * Interface changes relative to the 1.1.44 release:
670 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
671 gcry_create_nonce               NEW
672 gcry_sexp_build                 ENHANCED
673
674
675 Noteworthy changes in version 1.1.44 (2003-10-31)
676 -------------------------------------------------
677
678  * Bug fixes and more code cleanups.
679
680  * Enhanced the prime API.
681
682  * Interface changes relative to the 1.1.43 release:
683 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
684 gcry_prime_group_generator      NEW
685 gcry_prime_release_factors      NEW
686
687
688 Noteworthy changes in version 1.1.43 (2003-09-04)
689 -------------------------------------------------
690
691  * Bug fixes and internal code cleanups.
692
693  * Support for the Serpent cipher algorithm.
694
695  * Interface changes relative to the 1.1.42 release:
696 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
697 gcry_prime_generate             NEW
698 gcry_prime_check                NEW
699
700
701 Noteworthy changes in version 1.1.42 (2003-07-31)
702 -------------------------------------------------
703
704  * Major API cleanup.  Applications need to be converted to the new
705    API.  See README.apichanges for hints on how to do that.  Backward
706    compatibility is provided where it was possible without too much
707    effort and did not collide with the overall sanitization effort.
708    However, this is only for ease of transition.  NO DEPRECATED
709    FUNCTION OR DATA TYPE IS CONSIDERED A PART OF THE API OR ABI AND
710    WILL BE DROPPED IN THE FUTURE WITHOUT CHANGING THE SONAME OF THE
711    LIBRARY.
712
713  * If gcrypt.h is included in sources compiled by GCC 3.1 or later,
714    deprecated attributes will warn about use of obsolete functions and
715    type definitions.  You can suppress these warnings by passing
716    -Wno-deprecated-declarations to the gcc command.
717
718  * gcry_check_version must be called from now on to initialize the
719    library, it is not longer optional.
720
721  * Removed `libgcrypt errno' concept.
722
723  * Libgcrypt depends on libgpg-error, a library that provides error
724    codes and according functions for all GnuPG components.  Functions
725    that used to return error codes asa `int' have been changed to
726    return a code of type `gcry_error_t'.  All GCRYERR_* error symbols
727    have been removed, since they are now contained in libgpg-error
728    (GPG_ERR_*). All functions and types in libgpg-error have also been
729    wrapped in Libgcrypt. The new types are gcry_err_code_t and
730    gcry_err_source_t.  The new functions are gcry_err_code,
731    gcry_err_source, gcry_error, gcry_err_make, gcry_error_from_errno,
732    gcry_err_make_from_errno, gcry_err_code_from_errno,
733    gcry_err_code_to_errno, gcry_strsource.
734
735  * New function gcry_mpi_dump to help in debugging.
736
737  * Added alternative interface for asymmetric cryptography.
738
739  * CRC-32, CRC-32 a'la RFC 1510, CRC-24 a'la RFC 2440 are now
740    supported.
741
742  * SHA-256, SHA-384 and SHA-512 are now supported.
743
744  * 128 bit Twofish is now supported.
745
746  * The random module won't print the "not enough random bytes
747    available" anymore.  A new progress status is issued instead.
748
749  * CBC-MAC for block ciphers is now supported, by using a
750    GCRY_CIPHER_CBC_MAC cipher flag.
751
752  * CTR mode for block ciphers is now supported.
753
754  * The public RSA exponent can now be specified in key generation.
755
756  * RSA blinding is now supported and is used automatically for RSA
757    decryption.  It can be explicitely disabled by using the
758    `no-blinding' symbol in the `flags' S-Expression or by using the
759    GCRY_AC_FLAG_DATA_NO_BLINDING flag when using the ac interface.
760
761  * gcry_sexp_canon_len does not use a `historically encoded' error
762    code anymore.
763
764
765  * Interface changes relative to the 1.1.12 release:
766 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
767 GCRY_MPI                        DEPRECATED; Use: gcry_mpi_t
768 GcryMPI                         DEPRECATED; Use: gcry_mpi_t
769 GCRY_SEXP                       DEPRECATED; Use: gcry_sexp_t
770 GcrySexp                        DEPRECATED; Use: gcry_sexp_t
771 GCRY_CIPHER_HD                  DEPRECATED; Use: gcry_cipher_hd_t
772 GcryCipherHd                    DEPRECATED; Use: gcry_cipher_hd_t
773 GCRY_MD_HD                      DEPRECATED; Use: gcry_md_hd_t
774 GcryMDHd                        DEPRECATED; Use: gcry_md_hd_t
775 gcry_error_t                    NEW
776 gcry_err_code_t                 NEW
777 gcry_err_source_t               NEW
778 gcry_err_make                   NEW
779 gcry_error                      NEW
780 gcry_err_code                   NEW
781 gcry_err_source                 NEW
782 gcry_err_code_from_errno        NEW
783 gcry_err_code_to_errno          NEW
784 gcry_err_make_from_errno        NEW
785 gcry_error_from_errno           NEW
786 gcry_strsource                  NEW
787 GCRYERR_{some error code}       REMOVED; Use GPG_ERR_*
788                                          from libgpg-error instead.
789 gcry_errno                      REMOVED
790 gcry_sexp_canon_len             CHANGED
791 gcry_sexp_build_array           NEW
792 gcry_mpi_scan                   CHANGED: New argument to separate in/out args.
793 gcry_mpi_print                  CHANGED: Ditto.
794 gcry_mpi_dump                   NEW
795 gcry_cipher_open                CHANGED
796 gcry_cipher_reset               NEW
797 gcry_cipher_register            NEW
798 gcry_cipher_unregister          NEW
799 gcry_cipher_list                NEW
800 gcry_cipher_algo_keylen         REPLACED macro with function.
801 gcry_cipher_algo_blklen         REPLACED macro with function.
802 gcry_pk_register                NEW
803 gcry_pk_unregister              NEW
804 gcry_pk_list                    NEW
805 gcry_pk_decrypt                 ENHANCED: Allows flag to return
806                                           complete S-expression.
807 gcry_md_open                    CHANGED
808 gcry_md_copy                    CHANGED
809 gcry_md_is_enabled              NEW
810 gcry_md_is_secure               NEW
811 gcry_md_register                NEW
812 gcry_md_unregister              NEW
813 gcry_md_list                    NEW
814 gcry_ac_data_t                  NEW
815 gcry_ac_key_t                   NEW
816 gcry_ac_key_pair_t              NEW
817 gcry_ac_handle_t                NEW
818 gcry_ac_key_spec_rsa_t          NEW
819 gcry_ac_data_new                NEW
820 gcry_ac_data_destroy            NEW
821 gcry_ac_data_set                NEW
822 gcry_ac_data_copy               NEW
823 gcry_ac_data_length             NEW
824 gcry_ac_data_get_name           NEW
825 gcry_ac_data_get_index          NEW
826 gcry_ac_data_clear              NEW
827 gcry_ac_open                    NEW
828 gcry_ac_close                   NEW
829 gcry_ac_key_init                NEW
830 gcry_ac_key_pair_generate       NEW
831 gcry_ac_key_pair_extract        NEW
832 gcry_ac_key_data_get            NEW
833 gcry_ac_key_test                NEW
834 gcry_ac_key_get_nbits           NEW
835 gcry_ac_key_get_grip            NEW
836 gcry_ac_key_destroy             NEW
837 gcry_ac_key_pair_destroy        NEW
838 gcry_ac_data_encrypt            NEW
839 gcry_ac_data_decrypt            NEW
840 gcry_ac_data_sign               NEW
841 gcry_ac_data_verify             NEW
842 gcry_ac_id_to_name              NEW
843 gcry_ac_name_to_id              NEW
844 gcry_handler_progress_t         NEW
845 gcry_handler_alloc_t            NEW
846 gcry_handler_secure_check_t     NEW
847 gcry_handle_realloc_t           NEW
848 gcry_handler_free_t             NEW
849 gcry_handler_no_mem_t           NEW
850 gcry_handler_error_t            NEW
851 gcry_handler_log_t              NEW
852 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
853
854 Noteworthy changes in version 1.1.12 (2003-01-20)
855 -------------------------------------------------
856
857  * gcry_pk_sign, gcry_pk_verify and gcry_pk_encrypt can now handle an
858    optional pkcs1 flags parameter in the S-expression.  A similar flag
859    may be passed to gcry_pk_decrypt but it is only syntactically
860    implemented.
861
862  * New convenience macro gcry_md_get_asnoid.
863
864  * There is now some real stuff in the manual.
865
866
867 Noteworthy changes in version 1.1.11 (2002-12-21)
868 -------------------------------------------------
869
870  * Don't export internal symbols anymore (currently only for GNU systems)
871
872  * New algorithm: MD4
873
874  * Implemented ciphertext stealing.
875
876  * Smaller bugs fixes and a few new OIDs.
877
878  * Interface changes relative to the 1.1.8 release:
879 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
880 gcry_cipher_cts                   NEW
881 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
882
883
884 Noteworthy changes in version 1.1.10 (2002-09-20)
885 -------------------------------------------------
886
887  * Fixed shared library builds for i386, PPC and Sparc.
888
889  * Added simple benchmark tool.
890
891  * Replaced the internal mutexes by code which automatically adapts to
892    the used threading library.  Currently Pth and Pthread are
893    supported.  For non-ELF systems the GNU toolchain is now required..
894
895  * Added untested support to build Windows DLLs.
896
897 Noteworthy changes in version 1.1.9 (2002-08-23)
898 ------------------------------------------------
899
900  * Support for plain old DES.
901
902
903 Noteworthy changes in version 1.1.8 (2002-06-25)
904 ------------------------------------------------
905
906  * Minor cleanups and exported a few new functions.
907
908  * Interface changes relative to the 1.1.7 release:
909 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
910 gcry_mpi_div                      NEW
911 gcry_mpi_mod                      NEW
912 gcry_mpi_invm                     NEW
913 gcry_mpi_swap                     NEW
914 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
915
916 Noteworthy changes in version 1.1.7 (2002-05-21)
917 ------------------------------------------------
918
919 * Libgcrypt is now distributed under the terms of the GNU Lesser
920   General Public License; see the README file for details.
921
922 * It is possible to use libgcrypt w/o intialized secure memory.
923
924 * Libgcrypt should now be thread safe after the initialization.
925   gcry_control (GCRYCRL_INITIALIZATION_FINISHED,NULL,0) should have
926   been called before creating additional threads.
927
928  * Interface changes relative to the 1.1.6 release:
929 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
930 GCRYCTL_DISABLE_INTERNAL_LOCKING  NEW
931 GCRYCTL_DISABLE_SECMEM            NEW
932 GCRYCTL_INITIALIZATION_FINISHED   NEW
933 GCRYCTL_INITIALIZATION_FINISHED_P NEW
934 GCRYCTL_ANY_INITIALIZATION_P      NEW
935 gcry_strdup                       NEW
936 gcry_sexp_create                  NEW
937 gcry_sexp_new                     NEW
938 gcry_set_progress_handler         NEW
939 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
940
941 Noteworthy changes in version 1.1.6 (2002-02-07)
942 ------------------------------------------------
943
944   * Enhanced the S-expression conversion functions.
945
946 Noteworthy changes in version 1.1.5 (2001-12-18)
947 ------------------------------------------------
948
949   * gcry_{cipher,md}_map_name are now able to map stringified object IDs.
950
951   * New functions gcry_sexp_canon_len and gcry_cipher_mode_from_oid.
952
953   * Closed some memory leaks.
954
955
956 Noteworthy changes in version 1.1.4 (2001-08-03)
957 ------------------------------------------------
958
959   * Arcfour does now work.
960
961   * Some minor fixes.
962
963   * Added a first test program
964
965   * Migrated to autoconf 2.52.
966
967
968 Noteworthy changes in version 1.1.3 (2001-05-31)
969 ------------------------------------------------
970
971   * First release of Libgcrypt which is a result of splitting GnuPG
972     into into libgcrypt and GnuPG.
973
974
975 Copyright 2001, 2002, 2003, 2004, 2007, 2008,
976           2009, 2011 Free Software Foundation, Inc.
977 Copyright 2013 g10 Code GmbH
978
979 This file is free software; as a special exception the author gives
980 unlimited permission to copy and/or distribute it, with or without
981 modifications, as long as this notice is preserved.
982
983 This file is distributed in the hope that it will be useful, but
984 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
985 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.