Libgcrypt 1.9.0 relased

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Libgcrypt 1.9.0 relased

Werner Koch

We are pleased to announce the availability of Libgcrypt version 1.9.0.
This release starts a new stable branch of Libgcrypt with full API and
ABI compatibility to the 1.8 series.  Over the last 3 or 4 years Jussi
Kivilinna put a lot of work into speeding up the algorithms for the most
commonly used CPUs.  See below for a list of improvements and new
features in 1.9.

Libgcrypt is a general purpose library of cryptographic building blocks.
It is originally based on code used by GnuPG.  It does not provide any
implementation of OpenPGP or other protocols.  Thorough understanding of
applied cryptography is required to use Libgcrypt.

Noteworthy changes in Libgcrypt 1.9.0

 * New and extended interfaces:
   - New curves Ed448, X448, and SM2.
   - New cipher mode EAX.
   - New cipher algo SM4.
   - New hash algo SM3.
   - New hash algo variants SHA512/224 and SHA512/256.
   - New MAC algos for Blake-2 algorithms, the new SHA512 variants,
     SM3, SM4 and for a GOST variant.
   - New convenience function gcry_mpi_get_ui.
   - gcry_sexp_extract_param understands new format specifiers to
     directly store to integers and strings.
   - New function gcry_ecc_mul_point and curve constants for Curve448
     and Curve25519.  [#4293]
   - New function gcry_ecc_get_algo_keylen.
   - New control code GCRYCTL_AUTO_EXPAND_SECMEM to allow growing the
     secure memory area.  Also in 1.8.2 as an undocumented feature.

 * Performance:
   - Optimized implementations for Aarch64.
   - Faster implementations for Poly1305 and ChaCha.  Also for
     PowerPC.  [b9a471ccf5,172ad09cbe,#4460]
   - Optimized implementations of AES and SHA-256 on PowerPC.
   - Improved use of AES-NI to speed up AES-XTS (6 times faster).
   - Improved use of AES-NI for OCB.  [eacbd59b13,e924ce456d]
   - Speedup AES-XTS on ARMv8/CE (2.5 times faster).  [93503c127a]
   - New AVX and AVX2 implementations for Blake-2 (1.3/1.4 times
     faster).  [af7fc732f9, da58a62ac1]
   - Use Intel SHA extension for SHA-1 and SHA-256 (4.0/3.7 times
     faster).  [d02958bd30, 0b3ec359e2]
   - Use ARMv7/NEON accelerated GCM implementation (3 times faster).
   - Use of i386/SSSE3 for SHA-512 (4.5 times faster on Ryzen 7).
   - Use 64 bit ARMv8/CE PMULL for CRC (7 times faster).  [14c8a593ed]
   - Improve CAST5 (40% to 70% faster).  [4ec566b368]
   - Improve Blowfish (60% to 80% faster).  [ced7508c85]

 * Bug fixes:
   - Fix infinite loop due to applications using fork the wrong
     way.  [#3491][also in 1.8.4]
   - Fix possible leak of a few bits of secret primes to pageable
     memory.  [#3848][also in 1.8.4]
   - Fix possible hang in the RNG (1.8.3 only).  [#4034][also in 1.8.4]
   - Several minor fixes.  [#4102,#4208,#4209,#4210,#4211,#4212]
     [also in 1.8.4]
   - On Linux always make use of getrandom if possible and then use
     its /dev/urandom behaviour.  [#3894][also in 1.8.4]
   - Use blinding for ECDSA signing to mitigate a novel side-channel
     attack.  [#4011,CVE-2018-0495] [also in 1.8.3, 1.7.10]
   - Fix incorrect counter overflow handling for GCM when using an IV
     size other than 96 bit.  [#3764] [also in 1.8.3, 1.7.10]
   - Fix incorrect output of AES-keywrap mode for in-place encryption
     on some platforms.  [also in 1.8.3, 1.7.10]
   - Fix the gcry_mpi_ec_curve_point point validation function.
     [also in 1.8.3, 1.7.10]
   - Fix rare assertion failure in gcry_prime_check.  [also in 1.8.3]
   - Do not use /dev/srandom on OpenBSD.  [also in 1.8.2]
   - Fix test suite failure on systems with large pages. [#3351]
     [also in 1.8.2]
   - Fix test suite to not use mmap on Windows.  [also in 1.8.2]
   - Fix fatal out of secure memory status in the s-expression parser
     on heavy loaded systems.  [also in 1.8.2]
   - Fix build problems on OpenIndiana et al. [#4818, also in 1.8.6]
   - Fix GCM bug on arm64 which troubles for example OMEMO.  [#4986,
     also in 1.8.6]
   - Detect a div-by-zero in a debug helper tool.  [#4868, also in 1.8.6]
   - Use a constant time mpi_inv and related changes.  [#4869, partly
     also in 1.8.6]
   - Fix mpi_copy to correctly handle flags of opaque MPIs.
     [also in 1.8.6]
   - Fix mpi_cmp to consider +0 and -0 the same.  [also in 1.8.6]
   - Fix extra entropy collection via clock_gettime.  Note that this
     fallback code path is not used on any decent hardware.  [#4966,
     also in 1.8.7]
   - Support opaque MPI with gcry_mpi_print.  [#4872, also in 1.8.7]
   - Allow for a Unicode random seed file on Windows.  [#5098, also in

 * Other features:
   - Add OIDs from RFC-8410 as aliases for Ed25519 and Curve25519.
     [also in 1.8.6]
   - Add mitigation against ECC timing attack CVE-2019-13626.  [#4626]
   - Internal cleanup of the ECC implementation.
   - Support reading EC point in compressed format for some curves.

 For a list of interface changes and links to commits and bug numbers
 see the release info at


Source code is hosted at the GnuPG FTP server and its mirrors as listed
at  On the primary server
the source tarball and its digital signature are:

or gzip compressed:

In order to check that the version of Libgcrypt you downloaded is an
original and unmodified file please follow the instructions found at  In short, you may
use one of the following methods:

 - Check the supplied OpenPGP signature.  For example to check the
   signature of the file libgcrypt-1.9.0.tar.bz2 you would use this

     gpg --verify libgcrypt-1.9.0.tar.bz2.sig libgcrypt-1.9.0.tar.bz2

   This checks whether the signature file matches the source file.
   You should see a message indicating that the signature is good and
   made by one or more of the release signing keys.  Make sure that
   this is a valid key, either by matching the shown fingerprint
   against a trustworthy list of valid release signing keys or by
   checking that the key has been signed by trustworthy other keys.
   See the end of this mail for information on the signing keys.

 - If you are not able to use an existing version of GnuPG, you have
   to verify the SHA-1 checksum.  On Unix systems the command to do
   this is either "sha1sum" or "shasum".  Assuming you downloaded the
   file libgcrypt-1.9.0.tar.bz2, you run the command like this:

     sha1sum libgcrypt-1.9.0.tar.bz2

   and check that the output matches the first line from the
   this list:

459383a8b6200673cfc31f7b265c4961c0850031  libgcrypt-1.9.0.tar.bz2
25b36d1e3c32ef76be5098da721dd68933798a3d  libgcrypt-1.9.0.tar.gz

   You should also verify that the checksums above are authentic by
   matching them with copies of this announcement.  Those copies can be
   found at other mailing lists, web sites, and search engines.


Libgcrypt is distributed under the terms of the GNU Lesser General
Public License (LGPLv2.1+).  The helper programs as well as the
documentation are distributed under the terms of the GNU General Public
License (GPLv2+).  The file LICENSES has notices about contributions
that require that these additional notices are distributed.


For help on developing with Libgcrypt you should read the included
manual and if needed ask on the gcrypt-devel mailing list.

In case of problems specific to this release please first check for updated information.

Please also consult the archive of the gcrypt-devel mailing list before
reporting a bug: .
We suggest to send bug reports for a new release to this list in favor
of filing a bug at  If you need commercial
support go to or .

If you are a developer and you need a certain feature for your project,
please do not hesitate to bring it to the gcrypt-devel mailing list for


Since 2001 maintenance and development of GnuPG is done by g10 Code
GmbH and still mostly financed by donations.  Three full-time employed
developers as well as two contractors exclusively work on GnuPG and
closely related software like Libgcrypt, GPGME, and Gpg4win.

We like to thank all the nice people who are helping Libgcrypt, be it
testing, coding, suggesting, auditing, administering the servers,
spreading the word, or answering questions on the mailing lists.

Many thanks to our numerous financial supporters, both corporate and
individuals.  Without you it would not be possible to keep GnuPG and
Libgcrypt in a good and secure shape and to address all the small and
larger requests made by our users.  Thanks.

Happy hacking,

   Your Libgcrypt hackers

This is an announcement only mailing list.  Please send replies only to
the gnupg-devel'at' mailing list.

List of Release Signing Keys:
To guarantee that a downloaded GnuPG version has not been tampered by
malicious entities we provide signature files for all tarballs and
binary versions.  The keys are also signed by the long term keys of
their respective owners.  Current releases are signed by one or more
of these four keys:

  ed25519 2020-08-24 [expires: 2030-06-30]
  Key fingerprint = 6DAA 6E64 A76D 2840 571B  4902 5288 97B8 2640 3ADA
  Werner Koch (dist signing 2020)

  rsa2048 2014-10-29 [expires: 2020-10-30]
  Key fingerprint = 031E C253 6E58 0D8E A286  A9F2 2071 B08A 33BD 3F06
  NIIBE Yutaka (GnuPG Release Key) <gniibe 'at'>

  rsa3072 2017-03-17 [expires: 2027-03-15]
  Key fingerprint = 5B80 C575 4298 F0CB 55D8  ED6A BCEF 7E29 4B09 2E28
  Andre Heinecke (Release Signing Key)

  rsa2048 2011-01-12 [expires: 2021-12-31]
  Key fingerprint = D869 2123 C406 5DEA 5E0F  3AB5 249B 39D2 4F25 E3B6
  Werner Koch (dist sig)

The keys are available at and
in any recently released GnuPG tarball in the file g10/distsigkey.gpg .
Note that this mail has been signed by a different key.

"If privacy is outlawed, only outlaws will have privacy."
                                               - PRZ 1991

Gnupg-announce mailing list
[hidden email]

signature.asc (233 bytes) Download Attachment