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