Bug 1577646 - Fix encoding corruptions in imported libgcrypt library. r=me
authorKai Engert <kaie@kuix.de>
Fri, 30 Aug 2019 11:47:23 +0200
changeset 35674 2984dbf516e6c8107e23e2522c1810f540a81f1a
parent 35673 7b3dc0779dbd9c9658960f23d59375e1674e6989
child 35675 1592f9f86df5eed14b3f20de43fa55e8eb5e435f
push id2486
push userclokep@gmail.com
push dateMon, 02 Sep 2019 20:24:43 +0000
treeherdercomm-beta@1b30a9a6e7f6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersme
bugs1577646
Bug 1577646 - Fix encoding corruptions in imported libgcrypt library. r=me DONTBUILD
third_party/libgcrypt/AUTHORS
third_party/libgcrypt/ChangeLog
third_party/libgcrypt/LICENSES
third_party/libgcrypt/NEWS
third_party/libgcrypt/THANKS
third_party/libgcrypt/autogen.sh
third_party/libgcrypt/build-aux/compile
third_party/libgcrypt/build-aux/config.guess
third_party/libgcrypt/build-aux/config.rpath
third_party/libgcrypt/build-aux/config.sub
third_party/libgcrypt/build-aux/depcomp
third_party/libgcrypt/build-aux/install-sh
third_party/libgcrypt/build-aux/mdate-sh
third_party/libgcrypt/build-aux/missing
third_party/libgcrypt/cipher/ChangeLog-2011
third_party/libgcrypt/cipher/camellia-aarch64.S
third_party/libgcrypt/cipher/camellia-aesni-avx-amd64.S
third_party/libgcrypt/cipher/camellia-aesni-avx2-amd64.S
third_party/libgcrypt/cipher/camellia-arm.S
third_party/libgcrypt/cipher/cipher-gcm-armv8-aarch32-ce.S
third_party/libgcrypt/cipher/cipher-gcm-armv8-aarch64-ce.S
third_party/libgcrypt/cipher/cipher-gcm-intel-pclmul.c
third_party/libgcrypt/cipher/cipher-ocb.c
third_party/libgcrypt/cipher/crc-intel-pclmul.c
third_party/libgcrypt/cipher/crc.c
third_party/libgcrypt/cipher/ecc-eddsa.c
third_party/libgcrypt/cipher/keccak-armv7-neon.S
third_party/libgcrypt/cipher/rijndael-armv8-aarch32-ce.S
third_party/libgcrypt/cipher/rijndael-armv8-aarch64-ce.S
third_party/libgcrypt/cipher/salsa20.c
third_party/libgcrypt/cipher/serpent-armv7-neon.S
third_party/libgcrypt/cipher/serpent-avx2-amd64.S
third_party/libgcrypt/cipher/serpent-sse2-amd64.S
third_party/libgcrypt/cipher/serpent.c
third_party/libgcrypt/configure
third_party/libgcrypt/doc/ChangeLog-2011
third_party/libgcrypt/doc/gcrypt.texi
third_party/libgcrypt/mkinstalldirs
third_party/libgcrypt/mpi/ChangeLog-2011
third_party/libgcrypt/mpi/ec.c
third_party/libgcrypt/random/rndjent.c
third_party/libgcrypt/tests/basic_all_hwfeature_combinations.sh
third_party/libgcrypt/tests/bench-slope.c
third_party/libgcrypt/tests/cavs_driver.pl
third_party/libgcrypt/tests/cavs_tests.sh
third_party/libgcrypt/tests/hashtest-256g.in
third_party/libgcrypt/tests/t-kdf.c
third_party/libgcrypt/tests/t-sexp.c
--- a/third_party/libgcrypt/AUTHORS
+++ b/third_party/libgcrypt/AUTHORS
@@ -26,23 +26,23 @@ List of Copyright holders
   Copyright (C) 1996 L. Peter Deutsch
   Copyright (C) 1997 Werner Koch
   Copyright (C) 1998 The Internet Society
   Copyright (C) 1996-1999 Peter Gutmann, Paul Kendall, and Chris Wedgwood
   Copyright (C) 1996-2006 Peter Gutmann, Matt Thomlinson and Blake Coverett
   Copyright (C) 2003 Nikos Mavroyanopoulos
   Copyright (C) 2006-2007 NTT (Nippon Telegraph and Telephone Corporation)
   Copyright (C) 2012-2018 g10 Code GmbH
-  Copyright (C) 2012 Simon Josefsson, Niels Mller
+  Copyright (C) 2012 Simon Josefsson, Niels Möller
   Copyright (c) 2012 Intel Corporation
   Copyright (C) 2013 Christian Grothoff
   Copyright (C) 2013-2017 Jussi Kivilinna
   Copyright (C) 2013-2014 Dmitry Eremin-Solenikov
   Copyright (C) 2014 Stephan Mueller
-  Copyright (C) 2017 Bundesamt fr Sicherheit in der Informationstechnik
+  Copyright (C) 2017 Bundesamt für Sicherheit in der Informationstechnik
 
 
 Authors with a FSF copyright assignment
 =======================================
 
 LIBGCRYPT       Werner Koch    2001-06-07
 Assigns past and future changes.
 Assignment for future changes terminated on 2012-12-04.
@@ -63,17 +63,17 @@ mroth@nessie.de
 Wrote cipher/des.c.
 Changes and bug fixes all over the place.
 
 GNUPG	Niklas Hernaeus 	1998-09-18
 Disclaims changes.
 nh@df.lth.se
 Weak key patches.
 
-GNUPG	Rmi Guyomarch		1999-05-25
+GNUPG	Rémi Guyomarch		1999-05-25
 Assigns past and future changes. (g10/compress.c, g10/encr-data.c,
 g10/free-packet.c, g10/mdfilter.c, g10/plaintext.c, util/iobuf.c)
 rguyom@mail.dotcom.fr
 
 ANY     g10 Code GmbH           2001-06-07
 Assignment for future changes terminated on 2012-12-04.
 Code marked with ChangeLog entries of g10 Code employees.
 
@@ -123,17 +123,17 @@ Assigns past and future changes.
 dshaw@jabberwocky.com
 (cipher/camellia-glue.c and related stuff)
 
 LIBGCRYPT       Andrey Jivsov    2010-12-09
 Assigns Past and Future Changes
 openpgp@brainhub.org
 (cipher/ecc.c and related files)
 
-LIBGCRYPT       Ulrich Mller    2012-02-15
+LIBGCRYPT       Ulrich Müller    2012-02-15
 Assigns Past and Future Changes
 ulm@gentoo.org
 (Changes to cipher/idea.c and related files)
 
 LIBGCRYPT       Vladimir Serbinenko  2012-04-26
 Assigns Past and Future Changes
 phcoder@gmail.com
 (cipher/serpent.c)
@@ -152,17 +152,17 @@ Christian Grothoff <christian@grothoff.o
 2013-03-21:514B5D8A.6040705@grothoff.org:
 
 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
 2013-07-13:20130713144407.GA27334@fangorn.rup.mentorg.com:
 
 Dmitry Kasatkin <dmitry.kasatkin@intel.com>
 2012-12-14:50CAE2DB.80302@intel.com:
 
-Jrmie Courrges-Anglas <jca@wxcvbn.org>
+Jérémie Courrèges-Anglas <jca@wxcvbn.org>
 2016-05-26:87bn3ssqg0.fsf@ritchie.wxcvbn.org:
 
 Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
 2012-11-15:20121115172331.150537dzb5i6jmy8@www.dalek.fi:
 
 Jussi Kivilinna <jussi.kivilinna@iki.fi>
 2013-05-06:5186720A.4090101@iki.fi:
 
@@ -173,26 +173,26 @@ Mathias L. Baumann <mathias.baumann at s
 2017-01-30:07c06d79-0828-b564-d604-fd16c7c86ebe@sociomantic.com:
 
 Milan Broz <gmazyland@gmail.com>
 2014-01-13:52D44CC6.4050707@gmail.com:
 
 Peter Wu <peter@lekensteyn.nl>
 2015-07-22:20150722191325.GA8113@al:
 
-Rafal Carr <funman@videolan.org>
+Rafaël Carré <funman@videolan.org>
 2012-04-20:4F91988B.1080502@videolan.org:
 
 Sergey V. <sftp.mtuci@gmail.com>
 2013-11-07:2066221.5IYa7Yq760@darkstar:
 
 Stephan Mueller <smueller@chronox.de>
 2014-08-22:2008899.25OeoelVVA@myon.chronox.de:
 
-Tom Mrz <tm@t8m.info>
+Tomáš Mráz <tm@t8m.info>
 2012-04-16:1334571250.5056.52.camel@vespa.frost.loc:
 
 Vitezslav Cizek <vcizek@suse.com>
 2015-11-05:20151105131424.GA32700@kolac.suse.cz:
 
 Werner Koch <wk@gnupg.org> (g10 Code GmbH)
 2012-12-05:87obi8u4h2.fsf@vigenere.g10code.de:
 
@@ -217,17 +217,17 @@ The implementation of the Camellia ciphe
 original NTT provided GPL source.
 
 The CAVS testing program tests/cavs_driver.pl is not to be considered
 a part of libgcrypt proper.  We distribute it merely for convenience.
 It has a permissive license and is copyrighted by atsec information
 security corporation.  See the file for details.
 
 The file salsa20.c is based on D.J. Bernstein's public domain code and
-taken from Nettle.  Copyright 2012 Simon Josefsson and Niels Mller.
+taken from Nettle.  Copyright 2012 Simon Josefsson and Niels Möller.
 
 
  This file is free software; as a special exception the author gives
  unlimited permission to copy and/or distribute it, with or without
  modifications, as long as this notice is preserved.
 
  This file is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
--- a/third_party/libgcrypt/ChangeLog
+++ b/third_party/libgcrypt/ChangeLog
@@ -127,17 +127,17 @@ 2018-04-17  NIIBE Yutaka  <gniibe@fsij.o
 	(_gcry_hmac256_file): Likewise.
 
 	random: Protect another use of jent_rng_collector.
 	+ commit 0da4a237661cd273303ae6baaaba2d9f6292b990
 	* random/rndjent.c (_gcry_rndjent_get_version): Lock the access.
 
 	(cherry picked from commit 0de2a22fcf6607d0aecb550feefa414cee3731b2)
 
-2018-04-17  Martin Storsj  <martin@martin.st>
+2018-04-17  Martin Storsjö  <martin@martin.st>
 
 	random: Don't assume that _WIN64 implies x86_64.
 	+ commit e1695a8f6ca1135d777450cf9ce64628b0778ccb
 	* random/rndw32.c: Change _WIN64 ifdef into __x86_64__.
 
 2018-04-17  Jussi Kivilinna  <jussi.kivilinna@iki.fi>
 
 	Improve constant-time buffer compare.
@@ -417,17 +417,17 @@ 2017-06-21  Werner Koch  <wk@gnupg.org>
 	random: Allow building rndjent on non-x86.
 	+ commit c2319464b03e61aaf34ef6d5f4b59b0c0483a373
 	* random/jitterentropy-base.c (jent_version): Uncomment function.
 	* random/rndjent.c: Include time.h
 	(JENT_USES_RDTSC): New.
 	(JENT_USES_GETTIME): New.
 	(JENT_USES_READ_REAL_TIME): New.
 	(jent_get_nstime): Support clock_gettime and AIX specific
-	function.  Taken from Stephan Mller's code.
+	function.  Taken from Stephan Müller's code.
 	(is_rng_available): New.
 	(_gcry_rndjent_dump_stats): Use that function.
 	(_gcry_rndjent_poll): Use that fucntion.  Allow an ADD of NULL for an
 	intialize only mode.
 	(_gcry_rndjent_get_version): New.
 
 2017-06-18  Jussi Kivilinna  <jussi.kivilinna@iki.fi>
 
@@ -1554,17 +1554,17 @@ 2016-06-08  Werner Koch  <wk@gnupg.org>
 	+ commit 52cdfb1960808aaad48b5a501bbce0e3141c3961
 	* random/rndlinux.c (_gcry_rndlinux_gather_random): Remove debug
 	output.
 
 	Fix gcc portability on Solaris 9 SPARC boxes.
 	+ commit b766ea14ad1c27d6160531b200cc70aaa479c6dc
 	* mpi/longlong.h: Use __sparcv8 as alias for __sparc_v8__.
 
-2016-06-08  Jrmie Courrges-Anglas  <jca@wxcvbn.org>
+2016-06-08  Jérémie Courrèges-Anglas  <jca@wxcvbn.org>
 
 	Check for compiler SSE4.1 support in PCLMUL CRC code.
 	+ commit dc76313308c184c92eb78452b503405b90fc7ebd
 	* cipher/crc-intel-pclmul.c: Build PCLMUL CRC implementation only if
 	  compiler supports PCLMUL *and* SSE4.1
 	* cipher/crc.c: Ditto
 	* configure.ac (sse41support, gcry_cv_gcc_inline_asm_sse41): New.
 
@@ -1596,17 +1596,17 @@ 2016-06-03  Werner Koch  <wk@gnupg.org>
 	output.
 
 2016-06-02  Werner Koch  <wk@gnupg.org>
 
 	Fix gcc portability on Solaris 9 SPARC boxes.
 	+ commit 4121f15122501d8946f1589b303d1f7949c15e30
 	* mpi/longlong.h: Use __sparcv8 as alias for __sparc_v8__.
 
-2016-05-28  Jrmie Courrges-Anglas  <jca@wxcvbn.org>
+2016-05-28  Jérémie Courrèges-Anglas  <jca@wxcvbn.org>
 
 	Check for compiler SSE4.1 support in PCLMUL CRC code.
 	+ commit 3e8074ecd3a534e8bd7f11cf17f0b22d252584c8
 	* cipher/crc-intel-pclmul.c: Build PCLMUL CRC implementation only if
 	  compiler supports PCLMUL *and* SSE4.1
 	* cipher/crc.c: Ditto
 	* configure.ac (sse41support, gcry_cv_gcc_inline_asm_sse41): New.
 
@@ -1860,17 +1860,17 @@ 2016-03-22  Werner Koch  <wk@gnupg.org>
 	+ commit d328095dd4de83b839d9d8c4bdbeec0956971016
 	(main): Add option --fips.
 	* tests/keygen.c (check_rsa_keys): Create an 2048 bit key with e=65539
 	because that is valid in FIPS mode.  Check that key generation fails
 	for too short keys in FIPS mode.
 	(check_ecc_keys): Check that key generation fails for Ed25519 keys in
 	FIPS mode.
 
-2016-03-22  Tom Mrz  <tmraz@redhat.com>
+2016-03-22  Tomáš Mráz  <tmraz@redhat.com>
 
 	rsa: Add FIPS 186-4 compliant RSA probable prime key generator.
 	+ commit 5f9b3c2e220ca6d0eaff32324a973ef67933a844
 	* cipher/primegen.c (_gcry_fips186_4_prime_check): New.
 	* cipher/rsa.c (generate_fips): New.
 	(rsa_generate): Use new function in fips mode or with test-parms.
 
 	* tests/keygen.c (check_rsa_keys): Add test using e=65539.
@@ -2777,17 +2777,17 @@ 2015-08-19  Werner Koch  <wk@gnupg.org>
 
 	Change SHA-3 algorithm ids.
 	+ commit 65639ecaaeba642e40487446c40d045482001285
 	* src/gcrypt.h.in (GCRY_MD_SHA3_224, GCRY_MD_SHA3_256)
 	(GCRY_MD_SHA3_384, GCRY_MD_SHA3_512): Change values.
 
 2015-08-12  Jussi Kivilinna  <jussi.kivilinna@iki.fi>
 
-	Keccak: Fix array indexes in ? step.
+	Keccak: Fix array indexes in θ step.
 	+ commit 48822ae0b436bcea0fe92dbf0d88475ba3179320
 	* cipher/keccak.c (keccak_f1600_state_permute): Fix indexes for D[5].
 
 	Simplify OCB offset calculation for parallel implementations.
 	+ commit 24ebf53f1e8a8afa27dcd768339bda70a740bb03
 	* cipher/camellia-glue.c (_gcry_camellia_ocb_crypt)
 	(_gcry_camellia_ocb_auth): Precalculate Ls array always, instead of
 	just if 'blkn % <parallel blocks> == 0'.
@@ -3252,17 +3252,17 @@ 2015-05-14  Jussi Kivilinna  <jussi.kivi
 	* cipher/camellia-aesni-avx-amd64.S: Enable when
 	HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
 	(ELF): New macro to mask lines with ELF specific commands.
 	* cipher/camellia-aesni-avx2-amd64.S: Enable when
 	HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
 	(ELF): New macro to mask lines with ELF specific commands.
 	* cipher/camellia-glue.c (USE_AESNI_AVX, USE_AESNI_AVX2): Enable when
 	HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
-	[USE_AESNI_AVX ||USE_AESNI_AVX2] (ASM_FUNC_ABI, ASM_EXTRA_STACK): New.
+	[USE_AESNI_AVX || USE_AESNI_AVX2] (ASM_FUNC_ABI, ASM_EXTRA_STACK): New.
 	(_gcry_camellia_aesni_avx_ctr_enc, _gcry_camellia_aesni_avx_cbc_dec)
 	(_gcry_camellia_aesni_avx_cfb_dec, _gcry_camellia_aesni_avx_keygen)
 	(_gcry_camellia_aesni_avx2_ctr_enc, _gcry_camellia_aesni_avx2_cbc_dec)
 	(_gcry_camellia_aesni_avx2_cfb_dec): Add ASM_FUNC_ABI.
 
 	Enable AMD64 Blowfish implementation on WIN64.
 	+ commit e05682093ffb003b589a697428d918d755ac631d
 	* cipher/blowfish-amd64.S: Enable when
@@ -3375,48 +3375,48 @@ 2015-05-02  Jussi Kivilinna  <jussi.kivi
 	+ commit 1089a13073c26a9a456e43ec38d937e6ee7f4077
 	* cipher/sha512-avx-amd64.S: Enable when
 	HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
 	(ELF): New macro to mask lines with ELF specific commands.
 	* cipher/sha512-avx-bmi2-amd64.S: Ditto.
 	* cipher/sha512-ssse3-amd64.S: Ditto.
 	* cipher/sha512.c (USE_SSSE3, USE_AVX, USE_AVX2): Enable when
 	HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
-	[USE_SSSE3 ||USE_AVX ||USE_AVX2] (ASM_FUNC_ABI)
+	[USE_SSSE3 || USE_AVX || USE_AVX2] (ASM_FUNC_ABI)
 	(ASM_EXTRA_STACK): New.
 	(_gcry_sha512_transform_amd64_ssse3, _gcry_sha512_transform_amd64_avx)
 	(_gcry_sha512_transform_amd64_avx_bmi2): Add ASM_FUNC_ABI to
 	prototypes.
 	(transform): Add ASM_EXTRA_STACK to stack burn value.
 
 	Enable AMD64 SHA256 implementations for WIN64.
 	+ commit 022959099644f64df5f2a83ade21159864f64837
 	* cipher/sha256-avx-amd64.S: Enable when
 	HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
 	(ELF): New macro to mask lines with ELF specific commands.
 	* cipher/sha256-avx2-bmi2-amd64.S: Ditto.
 	* cipher/sha256-ssse3-amd64.S: Ditto.
 	* cipher/sha256.c (USE_SSSE3, USE_AVX, USE_AVX2): Enable when
 	HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
-	[USE_SSSE3 ||USE_AVX ||USE_AVX2] (ASM_FUNC_ABI)
+	[USE_SSSE3 || USE_AVX || USE_AVX2] (ASM_FUNC_ABI)
 	(ASM_EXTRA_STACK): New.
 	(_gcry_sha256_transform_amd64_ssse3, _gcry_sha256_transform_amd64_avx)
 	(_gcry_sha256_transform_amd64_avx2): Add ASM_FUNC_ABI to prototypes.
 	(transform): Add ASM_EXTRA_STACK to stack burn value.
 
 	Enable AMD64 SHA1 implementations for WIN64.
 	+ commit e433676a899fa0d274d40547166b03c7c8bd8e78
 	* cipher/sha1-avx-amd64.S: Enable when
 	HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
 	(ELF): New macro to mask lines with ELF specific commands.
 	* cipher/sha1-avx-bmi2-amd64.S: Ditto.
 	* cipher/sha1-ssse3-amd64.S: Ditto.
 	* cipher/sha1.c (USE_SSSE3, USE_AVX, USE_BMI2): Enable
 	when HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
-	[USE_SSSE3 ||USE_AVX ||USE_BMI2] (ASM_FUNC_ABI)
+	[USE_SSSE3 || USE_AVX || USE_BMI2] (ASM_FUNC_ABI)
 	(ASM_EXTRA_STACK): New.
 	(_gcry_sha1_transform_amd64_ssse3, _gcry_sha1_transform_amd64_avx)
 	(_gcry_sha1_transform_amd64_avx_bmi2): Add ASM_FUNC_ABI to
 	prototypes.
 	(transform): Add ASM_EXTRA_STACK to stack burn value.
 
 2015-05-01  Jussi Kivilinna  <jussi.kivilinna@iki.fi>
 
@@ -5620,17 +5620,17 @@ 2013-12-02  Werner Koch  <wk@gnupg.org>
 	mpi: Introduce 4 user flags for gcry_mpi_t.
 	+ commit 29eddc2558d4cf39995f66d5fccd62f584d5b203
 	* src/gcrypt.h.in (GCRYMPI_FLAG_USER1, GCRYMPI_FLAG_USER2)
 	(GCRYMPI_FLAG_USER3, GCRYMPI_FLAG_USER4): New.
 	* mpi/mpiutil.c (gcry_mpi_set_flag, gcry_mpi_clear_flag)
 	(gcry_mpi_get_flag, _gcry_mpi_free): Implement them.
 	(gcry_mpi_set_opaque): Keep user flags.
 
-2013-11-29  Vladimir '?-coder/phcoder' Serbinenko  <phcoder@gmail.com>
+2013-11-29  Vladimir 'φ-coder/phcoder' Serbinenko  <phcoder@gmail.com>
 
 	Fix armv3 compile error.
 	+ commit 3b1cc9e6c357574f54160298d731c18f3d717b6c
 	* mpi/longlong.h [__arm__ && __ARM_ARCH < 4] (umul_ppmm): Use
 	__AND_CLOBBER_CC instead of __CLOBBER_CC.
 
 	longlong.h on mips with clang.
 	+ commit 1ecbd0bca31d462719a2a6590c1d03244e76ef89
@@ -5993,17 +5993,17 @@ 2013-11-15  Jussi Kivilinna  <jussi.kivi
 	to variable 'hwf' and match features from it.
 	(camellia_setkey) [USE_AESNI_AVX]: Use AES-NI/AVX key setup if
 	available.
 
 	Avoid unneeded stack burning with AES-NI and reduce number of 'decryption_prepared' checks
 	+ commit c8ad83fb605fdbf6dc0b0dbcc8aedfbd477640da
 	* cipher/rijndael.c (RIJNDAEL_context): Make 'decryption_prepared',
 	'use_padlock' and 'use_aesni' 1-bit members in bitfield.
-	(do_setkey): Move 'hwfeatures' inside [USE_AESNI ||USE_PADLOCK].
+	(do_setkey): Move 'hwfeatures' inside [USE_AESNI || USE_PADLOCK].
 	(do_aesni_enc_aligned): Rename to...
 	(do_aesni_enc): ...this, as function does not require aligned input.
 	(do_aesni_dec_aligned): Rename to...
 	(do_aesni_dec): ...this, as function does not require aligned input.
 	(do_aesni): Remove.
 	(rijndael_encrypt): Call 'do_aesni_enc' instead of 'do_aesni'.
 	(rijndael_decrypt): Call 'do_aesni_dec' instead of 'do_aesni'.
 	(check_decryption_preparation): New.
@@ -7857,17 +7857,17 @@ 2013-09-01  Jussi Kivilinna  <jussi.kivi
 
 2013-08-31  Jussi Kivilinna  <jussi.kivilinna@iki.fi>
 
 	sha512: add ARM/NEON assembly version of transform function.
 	+ commit 99d15543b8d94a8f1ef66c6ccb862b0ce82c514d
 	* cipher/Makefile.am: Add 'sha512-armv7-neon.S'.
 	* cipher/sha512-armv7-neon.S: New file.
 	* cipher/sha512.c (USE_ARM_NEON_ASM): New macro.
-	(SHA512_CONTEXT)[USE_ARM_NEON_ASM]: Add 'use_neon'.
+	(SHA512_CONTEXT) [USE_ARM_NEON_ASM]: Add 'use_neon'.
 	(sha512_init, sha384_init) [USE_ARM_NEON_ASM]: Enable 'use_neon' if
 	CPU support NEON instructions.
 	(k): Round constant array moved outside of 'transform' function.
 	(__transform): Renamed from 'tranform' function.
 	[USE_ARM_NEON_ASM] (_gcry_sha512_transform_armv7_neon): New prototype.
 	(transform): New wrapper function for different transform versions.
 	(sha512_write, sha512_final): Burn stack by the amount returned by
 	transform function.
@@ -9466,17 +9466,17 @@ 2012-06-21  Werner Koch  <wk@gnupg.org>
 	Beautify last change.
 	+ commit 20e423212c9710ee663e12dd0f62580ceb245a6f
 	* cipher/rijndael.c: Replace C99 feature from last patch.  Keep cpp
 	lines short.
 	* random/rndhw.c: Keep cpp lines short.
 	* src/hwfeatures.c (_gcry_detect_hw_features): Make cpp def chain
 	better readable.
 
-2012-06-21  Rafal Carr  <funman@videolan.org>
+2012-06-21  Rafaël Carré  <funman@videolan.org>
 
 	Enable VIA Padlock on x86_64 platforms.
 	+ commit baf0dc7e9c26167ab43ba2adebcf2f1abc9d9b3b
 	  * cipher/rijndael.c: Duplicate x86 assembly and convert to x86_64.
 	  * random/rndhw.c: Likewise.
 	  * src/hwfeatures.c: Likewise.
 
 2012-05-14  Werner Koch  <wk@gnupg.org>
@@ -9499,32 +9499,32 @@ 2012-04-04  Tomas Mraz  <tmraz@fedorapro
 	* doc/gcrypt.texi: Add documentation of the new command.
 	* src/fips.c (_gcry_enforced_fips_mode): Report the enforced fips mode
 	only when fips mode is enabled.
 	(_gcry_set_enforced_fips_mode): New function.
 	* src/g10lib.h: Add the _gcry_set_enforced_fips_mode prototype.
 	* src/gcrypt.h.in: Add the GCRYCTL_SET_ENFORCED_FIPS_FLAG.
 	* src/global.c (_gcry_vcontrol): Handle the new command.
 
-2012-02-17  Ulrich Mller  <ulm@gentoo.org>
+2012-02-17  Ulrich Müller  <ulm@gentoo.org>
 
 	Rework selftest in idea.c.
 	+ commit 70cca617ed75ea292e1fed769114dda5cc1d76f1
 	* cipher/idea.c (do_setkey): Execute selftest when first called.
 	(decrypt_block): Remove commented-out code.
 	(selftest): Execute all selftests. Return NULL on success, or
 	string in case of error.
 
 2012-02-16  Werner Koch  <wk@gnupg.org>
 
 	Fix missing prototype.
 	+ commit 46035d28c9b413851d43a4008fdc8e4cdf5d686b
 	* src/g10lib.h (_gcry_secmem_module_init): Make it a real prototype.
 
-2012-02-16  Ulrich Mller  <ulm@gentoo.org>
+2012-02-16  Ulrich Müller  <ulm@gentoo.org>
 
 	Add support for the IDEA cipher.
 	+ commit 318fd85f377c060908d371f792d41e599b3b7483
 	Adapt idea.c to the Libgcrypt framework.
 	Add IDEA to cipher_table and to the build system.
 
 	Patents on IDEA have expired:
 	  Europe: EP0482154 on 2011-05-16,
--- a/third_party/libgcrypt/LICENSES
+++ b/third_party/libgcrypt/LICENSES
@@ -148,65 +148,65 @@ with any binary distributions derived fr
 
 #+begin_quote
   OCB is covered by several patents but may be used freely by most
   software.  See http://web.cs.ucdavis.edu/~rogaway/ocb/license.htm .
   In particular license 1 is suitable for Libgcrypt: See
   http://web.cs.ucdavis.edu/~rogaway/ocb/license1.pdf for the full
   license document; it basically says:
 
-    License 1  License for Open-Source Software Implementations of OCB
+    License 1 — License for Open-Source Software Implementations of OCB
                 (Jan 9, 2013)
 
     Under this license, you are authorized to make, use, and
     distribute open-source software implementations of OCB. This
     license terminates for you if you sue someone over their
     open-source software implementation of OCB claiming that you have
     a patent covering their implementation.
 
 
 
  License for Open Source Software Implementations of OCB
  January 9, 2013
 
  1 Definitions
 
- 1.1 Licensor means Phillip Rogaway.
+ 1.1 “Licensor” means Phillip Rogaway.
 
- 1.2 Licensed Patents means any patent that claims priority to United
- States Patent Application No. 09/918,615 entitled Method and Apparatus
- for Facilitating Efficient Authenticated Encryption, and any utility,
+ 1.2 “Licensed Patents” means any patent that claims priority to United
+ States Patent Application No. 09/918,615 entitled “Method and Apparatus
+ for Facilitating Efficient Authenticated Encryption,” and any utility,
  divisional, provisional, continuation, continuations-in-part, reexamination,
  reissue, or foreign counterpart patents that may issue with respect to the
  aforesaid patent application. This includes, but is not limited to, United
  States Patent No. 7,046,802; United States Patent No. 7,200,227; United
  States Patent No. 7,949,129; United States Patent No. 8,321,675 ; and any
  patent that issues out of United States Patent Application No. 13/669,114.
 
- 1.3 Use means any practice of any invention claimed in the Licensed Patents.
+ 1.3 “Use” means any practice of any invention claimed in the Licensed Patents.
 
- 1.4 Software Implementation means any practice of any invention
+ 1.4 “Software Implementation” means any practice of any invention
  claimed in the Licensed Patents that takes the form of software executing on
  a user-programmable, general-purpose computer or that takes the form of a
  computer-readable medium storing such software. Software Implementation does
  not include, for example, application-specific integrated circuits (ASICs),
  field-programmable gate arrays (FPGAs), embedded systems, or IP cores.
 
- 1.5 Open Source Software means software whose source code is published
+ 1.5 “Open Source Software” means software whose source code is published
  and made available for inspection and use by anyone because either (a) the
  source code is subject to a license that permits recipients to copy, modify,
  and distribute the source code without payment of fees or royalties, or
  (b) the source code is in the public domain, including code released for
  public use through a CC0 waiver. All licenses certified by the Open Source
  Initiative at opensource.org as of January 9, 2013 and all Creative Commons
  licenses identified on the creativecommons.org website as of January 9,
  2013, including the Public License Fallback of the CC0 waiver, satisfy these
  requirements for the purposes of this license.
 
- 1.6 Open Source Software Implementation means a Software
+ 1.6 “Open Source Software Implementation” means a Software
  Implementation in which the software implicating the Licensed Patents is
  Open Source Software. Open Source Software Implementation does not include
  any Software Implementation in which the software implicating the Licensed
  Patents is combined, so as to form a larger program, with software that is
  not Open Source Software.
 
  2 License Grant
 
--- a/third_party/libgcrypt/NEWS
+++ b/third_party/libgcrypt/NEWS
@@ -193,17 +193,17 @@ Noteworthy changes in version 1.8.0 (201
 Noteworthy changes in version 1.7.3 (2016-08-17)  [C21/A1/R3]
 ------------------------------------------------
 
  * Bug fixes:
 
    - Fix critical security bug in the RNG [CVE-2016-6313].  An
      attacker who obtains 580 bytes from the standard RNG can
      trivially predict the next 20 bytes of output.  Problem
-     detected by Felix Drre and Vladimir Klebanov, KIT.
+     detected by Felix Dörre and Vladimir Klebanov, KIT.
 
    - Fix building of some asm modules with older compilers and CPUs.
 
  * Performance:
 
    - ARMv8/AArch32 improvements for AES, GCM, SHA-256, and SHA-1.
 
 
--- a/third_party/libgcrypt/THANKS
+++ b/third_party/libgcrypt/THANKS
@@ -36,17 +36,17 @@ Elie De Brauwer            elie@de-brauw
 Enzo Michelangeli	   em@MailAndNews.com
 Ernst Molitor		   ernst.molitor@uni-bonn.de
 Fabian Keil                fk at fabiankeil de
 Fabio Coatti		   cova@felix.unife.it
 Felix von Leitner	   leitner@amdiv.de
 Frank Heckenbach	   heckenb@mi.uni-erlangen.de
 Frank Stajano		   frank.stajano@cl.cam.ac.uk
 Gabriele Monti             psicus78 gmail com
-Gal Quri		   gqueri@mail.dotcom.fr
+Gaël Quéri		   gqueri@mail.dotcom.fr
 Gregor Riepl               seto-kun@freesurf.ch
 Gerlinde Klaes             gk@u64.de
 Greg Louis		   glouis@dynamicro.on.ca
 Greg Troxel		   gdt@ir.bbn.com
 Gregory Steuck		   steuck@iname.com
 Geoff Keating		   geoffk@ozemail.com.au
 Harald Denker		   harry@hal.westfalen.de
 Hendrik Buschkamp	   buschkamp@rheumanet.org
@@ -58,18 +58,18 @@ Janusz A. Urbanowicz	   alex@bofh.torun.
 James Troup		   james@nocrew.org
 Jean-loup Gailly	   gzip@prep.ai.mit.edu
 Jeff Johnson               jbj@redhat.com
 Jens Bachem		   bachem@rrz.uni-koeln.de
 J Horacio MG		   homega@ciberia.es
 Joachim Backes		   backes@rhrk.uni-kl.de
 Jordi Mallach              jordi@sindominio.net
 John A. Martin		   jam@jamux.com
-Johnny Teveen		   j.tevessen@gmx.de
-Jrg Schilling		   schilling@fokus.gmd.de
+Johnny Teveßen		   j.tevessen@gmx.de
+Jörg Schilling		   schilling@fokus.gmd.de
 Jun Kuriyama		   kuriyama@sky.rim.or.jp
 Karl Fogel		   kfogel@guanabana.onshore.com
 Karsten Thygesen	   karthy@kom.auc.dk
 Katsuhiro Kondou	   kondou@nec.co.jp
 Kazu Yamamoto		   kazu@iijlab.net
 Lars Kellogg-Stedman	   lars@bu.edu
 Lee Fisher                 blibbet at gmail dot com
 Marco d'Itri               md@linux.it
@@ -94,63 +94,63 @@ Newton Hammet              newton@hammet
 Nicolas Graner		   Nicolas.Graner@cri.u-psud.fr
 NIIBE Yutaka		   gniibe@chroot.org
 Niklas Hernaeus
 Nikolay Sturm		   sturm@sec.informatik.tu-darmstadt.de
 Nikos Mavroyanopoulos      nmav@hellug.gr
 Nimrod Zimerman 	   zimerman@forfree.at
 N J Doye		   nic@niss.ac.uk
 Oliver Haakert		   haakert@hsp.de
-Oskari Jskelinen	   f33003a@cc.hut.fi
+Oskari Jääskeläinen	   f33003a@cc.hut.fi
 Paul D. Smith		   psmith@baynetworks.com
 Philippe Laliberte	   arsphl@oeil.qc.ca
 Peter Gutmann		   pgut001@cs.auckland.ac.nz
 QingLong		   qinglong@bolizm.ihep.su
-Rafael vila de Espndola  rafael.espindola@gmail.com
-Rafal Carr               funman@videolan.org
+Rafael Ávila de Espíndola  rafael.espindola@gmail.com
+Rafaël Carré               funman@videolan.org
 Ralf Fassel                ralf@akutech.de
 Ralf Hildebrandt           Ralf.Hildebrandt@innominate.com
 Ralf Schneider             ralf@tapfere-schneiderleins.de
 Ralph Gillen		   gillen@theochem.uni-duesseldorf.de
 Rami Lehti                 Rami.Lehti@finland.sun.com
 Randolph Chung             tausq@debian.org
 Randy			   mcclellr@oit.edu
 Rat			   ratinox@peorth.gweep.net
 Reinhard Wobst		   R.Wobst@ifw-dresden.de
-Rmi Guyomarch		   rguyom@mail.dotcom.fr
+Rémi Guyomarch		   rguyom@mail.dotcom.fr
 Reuben Sumner		   rasumner@wisdom.weizmann.ac.il
 Richard Outerbridge	   outer@interlog.com
 Roddy Strachan		   roddy@satlink.com.au
 Roland Rosenfeld	   roland@spinnaker.rhein.de
 Ross Golder		   rossigee@bigfoot.com
 Serge Munhoven		   munhoven@mema.ucl.ac.be
-Sergi Blanch i Torn       sergi at calcurco cat
+Sergi Blanch i Torné       sergi at calcurco cat
 Simon Josefsson            jas@extundo.com
 SL Baur 		   steve@xemacs.org
 Stephan Austermuehle       au@hcsd.de
-Stephan Mller             smueller at atsec com
+Stephan Müller             smueller at atsec com
 Stephane Corthesy          stephane@sente.ch
 Stefan Karrmann 	   S.Karrmann@gmx.net
 Stefan Keller		   dres@cs.tu-berlin.de
-Stefan Krger              stadtkind2 at gmx de
+Stefan Krüger              stadtkind2 at gmx de
 Steffen Ullrich 	   ccrlphr@xensei.com
 Steffen Zahn		   zahn@berlin.snafu.de
 Steven Bakker		   steven@icoe.att.com
 Susanne Schultz 	   schultz@hsp.de
 Sven Bjorn
 Szakats Istvan             szaki.ms@gmail.com
 Thiago Jung Bauermann	   jungmann@cwb.matrix.com.br
 Thomas Roessler 	   roessler@guug.de
 Tom Holroyd                tomh@po.crl.go.jp
 Tom Spindler		   dogcow@home.merit.edu
 Tom Zerucha		   tzeruch@ceddec.com
 Tomas Fasth		   tomas.fasth@twinspot.net
 Tommi Komulainen           Tommi.Komulainen@iki.fi
 Thomas Mikkelsen	   tbm@image.dk
-Ulf Mller		   3umoelle@informatik.uni-hamburg.de
+Ulf Möller		   3umoelle@informatik.uni-hamburg.de
 Umberto Salsi		   salsi@icosaedro.it
 Uoti Urpala
 Urko Lusa		   ulusa@euskalnet.net
 Victor Stinner             haypo@inl.fr
 Walter Koch		   koch@u32.de
 Werner Koch		   wk@gnupg.org
 Wim Vandeputte		   wim@kd85.com
 			   nbecker@hns.com
old mode 100644
new mode 100755
old mode 100644
new mode 100755
old mode 100644
new mode 100755
old mode 100644
new mode 100755
old mode 100644
new mode 100755
old mode 100644
new mode 100755
old mode 100644
new mode 100755
old mode 100644
new mode 100755
old mode 100644
new mode 100755
--- a/third_party/libgcrypt/cipher/ChangeLog-2011
+++ b/third_party/libgcrypt/cipher/ChangeLog-2011
@@ -1150,17 +1150,17 @@ 2006-11-30  Werner Koch  <wk@g10code.com
 
 2006-11-15  Werner Koch  <wk@g10code.com>
 
 	* Makefile.am (INCLUDES): Include ../src/
 
 2006-11-03  Werner Koch  <wk@g10code.com>
 
 	* random.c [HAVE_GETTIMEOFDAY]: Included sys/time.h and not
-	sys/times.h.  Reported by Rafal Carr.
+	sys/times.h.  Reported by Rafaël Carré.
 
 2006-11-05  Moritz Schulte  <moritz@g10code.com>
 
 	* Makefile.am (AM_CFLAGS): Added -I$(top_builddir)/src so that the
 	new gcrypt.h is used, not the one installed in the system.
 
 2006-10-25  Werner Koch  <wk@g10code.com>
 
@@ -3259,17 +3259,17 @@ 2002-03-18  Werner Koch  <wk@gnupg.org>
 
 2002-03-11  Werner Koch  <wk@gnupg.org>
 
 	* md.c: Add rsaSignatureWithripemd160 to OID table.
 
 2002-02-20  Werner Koch  <wk@gnupg.org>
 
 	* sha1.c: Removed a left over comment note.  The code has been
-	rewritten from scratch in 1998.  Thanks to Niels Mller for
+	rewritten from scratch in 1998.  Thanks to Niels Möller for
 	reporting this misleading comment.
 
 2002-02-18  Werner Koch  <wk@gnupg.org>
 
 	* rndunix.c (rndunix_constructor): Use the the new prefixed
 	function name.  Reported by Jordi Mallach.
 
 2002-02-10  Werner Koch  <wk@gnupg.org>
--- a/third_party/libgcrypt/cipher/camellia-aarch64.S
+++ b/third_party/libgcrypt/cipher/camellia-aarch64.S
@@ -153,17 +153,17 @@
 #define dec_rounds(n) \
 	roundsm(XL, XR, ((n) + 7) * 2 + 0, ((n) + 7) * 2 + 1, YL, YR); \
 	roundsm(YL, YR, ((n) + 6) * 2 + 0, ((n) + 6) * 2 + 1, XL, XR); \
 	roundsm(XL, XR, ((n) + 5) * 2 + 0, ((n) + 5) * 2 + 1, YL, YR); \
 	roundsm(YL, YR, ((n) + 4) * 2 + 0, ((n) + 4) * 2 + 1, XL, XR); \
 	roundsm(XL, XR, ((n) + 3) * 2 + 0, ((n) + 3) * 2 + 1, YL, YR); \
 	roundsm(YL, YR, ((n) + 2) * 2 + 0, ((n) + 2) * 2 + 1, XL, XR);
 
-/* perform FL and FL? */
+/* perform FL and FL⁻¹ */
 #define fls(ll, lr, rl, rr, kll, klr, krl, krr) \
 	ldr RT0, [CTX, #(key_table + ((kll) * 4))]; \
 	ldr RT2, [CTX, #(key_table + ((krr) * 4))]; \
 	and RT0, RT0, ll; \
 	ldr RT3, [CTX, #(key_table + ((krl) * 4))]; \
 	orr RT2, RT2, rr; \
 	ldr RT1, [CTX, #(key_table + ((klr) * 4))]; \
 	eor rl, rl, RT2; \
--- a/third_party/libgcrypt/cipher/camellia-aesni-avx-amd64.S
+++ b/third_party/libgcrypt/cipher/camellia-aesni-avx-amd64.S
@@ -655,17 +655,17 @@
  *   swap_bitendianness(
  *       isom_map_camellia_to_aes(
  *           camellia_f(
  *               swap_bitendianess(in)
  *           )
  *       )
  *   )
  *
- * (note: '? 0xc5' inside camellia_f())
+ * (note: '⊕ 0xc5' inside camellia_f())
  */
 .Lpre_tf_lo_s1:
 	.byte 0x45, 0xe8, 0x40, 0xed, 0x2e, 0x83, 0x2b, 0x86
 	.byte 0x4b, 0xe6, 0x4e, 0xe3, 0x20, 0x8d, 0x25, 0x88
 .Lpre_tf_hi_s1:
 	.byte 0x00, 0x51, 0xf1, 0xa0, 0x8a, 0xdb, 0x7b, 0x2a
 	.byte 0x09, 0x58, 0xf8, 0xa9, 0x83, 0xd2, 0x72, 0x23
 
@@ -676,17 +676,17 @@
  *   swap_bitendianness(
  *       isom_map_camellia_to_aes(
  *           camellia_f(
  *               swap_bitendianess(in <<< 1)
  *           )
  *       )
  *   )
  *
- * (note: '? 0xc5' inside camellia_f())
+ * (note: '⊕ 0xc5' inside camellia_f())
  */
 .Lpre_tf_lo_s4:
 	.byte 0x45, 0x40, 0x2e, 0x2b, 0x4b, 0x4e, 0x20, 0x25
 	.byte 0x14, 0x11, 0x7f, 0x7a, 0x1a, 0x1f, 0x71, 0x74
 .Lpre_tf_hi_s4:
 	.byte 0x00, 0xf1, 0x8a, 0x7b, 0x09, 0xf8, 0x83, 0x72
 	.byte 0xad, 0x5c, 0x27, 0xd6, 0xa4, 0x55, 0x2e, 0xdf
 
@@ -699,17 +699,17 @@
  *          isom_map_aes_to_camellia(
  *              swap_bitendianness(
  *                  aes_inverse_affine_transform(in)
  *              )
  *          )
  *      )
  *  )
  *
- * (note: '? 0x6e' inside camellia_h())
+ * (note: '⊕ 0x6e' inside camellia_h())
  */
 .Lpost_tf_lo_s1:
 	.byte 0x3c, 0xcc, 0xcf, 0x3f, 0x32, 0xc2, 0xc1, 0x31
 	.byte 0xdc, 0x2c, 0x2f, 0xdf, 0xd2, 0x22, 0x21, 0xd1
 .Lpost_tf_hi_s1:
 	.byte 0x00, 0xf9, 0x86, 0x7f, 0xd7, 0x2e, 0x51, 0xa8
 	.byte 0xa4, 0x5d, 0x22, 0xdb, 0x73, 0x8a, 0xf5, 0x0c
 
@@ -722,17 +722,17 @@
  *          isom_map_aes_to_camellia(
  *              swap_bitendianness(
  *                  aes_inverse_affine_transform(in)
  *              )
  *          )
  *      )
  *  ) <<< 1
  *
- * (note: '? 0x6e' inside camellia_h())
+ * (note: '⊕ 0x6e' inside camellia_h())
  */
 .Lpost_tf_lo_s2:
 	.byte 0x78, 0x99, 0x9f, 0x7e, 0x64, 0x85, 0x83, 0x62
 	.byte 0xb9, 0x58, 0x5e, 0xbf, 0xa5, 0x44, 0x42, 0xa3
 .Lpost_tf_hi_s2:
 	.byte 0x00, 0xf3, 0x0d, 0xfe, 0xaf, 0x5c, 0xa2, 0x51
 	.byte 0x49, 0xba, 0x44, 0xb7, 0xe6, 0x15, 0xeb, 0x18
 
@@ -745,17 +745,17 @@
  *          isom_map_aes_to_camellia(
  *              swap_bitendianness(
  *                  aes_inverse_affine_transform(in)
  *              )
  *          )
  *      )
  *  ) >>> 1
  *
- * (note: '? 0x6e' inside camellia_h())
+ * (note: '⊕ 0x6e' inside camellia_h())
  */
 .Lpost_tf_lo_s3:
 	.byte 0x1e, 0x66, 0xe7, 0x9f, 0x19, 0x61, 0xe0, 0x98
 	.byte 0x6e, 0x16, 0x97, 0xef, 0x69, 0x11, 0x90, 0xe8
 .Lpost_tf_hi_s3:
 	.byte 0x00, 0xfc, 0x43, 0xbf, 0xeb, 0x17, 0xa8, 0x54
 	.byte 0x52, 0xae, 0x11, 0xed, 0xb9, 0x45, 0xfa, 0x06
 
--- a/third_party/libgcrypt/cipher/camellia-aesni-avx2-amd64.S
+++ b/third_party/libgcrypt/cipher/camellia-aesni-avx2-amd64.S
@@ -638,17 +638,17 @@
  *   swap_bitendianness(
  *       isom_map_camellia_to_aes(
  *           camellia_f(
  *               swap_bitendianess(in)
  *           )
  *       )
  *   )
  *
- * (note: '? 0xc5' inside camellia_f())
+ * (note: '⊕ 0xc5' inside camellia_f())
  */
 .Lpre_tf_lo_s1:
 	.byte 0x45, 0xe8, 0x40, 0xed, 0x2e, 0x83, 0x2b, 0x86
 	.byte 0x4b, 0xe6, 0x4e, 0xe3, 0x20, 0x8d, 0x25, 0x88
 .Lpre_tf_hi_s1:
 	.byte 0x00, 0x51, 0xf1, 0xa0, 0x8a, 0xdb, 0x7b, 0x2a
 	.byte 0x09, 0x58, 0xf8, 0xa9, 0x83, 0xd2, 0x72, 0x23
 
@@ -659,17 +659,17 @@
  *   swap_bitendianness(
  *       isom_map_camellia_to_aes(
  *           camellia_f(
  *               swap_bitendianess(in <<< 1)
  *           )
  *       )
  *   )
  *
- * (note: '? 0xc5' inside camellia_f())
+ * (note: '⊕ 0xc5' inside camellia_f())
  */
 .Lpre_tf_lo_s4:
 	.byte 0x45, 0x40, 0x2e, 0x2b, 0x4b, 0x4e, 0x20, 0x25
 	.byte 0x14, 0x11, 0x7f, 0x7a, 0x1a, 0x1f, 0x71, 0x74
 .Lpre_tf_hi_s4:
 	.byte 0x00, 0xf1, 0x8a, 0x7b, 0x09, 0xf8, 0x83, 0x72
 	.byte 0xad, 0x5c, 0x27, 0xd6, 0xa4, 0x55, 0x2e, 0xdf
 
@@ -682,17 +682,17 @@
  *          isom_map_aes_to_camellia(
  *              swap_bitendianness(
  *                  aes_inverse_affine_transform(in)
  *              )
  *          )
  *      )
  *  )
  *
- * (note: '? 0x6e' inside camellia_h())
+ * (note: '⊕ 0x6e' inside camellia_h())
  */
 .Lpost_tf_lo_s1:
 	.byte 0x3c, 0xcc, 0xcf, 0x3f, 0x32, 0xc2, 0xc1, 0x31
 	.byte 0xdc, 0x2c, 0x2f, 0xdf, 0xd2, 0x22, 0x21, 0xd1
 .Lpost_tf_hi_s1:
 	.byte 0x00, 0xf9, 0x86, 0x7f, 0xd7, 0x2e, 0x51, 0xa8
 	.byte 0xa4, 0x5d, 0x22, 0xdb, 0x73, 0x8a, 0xf5, 0x0c
 
@@ -705,17 +705,17 @@
  *          isom_map_aes_to_camellia(
  *              swap_bitendianness(
  *                  aes_inverse_affine_transform(in)
  *              )
  *          )
  *      )
  *  ) <<< 1
  *
- * (note: '? 0x6e' inside camellia_h())
+ * (note: '⊕ 0x6e' inside camellia_h())
  */
 .Lpost_tf_lo_s2:
 	.byte 0x78, 0x99, 0x9f, 0x7e, 0x64, 0x85, 0x83, 0x62
 	.byte 0xb9, 0x58, 0x5e, 0xbf, 0xa5, 0x44, 0x42, 0xa3
 .Lpost_tf_hi_s2:
 	.byte 0x00, 0xf3, 0x0d, 0xfe, 0xaf, 0x5c, 0xa2, 0x51
 	.byte 0x49, 0xba, 0x44, 0xb7, 0xe6, 0x15, 0xeb, 0x18
 
@@ -728,17 +728,17 @@
  *          isom_map_aes_to_camellia(
  *              swap_bitendianness(
  *                  aes_inverse_affine_transform(in)
  *              )
  *          )
  *      )
  *  ) >>> 1
  *
- * (note: '? 0x6e' inside camellia_h())
+ * (note: '⊕ 0x6e' inside camellia_h())
  */
 .Lpost_tf_lo_s3:
 	.byte 0x1e, 0x66, 0xe7, 0x9f, 0x19, 0x61, 0xe0, 0x98
 	.byte 0x6e, 0x16, 0x97, 0xef, 0x69, 0x11, 0x90, 0xe8
 .Lpost_tf_hi_s3:
 	.byte 0x00, 0xfc, 0x43, 0xbf, 0xeb, 0x17, 0xa8, 0x54
 	.byte 0x52, 0xae, 0x11, 0xed, 0xb9, 0x45, 0xfa, 0x06
 
--- a/third_party/libgcrypt/cipher/camellia-arm.S
+++ b/third_party/libgcrypt/cipher/camellia-arm.S
@@ -217,17 +217,17 @@
 #define dec_rounds(n) \
 	roundsm(XL, XR, ((n) + 7) * 2 + 0, ((n) + 7) * 2 + 1, YL, YR); \
 	roundsm(YL, YR, ((n) + 6) * 2 + 0, ((n) + 6) * 2 + 1, XL, XR); \
 	roundsm(XL, XR, ((n) + 5) * 2 + 0, ((n) + 5) * 2 + 1, YL, YR); \
 	roundsm(YL, YR, ((n) + 4) * 2 + 0, ((n) + 4) * 2 + 1, XL, XR); \
 	roundsm(XL, XR, ((n) + 3) * 2 + 0, ((n) + 3) * 2 + 1, YL, YR); \
 	roundsm(YL, YR, ((n) + 2) * 2 + 0, ((n) + 2) * 2 + 1, XL, XR);
 
-/* perform FL and FL? */
+/* perform FL and FL⁻¹ */
 #define fls(ll, lr, rl, rr, kll, klr, krl, krr) \
 	ldr RT0, [CTX, #(key_table + ((kll) * 4))]; \
 	ldr RT2, [CTX, #(key_table + ((krr) * 4))]; \
 	and RT0, ll; \
 	ldr RT3, [CTX, #(key_table + ((krl) * 4))]; \
 	orr RT2, rr; \
 	ldr RT1, [CTX, #(key_table + ((klr) * 4))]; \
 	eor rl, RT2; \
--- a/third_party/libgcrypt/cipher/cipher-gcm-armv8-aarch32-ce.S
+++ b/third_party/libgcrypt/cipher/cipher-gcm-armv8-aarch32-ce.S
@@ -115,18 +115,18 @@ gcry_gcm_reduction_constant:
 #define rt1_h d29
 
 #define rrconst q15
 #define rrconst_l d30
 #define rrconst_h d31
 
 /* GHASH macros */
 
-/* See "Gouva, C. P. L. & Lpez, J. Implementing GCM on ARMv8. Topics in
- * Cryptology  CT-RSA 2015" for details.
+/* See "Gouvêa, C. P. L. & López, J. Implementing GCM on ARMv8. Topics in
+ * Cryptology — CT-RSA 2015" for details.
  */
 
 /* Input: 'a' and 'b', Output: 'r0:r1' (low 128-bits in r0, high in r1)
  *  Note: 'r1' may be 'a' or 'b', 'r0' must not be either 'a' or 'b'.
  */
 #define PMUL_128x128(r0, r1, a, b, t, interleave_op) \
         veor t##_h, b##_l, b##_h; \
         veor t##_l, a##_l, a##_h; \
@@ -240,27 +240,27 @@ gcry_gcm_reduction_constant:
   vext.8 rbuf1, rbuf1, rbuf1, #8
   vext.8 rbuf2, rbuf2, rbuf2, #8
   vext.8 rbuf3, rbuf3, rbuf3, #8
   veor rhash, rhash, rbuf /* in0 ^ hash */
 
   blo .Lend_4
 
 .Loop_4:
-  /* (in0 ^ hash) * H? => rr2:rr3 */
-  /* (in1) * H => rr0:rr1 */
+  /* (in0 ^ hash) * H⁴ => rr2:rr3 */
+  /* (in1) * H³ => rr0:rr1 */
   PMUL_128x128_2(rr0, rr1, rbuf1, rh3, rr2, rr3, rhash, rh4, rt1, rt0, __)
 
   vld1.64 {rbuf-rbuf1}, [r2]!
   sub r3, r3, #4
   veor rr0, rr0, rr2
   veor rr1, rr1, rr3
 
-  /* (in2) * H => rr2:rr3 */
-  /* (in3) * H => rhash:rbuf3 */
+  /* (in2) * H² => rr2:rr3 */
+  /* (in3) * H¹ => rhash:rbuf3 */
   PMUL_128x128_2(rr2, rr3, rbuf2, rh2, rhash, rbuf3, rbuf3, rh1, rt0, rt1,
                  _(vrev64.8 rbuf, rbuf))
 
   vld1.64 {rbuf2}, [r2]!
 
   vrev64.8 rbuf1, rbuf1
   veor rr0, rr0, rr2
   veor rr1, rr1, rr3
@@ -280,22 +280,22 @@ gcry_gcm_reduction_constant:
 
   vext.8 rbuf2, rbuf2, rbuf2, #8
   vext.8 rbuf3, rbuf3, rbuf3, #8
   veor rhash, rhash, rbuf /* in0 ^ hash */
 
   bhs .Loop_4
 
 .Lend_4:
-  /* (in0 ^ hash) * H? => rr2:rr3 */
-  /* (in1) * H => rr0:rr1 */
+  /* (in0 ^ hash) * H⁴ => rr2:rr3 */
+  /* (in1) * H³ => rr0:rr1 */
   PMUL_128x128_2(rr0, rr1, rbuf1, rh3, rr2, rr3, rhash, rh4, rt1, rt0, __)
 
-  /* (in2) * H => rhash:rbuf */
-  /* (in3) * H => rbuf1:rbuf2 */
+  /* (in2) * H² => rhash:rbuf */
+  /* (in3) * H¹ => rbuf1:rbuf2 */
   PMUL_128x128_2(rhash, rbuf, rbuf2, rh2, rbuf1, rbuf2, rbuf3, rh1, rt0, rt1,
                  _(veor rr0, rr0, rr2;
                    veor rr1, rr1, rr3))
 
   veor rr0, rr0, rhash
   veor rr1, rr1, rbuf
 
   veor rr0, rr0, rbuf1
@@ -391,34 +391,34 @@ gcry_gcm_reduction_constant:
 
   vld1.64 {rhash}, [r0]
   vrev64.8 rhash, rhash /* byte-swap */
   vext.8 rhash, rhash, rhash, #8
 
   vmov rbuf1, rhash
   GCM_LSH_1(r0, rhash_l, rhash_h, rrconst_h, rh1_l, rh1_h, rt1_l) /* H<<<1 */
 
-  /* H */
+  /* H² */
   PMUL_128x128(rr0, rr1, rbuf1, rh1, rt0, __)
   REDUCTION(rh2, rr0, rr1, rrconst_h, rt0, __)
   vmov rhash, rh2
-  GCM_LSH_1(r1, rh2_l, rh2_h, rrconst_h, rbuf1_l, rbuf1_h, rt1_l) /* H<<<1 */
+  GCM_LSH_1(r1, rh2_l, rh2_h, rrconst_h, rbuf1_l, rbuf1_h, rt1_l) /* H²<<<1 */
   add r1, r1, #16
 
-  /* H */
+  /* H³ */
   PMUL_128x128(rr0, rr1, rhash, rh1, rt1, __)
   REDUCTION(rh3, rr0, rr1, rrconst_h, rt1, __)
 
-  /* H? */
+  /* H⁴ */
   PMUL_128x128(rr0, rr1, rhash, rbuf1, rt0, __)
   REDUCTION(rh4, rr0, rr1, rrconst_h, rt0, __)
 
-  GCM_LSH_1(r1, rh3_l, rh3_h, rrconst_h, rt0_l, rt0_h, rt1_l) /* H<<<1 */
+  GCM_LSH_1(r1, rh3_l, rh3_h, rrconst_h, rt0_l, rt0_h, rt1_l) /* H³<<<1 */
   add r1, r1, #16
-  GCM_LSH_1(r1, rh4_l, rh4_h, rrconst_h, rt0_l, rt0_h, rt1_l) /* H?<<<1 */
+  GCM_LSH_1(r1, rh4_l, rh4_h, rrconst_h, rt0_l, rt0_h, rt1_l) /* H⁴<<<1 */
 
   CLEAR_REG(rt0)
   CLEAR_REG(rt1)
   CLEAR_REG(rr1)
   CLEAR_REG(rr0)
   CLEAR_REG(rh1)
   CLEAR_REG(rh2)
   CLEAR_REG(rh3)
--- a/third_party/libgcrypt/cipher/cipher-gcm-armv8-aarch64-ce.S
+++ b/third_party/libgcrypt/cipher/cipher-gcm-armv8-aarch64-ce.S
@@ -72,18 +72,18 @@ gcry_gcm_reduction_constant:
 #define t2      v27
 #define t3      v28
 #define t4      v29
 #define t5      v30
 #define vZZ     v31
 
 /* GHASH macros */
 
-/* See "Gouva, C. P. L. & Lpez, J. Implementing GCM on ARMv8. Topics in
- * Cryptology  CT-RSA 2015" for details.
+/* See "Gouvêa, C. P. L. & López, J. Implementing GCM on ARMv8. Topics in
+ * Cryptology — CT-RSA 2015" for details.
  */
 
 /* Input: 'a' and 'b', Output: 'r0:r1' (low 128-bits in r0, high in r1) */
 #define PMUL_128x128(r0, r1, a, b, T0, T1, interleave_op) \
 	ext T0.16b, b.16b, b.16b, #8; \
 	pmull r0.1q, a.1d, b.1d; \
 	pmull2 r1.1q, a.2d, b.2d; \
 	pmull T1.1q, a.1d, T0.1d; \
@@ -216,33 +216,33 @@ gcry_gcm_reduction_constant:
   rbit rbuf5.16b, rbuf5.16b /* bit-swap */
   eor rhash.16b, rhash.16b, rbuf.16b
 
   cmp x3, #6
   b.lo .Lend_6
 
 .Loop_6:
 
-  /* (in1) * H? => rr0:rr1 */
-  /* (in2) * H? => rr2:rr3 */
-  /* (in0 ^ hash) * H? => rr4:rr5 */
+  /* (in1) * H⁵ => rr0:rr1 */
+  /* (in2) * H⁴ => rr2:rr3 */
+  /* (in0 ^ hash) * H⁶ => rr4:rr5 */
   PMUL_128x128_3(rr0, rr1, rbuf1, rh5, t0, t1,
                  rr2, rr3, rbuf2, rh4, t2, t3,
                  rr4, rr5, rhash, rh6, t4, t5,
                  _(sub x3, x3, #6))
 
   ld1 {rbuf.16b-rbuf2.16b}, [x2], #(3*16)
   cmp x3, #6
 
   eor rr0.16b, rr0.16b, rr2.16b
   eor rr1.16b, rr1.16b, rr3.16b
 
-  /* (in3) * H => rr2:rr3 */
-  /* (in4) * H => rr6:rr7 */
-  /* (in5) * H => rr8:rr9 */
+  /* (in3) * H³ => rr2:rr3 */
+  /* (in4) * H² => rr6:rr7 */
+  /* (in5) * H¹ => rr8:rr9 */
   PMUL_128x128_3(rr2, rr3, rbuf3, rh3, t0, t1,
                  rr6, rr7, rbuf4, rh2, t2, t3,
                  rr8, rr9, rbuf5, rh1, t4, t5,
                  _(eor rr0.16b, rr0.16b, rr4.16b;
                    eor rr1.16b, rr1.16b, rr5.16b))
 
   eor rr0.16b, rr0.16b, rr2.16b
   eor rr1.16b, rr1.16b, rr3.16b
@@ -261,31 +261,31 @@ gcry_gcm_reduction_constant:
 
   rbit rbuf5.16b, rbuf5.16b
   eor rhash.16b, rhash.16b, rbuf.16b
 
   b.hs .Loop_6
 
 .Lend_6:
 
-  /* (in1) * H? => rr0:rr1 */
-  /* (in0 ^ hash) * H? => rr2:rr3 */
-  /* (in2) * H? => rr4:rr5 */
+  /* (in1) * H⁵ => rr0:rr1 */
+  /* (in0 ^ hash) * H⁶ => rr2:rr3 */
+  /* (in2) * H⁴ => rr4:rr5 */
   PMUL_128x128_3(rr0, rr1, rbuf1, rh5, t0, t1,
                  rr2, rr3, rhash, rh6, t2, t3,
                  rr4, rr5, rbuf2, rh4, t4, t5,
                  __)
   eor rr0.16b, rr0.16b, rr2.16b
   eor rr1.16b, rr1.16b, rr3.16b
   eor rr0.16b, rr0.16b, rr4.16b
   eor rr1.16b, rr1.16b, rr5.16b
 
-  /* (in3) * H => rhash:rbuf */
-  /* (in4) * H => rr6:rr7 */
-  /* (in5) * H => rr8:rr9 */
+  /* (in3) * H³ => rhash:rbuf */
+  /* (in4) * H² => rr6:rr7 */
+  /* (in5) * H¹ => rr8:rr9 */
   PMUL_128x128_3(rhash, rbuf, rbuf3, rh3, t0, t1,
                  rr6, rr7, rbuf4, rh2, t2, t3,
                  rr8, rr9, rbuf5, rh1, t4, t5,
                  _(CLEAR_REG(rh4);
                    CLEAR_REG(rh5);
                    CLEAR_REG(rh6)))
   eor rr0.16b, rr0.16b, rhash.16b
   eor rr1.16b, rr1.16b, rbuf.16b
@@ -372,40 +372,40 @@ gcry_gcm_reduction_constant:
 _gcry_ghash_setup_armv8_ce_pmull:
   /* input:
    *	x0: gcm_key
    *	x1: gcm_table
    */
 
   GET_DATA_POINTER(x2, .Lrconst)
 
-  /* H */
+  /* H¹ */
   ld1 {rh1.16b}, [x0]
   rbit rh1.16b, rh1.16b
   st1 {rh1.16b}, [x0]
 
   ld1r {rrconst.2d}, [x2]
 
-  /* H */
+  /* H² */
   PMUL_128x128(rr0, rr1, rh1, rh1, t0, t1, __)
   REDUCTION(rh2, rr0, rr1, rrconst, t0, t1, __, __, __)
 
-  /* H */
+  /* H³ */
   PMUL_128x128(rr0, rr1, rh2, rh1, t0, t1, __)
   REDUCTION(rh3, rr0, rr1, rrconst, t0, t1, __, __, __)
 
-  /* H? */
+  /* H⁴ */
   PMUL_128x128(rr0, rr1, rh2, rh2, t0, t1, __)
   REDUCTION(rh4, rr0, rr1, rrconst, t0, t1, __, __, __)
 
-  /* H? */
+  /* H⁵ */
   PMUL_128x128(rr0, rr1, rh2, rh3, t0, t1, __)
   REDUCTION(rh5, rr0, rr1, rrconst, t0, t1, __, __, __)
 
-  /* H? */
+  /* H⁶ */
   PMUL_128x128(rr0, rr1, rh3, rh3, t0, t1, __)
   REDUCTION(rh6, rr0, rr1, rrconst, t0, t1, __, __, __)
 
   st1 {rh2.16b-rh4.16b}, [x1], #(3*16)
   st1 {rh5.16b-rh6.16b}, [x1]
 
   ret
 .size _gcry_ghash_setup_armv8_ce_pmull,.-_gcry_ghash_setup_armv8_ce_pmull;
--- a/third_party/libgcrypt/cipher/cipher-gcm-intel-pclmul.c
+++ b/third_party/libgcrypt/cipher/cipher-gcm-intel-pclmul.c
@@ -36,17 +36,17 @@
 #if _GCRY_GCC_VERSION >= 40400 /* 4.4 */
 /* Prevent compiler from issuing SSE instructions between asm blocks. */
 #  pragma GCC target("no-sse")
 #endif
 
 
 /*
  Intel PCLMUL ghash based on white paper:
-  "Intel Carry-Less Multiplication Instruction and its Usage for Computing the
+  "Intel® Carry-Less Multiplication Instruction and its Usage for Computing the
    GCM Mode - Rev 2.01"; Shay Gueron, Michael E. Kounavis.
  */
 static inline void gfmul_pclmul(void)
 {
   /* Input: XMM0 and XMM1, Output: XMM1. Input XMM0 stays unmodified.
      Input must be converted to little-endian.
    */
   asm volatile (/* gfmul, xmm0 has operator a and xmm1 has operator b. */
@@ -118,20 +118,20 @@ static inline void gfmul_pclmul(void)
                 ::: "cc" );
 }
 
 
 #ifdef __x86_64__
 static inline void gfmul_pclmul_aggr4(void)
 {
   /* Input:
-      H: XMM0          X_i            : XMM6
-      H: XMM8          X_(i-1)        : XMM3
-      H: XMM9          X_(i-2)        : XMM2
-      H?: XMM10         X_(i-3)?Y_(i-4): XMM1
+      H¹: XMM0          X_i            : XMM6
+      H²: XMM8          X_(i-1)        : XMM3
+      H³: XMM9          X_(i-2)        : XMM2
+      H⁴: XMM10         X_(i-3)⊕Y_(i-4): XMM1
      Output:
       Y_i: XMM1
      Inputs XMM0 stays unmodified.
      Input must be converted to little-endian.
    */
   asm volatile (/* perform clmul and merge results... */
                 "pshufd $78, %%xmm10, %%xmm11\n\t"
                 "pshufd $78, %%xmm1, %%xmm12\n\t"
@@ -267,34 +267,34 @@ void
   buf_cpy (c->u_mode.gcm.u_ghash_key.key, tmp, GCRY_GCM_BLOCK_LEN);
 
 #ifdef __x86_64__
   asm volatile ("movdqu %[h_1], %%xmm0\n\t"
                 "movdqa %%xmm0, %%xmm1\n\t"
                 :
                 : [h_1] "m" (*tmp));
 
-  gfmul_pclmul (); /* HH => H */
+  gfmul_pclmul (); /* H•H => H² */
 
   asm volatile ("movdqu %%xmm1, 0*16(%[h_234])\n\t"
                 "movdqa %%xmm1, %%xmm8\n\t"
                 :
                 : [h_234] "r" (c->u_mode.gcm.gcm_table)
                 : "memory");
 
-  gfmul_pclmul (); /* HH => H */
+  gfmul_pclmul (); /* H•H² => H³ */
 
   asm volatile ("movdqa %%xmm8, %%xmm0\n\t"
                 "movdqu %%xmm1, 1*16(%[h_234])\n\t"
                 "movdqa %%xmm8, %%xmm1\n\t"
                 :
                 : [h_234] "r" (c->u_mode.gcm.gcm_table)
                 : "memory");
 
-  gfmul_pclmul (); /* HH => H? */
+  gfmul_pclmul (); /* H²•H² => H⁴ */
 
   asm volatile ("movdqu %%xmm1, 2*16(%[h_234])\n\t"
                 :
                 : [h_234] "r" (c->u_mode.gcm.gcm_table)
                 : "memory");
 
 #ifdef __WIN64__
   /* Clear/restore used registers. */
--- a/third_party/libgcrypt/cipher/cipher-ocb.c
+++ b/third_party/libgcrypt/cipher/cipher-ocb.c
@@ -18,17 +18,17 @@
  *
  *
  * OCB is covered by several patents but may be used freely by most
  * software.  See http://web.cs.ucdavis.edu/~rogaway/ocb/license.htm .
  * In particular license 1 is suitable for Libgcrypt: See
  * http://web.cs.ucdavis.edu/~rogaway/ocb/license1.pdf for the full
  * license document; it basically says:
  *
- *   License 1  License for Open-Source Software Implementations of OCB
+ *   License 1 — License for Open-Source Software Implementations of OCB
  *               (Jan 9, 2013)
  *
  *   Under this license, you are authorized to make, use, and
  *   distribute open-source software implementations of OCB. This
  *   license terminates for you if you sue someone over their
  *   open-source software implementation of OCB claiming that you have
  *   a patent covering their implementation.
  */
--- a/third_party/libgcrypt/cipher/crc-intel-pclmul.c
+++ b/third_party/libgcrypt/cipher/crc-intel-pclmul.c
@@ -69,17 +69,17 @@ static const struct crc32_consts_s crc32
     U64_C(0x1751997d0), U64_C(0x0ccaa009e), /* y = { 5, 3 } */
     U64_C(0x163cd6124), 0                   /* y = 2 */
   },
   { /* my_p[2] = reverse_33bits ( { floor(x^64 / P(x)), P(x) } ) */
     U64_C(0x1f7011641), U64_C(0x1db710641)
   }
 };
 
-/* CLMUL constants for CRC24RFC2440 (polynomial multiplied with x?). */
+/* CLMUL constants for CRC24RFC2440 (polynomial multiplied with x⁸). */
 static const struct crc32_consts_s crc24rfc2440_consts ALIGNED_16 =
 {
   { /* k[6] = x^(32*y) mod P(x) << 32*/
     U64_C(0x08289a00) << 32, U64_C(0x74b44a00) << 32, /* y = { 17, 15 } */
     U64_C(0xc4b14d00) << 32, U64_C(0xfd7e0c00) << 32, /* y = { 5, 3 } */
     U64_C(0xd9fe8c00) << 32, 0                        /* y = 2 */
   },
   { /* my_p[2] = { floor(x^64 / P(x)), P(x) } */
--- a/third_party/libgcrypt/cipher/crc.c
+++ b/third_party/libgcrypt/cipher/crc.c
@@ -730,17 +730,17 @@ static const u32 crc24_table[1024] =
   0x00d7b036, 0x0085b900, 0x0073a25a, 0x0021ab6c,
   0x00f493d8, 0x00a69aee, 0x005081b4, 0x00028882,
   0x00bcb600, 0x00eebf36, 0x0018a46c, 0x004aad5a
 };
 
 static inline
 u32 crc24_init (void)
 {
-  /* Transformed to 32-bit CRC by multiplied by x? and then byte swapped. */
+  /* Transformed to 32-bit CRC by multiplied by x⁸ and then byte swapped. */
   return 0xce04b7; /* _gcry_bswap(0xb704ce << 8) */
 }
 
 static inline
 u32 crc24_next (u32 crc, byte data)
 {
   return (crc >> 8) ^ crc24_table[(crc & 0xff) ^ data];
 }
--- a/third_party/libgcrypt/cipher/ecc-eddsa.c
+++ b/third_party/libgcrypt/cipher/ecc-eddsa.c
@@ -811,17 +811,17 @@ gpg_err_code_t
   if (rc)
     goto leave;
   reverse_buffer (digest, 64);
   if (DBG_CIPHER)
     log_printhex (" H(R+)", digest, 64);
   _gcry_mpi_set_buffer (h, digest, 64, 0);
 
   /* According to the paper the best way for verification is:
-         encodepoint(sG - hQ) = encodepoint(r)
+         encodepoint(sG - h·Q) = encodepoint(r)
      because we don't need to decode R. */
   {
     void *sbuf;
     unsigned int slen;
 
     sbuf = _gcry_mpi_get_opaque_copy (s_in, &tmp);
     slen = (tmp +7)/8;
     reverse_buffer (sbuf, slen);
--- a/third_party/libgcrypt/cipher/keccak-armv7-neon.S
+++ b/third_party/libgcrypt/cipher/keccak-armv7-neon.S
@@ -26,17 +26,17 @@
 
 /* Based on public-domain/CC0 implementation from SUPERCOP package
  * (keccakc1024/inplace-armv7a-neon/keccak2.s)
  *
  * Original copyright header follows:
  */
 
 @ The Keccak sponge function, designed by Guido Bertoni, Joan Daemen,
-@ Michal Peeters and Gilles Van Assche. For more information, feedback or
+@ Michaël Peeters and Gilles Van Assche. For more information, feedback or
 @ questions, please refer to our website: http://keccak.noekeon.org/
 @
 @ Implementation by Ronny Van Keer, hereby denoted as "the implementer".
 @
 @ To the extent possible under law, the implementer has waived all copyright
 @ and related or neighboring rights to the source code in this file.
 @ http://creativecommons.org/publicdomain/zero/1.0/
 
--- a/third_party/libgcrypt/cipher/rijndael-armv8-aarch32-ce.S
+++ b/third_party/libgcrypt/cipher/rijndael-armv8-aarch32-ce.S
@@ -1519,18 +1519,18 @@
 
 /*
  * u32 _gcry_aes_sbox4_armv8_ce(u32 in4b);
  */
 .align 3
 .globl _gcry_aes_sbox4_armv8_ce
 .type  _gcry_aes_sbox4_armv8_ce,%function;
 _gcry_aes_sbox4_armv8_ce:
-  /* See "Gouva, C. P. L. & Lpez, J. Implementing GCM on ARMv8. Topics in
-   * Cryptology  CT-RSA 2015" for details.
+  /* See "Gouvêa, C. P. L. & López, J. Implementing GCM on ARMv8. Topics in
+   * Cryptology — CT-RSA 2015" for details.
    */
   vmov.i8 q0, #0x52
   vmov.i8 q1, #0
   vmov s0, r0
   aese.8 q0, q1
   veor d0, d1
   vpadd.i32 d0, d0, d1
   vmov r0, s0
--- a/third_party/libgcrypt/cipher/rijndael-armv8-aarch64-ce.S
+++ b/third_party/libgcrypt/cipher/rijndael-armv8-aarch64-ce.S
@@ -1278,18 +1278,18 @@ 1:	;
 
 /*
  * u32 _gcry_aes_sbox4_armv8_ce(u32 in4b);
  */
 .align 3
 .globl _gcry_aes_sbox4_armv8_ce
 .type  _gcry_aes_sbox4_armv8_ce,%function;
 _gcry_aes_sbox4_armv8_ce:
-  /* See "Gouva, C. P. L. & Lpez, J. Implementing GCM on ARMv8. Topics in
-   * Cryptology  CT-RSA 2015" for details.
+  /* See "Gouvêa, C. P. L. & López, J. Implementing GCM on ARMv8. Topics in
+   * Cryptology — CT-RSA 2015" for details.
    */
   movi v0.16b, #0x52
   movi v1.16b, #0
   mov v0.S[0], w0
   aese v0.16b, v1.16b
   addv s0, v0.4s
   mov w0, v0.S[0]
   CLEAR_REG(v0)
--- a/third_party/libgcrypt/cipher/salsa20.c
+++ b/third_party/libgcrypt/cipher/salsa20.c
@@ -1,10 +1,10 @@
 /* salsa20.c  -  Bernstein's Salsa20 cipher
- * Copyright (C) 2012 Simon Josefsson, Niels Mller
+ * Copyright (C) 2012 Simon Josefsson, Niels Möller
  * Copyright (C) 2013 g10 Code GmbH
  *
  * This file is part of Libgcrypt.
  *
  * Libgcrypt is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser general Public License as
  * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
--- a/third_party/libgcrypt/cipher/serpent-armv7-neon.S
+++ b/third_party/libgcrypt/cipher/serpent-armv7-neon.S
@@ -89,18 +89,18 @@
 
 /**********************************************************************
   8-way serpent
  **********************************************************************/
 
 /*
  * These are the S-Boxes of Serpent from following research paper.
  *
- *  D. A. Osvik, Speeding up Serpent, in Third AES Candidate Conference,
- *   (New York, New York, USA), p. 317329, National Institute of Standards and
+ *  D. A. Osvik, “Speeding up Serpent,” in Third AES Candidate Conference,
+ *   (New York, New York, USA), p. 317–329, National Institute of Standards and
  *   Technology, 2000.
  *
  * Paper is also available at: http://www.ii.uib.no/~osvik/pub/aes3.pdf
  *
  */
 #define SBOX0(a0, a1, a2, a3, a4, b0, b1, b2, b3, b4) \
 	veor	a3, a3, a0;	veor	b3, b3, b0;	vmov	a4, a1;		vmov	b4, b1;		\
 	vand	a1, a1, a3;	vand	b1, b1, b3;	veor	a4, a4, a2;	veor	b4, b4, b2;	\
--- a/third_party/libgcrypt/cipher/serpent-avx2-amd64.S
+++ b/third_party/libgcrypt/cipher/serpent-avx2-amd64.S
@@ -99,18 +99,18 @@
 
 /**********************************************************************
   16-way serpent
  **********************************************************************/
 
 /*
  * These are the S-Boxes of Serpent from following research paper.
  *
- *  D. A. Osvik, Speeding up Serpent, in Third AES Candidate Conference,
- *   (New York, New York, USA), p. 317329, National Institute of Standards and
+ *  D. A. Osvik, “Speeding up Serpent,” in Third AES Candidate Conference,
+ *   (New York, New York, USA), p. 317–329, National Institute of Standards and
  *   Technology, 2000.
  *
  * Paper is also available at: http://www.ii.uib.no/~osvik/pub/aes3.pdf
  *
  */
 #define SBOX0(r0, r1, r2, r3, r4) \
 	vpxor	r0, r3, r3;		vmovdqa	r1, r4;			\
 	vpand	r3, r1, r1;		vpxor	r2, r4, r4;		\
--- a/third_party/libgcrypt/cipher/serpent-sse2-amd64.S
+++ b/third_party/libgcrypt/cipher/serpent-sse2-amd64.S
@@ -118,18 +118,18 @@
 
 /**********************************************************************
   8-way serpent
  **********************************************************************/
 
 /*
  * These are the S-Boxes of Serpent from following research paper.
  *
- *  D. A. Osvik, Speeding up Serpent, in Third AES Candidate Conference,
- *   (New York, New York, USA), p. 317329, National Institute of Standards and
+ *  D. A. Osvik, “Speeding up Serpent,” in Third AES Candidate Conference,
+ *   (New York, New York, USA), p. 317–329, National Institute of Standards and
  *   Technology, 2000.
  *
  * Paper is also available at: http://www.ii.uib.no/~osvik/pub/aes3.pdf
  *
  */
 #define SBOX0(r0, r1, r2, r3, r4) \
 	pxor	r0, r3;		movdqa	r1, r4;		\
 	pand	r3, r1;		pxor	r2, r4;		\
--- a/third_party/libgcrypt/cipher/serpent.c
+++ b/third_party/libgcrypt/cipher/serpent.c
@@ -224,18 +224,18 @@ extern void _gcry_serpent_neon_ocb_auth(
 
 /* A prototype.  */
 static const char *serpent_test (void);
 
 
 /*
  * These are the S-Boxes of Serpent from following research paper.
  *
- *  D. A. Osvik, Speeding up Serpent, in Third AES Candidate Conference,
- *   (New York, New York, USA), p. 317329, National Institute of Standards and
+ *  D. A. Osvik, “Speeding up Serpent,” in Third AES Candidate Conference,
+ *   (New York, New York, USA), p. 317–329, National Institute of Standards and
  *   Technology, 2000.
  *
  * Paper is also available at: http://www.ii.uib.no/~osvik/pub/aes3.pdf
  *
  */
 
 #define SBOX0(r0, r1, r2, r3, w, x, y, z) \
   { \
old mode 100644
new mode 100755
--- a/third_party/libgcrypt/doc/ChangeLog-2011
+++ b/third_party/libgcrypt/doc/ChangeLog-2011
@@ -31,17 +31,17 @@ 2009-05-10  Werner Koch  <wk@g10code.com
 
 2009-04-02  Werner Koch  <wk@g10code.com>
 
 	* gcrypt.texi (Self-Tests): Fix register fucntion names.
 
 2009-02-22  Werner Koch  <wk@g10code.com>
 
 	* gcrypt.texi (Memory allocation): Fix describion of gcry-calloc.
-	Reported by Sergi Blanch i Torn.
+	Reported by Sergi Blanch i Torné.
 
 2008-12-10  Werner Koch  <wk@g10code.com>
 
 	* gcrypt.texi (Cryptographic Functions): Explain the domain
 	parameter for key generation.
 
 2008-12-05  Werner Koch  <wk@g10code.com>
 
--- a/third_party/libgcrypt/doc/gcrypt.texi
+++ b/third_party/libgcrypt/doc/gcrypt.texi
@@ -264,17 +264,17 @@ to be added to the compiler invocation a
 the @option{--cflags} option to @command{libgcrypt-config}.  The following
 example shows how it can be used at the command line:
 
 @example
 gcc -c foo.c `libgcrypt-config --cflags`
 @end example
 
 Adding the output of @samp{libgcrypt-config --cflags} to the
-compilers command line will ensure that the compiler can find the
+compiler’s command line will ensure that the compiler can find the
 Libgcrypt header file.
 
 A similar problem occurs when linking the program with the library.
 Again, the compiler has to find the library files.  For this to work,
 the path to the library files has to be added to the library search path
 (via the @option{-L} option).  For this, the option @option{--libs} to
 @command{libgcrypt-config} can be used.  For convenience, this option
 also outputs all other options that are required to link the program
@@ -2278,17 +2278,17 @@ The point representing the public key @m
 The private key @math{d}
 @end table
 
 All point values are encoded in standard format; Libgcrypt does in
 general only support uncompressed points, thus the first byte needs to
 be @code{0x04}.  However ``EdDSA'' describes its own compression
 scheme which is used by default; the non-standard first byte
 @code{0x40} may optionally be used to explicit flag the use of the
-algorithms native compression method.
+algorithm’s native compression method.
 
 The public key is similar with "private-key" replaced by "public-key"
 and no @var{d-mpi}.
 
 If the domain parameters are well-known, the name of this curve may be
 used.  For example
 
 @example
@@ -5793,17 +5793,17 @@ Libgcrypt provides an interface to its p
 functions make use of the internal prime number generator which is
 required for the generation for public key key pairs.  The plain prime
 checking function is exported as well.
 
 The generation of random prime numbers is based on the Lim and Lee
 algorithm to create practically save primes.@footnote{Chae Hoon Lim
 and Pil Joong Lee. A key recovery attack on discrete log-based schemes
 using a prime order subgroup. In Burton S. Kaliski Jr., editor,
-Advances in Cryptology: Crypto '97, pages 249-263, Berlin /
+Advances in Cryptology: Crypto '97, pages 249­-263, Berlin /
 Heidelberg / New York, 1997. Springer-Verlag.  Described on page 260.}
 This algorithm creates a pool of smaller primes, select a few of them
 to create candidate primes of the form @math{2 * p_0 * p_1 * ... * p_n
 + 1}, tests the candidate for primality and permutates the pool until
 a prime has been found.  It is possible to clamp one of the small
 primes to a certain size to help DSA style algorithms.  Because most
 of the small primes in the pool are not used for the resulting prime
 number, they are saved for later use (see @code{save_pool_prime} and
old mode 100644
new mode 100755
--- a/third_party/libgcrypt/mpi/ChangeLog-2011
+++ b/third_party/libgcrypt/mpi/ChangeLog-2011
@@ -246,17 +246,17 @@ 2005-02-06  Moritz Schulte  <moritz@g10c
 2005-01-05  Werner Koch  <wk@g10code.com>
 
 	* hppa1.1/udiv-qrnnd.S: Reverted change of 2004-03-02 but kept the
 	.align directive.
 
 2004-12-16  Werner Koch  <wk@g10code.com>
 
 	* config.links (mpi_optional_modules): Move entry for powerpc64
-	before generic powerpc.  Suggested by Rafael vila de Espndola.
+	before generic powerpc.  Suggested by Rafael Ávila de Espíndola.
 
 2004-03-02  Werner Koch  <wk@gnupg.org>
 
 	* hppa1.1/udiv-qrnnd.S: Alignment fix from Lamont Jones for
 	Debian.  Taken from gnupg-1.3.
 
 	* longlong.h: Added PowerPC 64 bit code from GPM-4.1.2 but didn't
 	enable it yet.  Some whitespace changes in HPPA to fix assembler
@@ -783,17 +783,17 @@ Wed May 13 11:04:29 1998  Werner Koch  (
 	* config.links: Add support for MIPS
 
 Thu Apr  9 11:31:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
 
 	* mpicoder.c (mpi_get_secure_buffer): New.
 
 Wed Apr  8 09:44:33 1998  Werner Koch  (wk@isil.d.shuttle.de)
 
-	* config.links: Applied small fix from Ulf Mller.
+	* config.links: Applied small fix from Ulf Möller.
 
 Mon Apr  6 12:38:52 1998  Werner Koch  (wk@isil.d.shuttle.de)
 
 	* mpicoder.c (mpi_get_buffer): Removed returned leading zeroes
 	and changed all callers.
 
 Tue Mar 10 13:40:34 1998  Werner Koch  (wk@isil.d.shuttle.de)
 
--- a/third_party/libgcrypt/mpi/ec.c
+++ b/third_party/libgcrypt/mpi/ec.c
@@ -866,26 +866,26 @@ dup_point_edwards (mpi_point_t result, m
 
   /* H = Z_1^2 */
   ec_pow2 (H, Z1, ctx);
 
   /* J = F - 2H */
   ec_mul2 (J, H, ctx);
   ec_subm (J, F, J, ctx);
 
-  /* X_3 = (B - C - D)  J */
+  /* X_3 = (B - C - D) · J */
   ec_subm (X3, B, C, ctx);
   ec_subm (X3, X3, D, ctx);
   ec_mulm (X3, X3, J, ctx);
 
-  /* Y_3 = F  (E - D) */
+  /* Y_3 = F · (E - D) */
   ec_subm (Y3, E, D, ctx);
   ec_mulm (Y3, Y3, F, ctx);
 
-  /* Z_3 = F  J */
+  /* Z_3 = F · J */
   ec_mulm (Z3, F, J, ctx);
 
 #undef X1
 #undef Y1
 #undef Z1
 #undef X3
 #undef Y3
 #undef Z3
@@ -1096,61 +1096,61 @@ add_points_edwards (mpi_point_t result,
 #define D (ctx->t.scratch[3])
 #define E (ctx->t.scratch[4])
 #define F (ctx->t.scratch[5])
 #define G (ctx->t.scratch[6])
 #define tmp (ctx->t.scratch[7])
 
   /* Compute: (X_3 : Y_3 : Z_3) = (X_1 : Y_1 : Z_1) + (X_2 : Y_2 : Z_3)  */
 
-  /* A = Z1  Z2 */
+  /* A = Z1 · Z2 */
   ec_mulm (A, Z1, Z2, ctx);
 
   /* B = A^2 */
   ec_pow2 (B, A, ctx);
 
-  /* C = X1  X2 */
+  /* C = X1 · X2 */
   ec_mulm (C, X1, X2, ctx);
 
-  /* D = Y1  Y2 */
+  /* D = Y1 · Y2 */
   ec_mulm (D, Y1, Y2, ctx);
 
-  /* E = d  C  D */
+  /* E = d · C · D */
   ec_mulm (E, ctx->b, C, ctx);
   ec_mulm (E, E, D, ctx);
 
   /* F = B - E */
   ec_subm (F, B, E, ctx);
 
   /* G = B + E */
   ec_addm (G, B, E, ctx);
 
-  /* X_3 = A  F  ((X_1 + Y_1)  (X_2 + Y_2) - C - D) */
+  /* X_3 = A · F · ((X_1 + Y_1) · (X_2 + Y_2) - C - D) */
   ec_addm (tmp, X1, Y1, ctx);
   ec_addm (X3, X2, Y2, ctx);
   ec_mulm (X3, X3, tmp, ctx);
   ec_subm (X3, X3, C, ctx);
   ec_subm (X3, X3, D, ctx);
   ec_mulm (X3, X3, F, ctx);
   ec_mulm (X3, X3, A, ctx);
 
-  /* Y_3 = A  G  (D - aC) */
+  /* Y_3 = A · G · (D - aC) */
   if (ctx->dialect == ECC_DIALECT_ED25519)
     {
       ec_addm (Y3, D, C, ctx);
     }
   else
     {
       ec_mulm (Y3, ctx->a, C, ctx);
       ec_subm (Y3, D, Y3, ctx);
     }
   ec_mulm (Y3, Y3, G, ctx);
   ec_mulm (Y3, Y3, A, ctx);
 
-  /* Z_3 = F  G */
+  /* Z_3 = F · G */
   ec_mulm (Z3, F, G, ctx);
 
 
 #undef X1
 #undef Y1
 #undef Z1
 #undef X2
 #undef Y2
@@ -1533,17 +1533,17 @@ int
       {
         gcry_mpi_t xxx;
 
         if (_gcry_mpi_ec_get_affine (x, y, point, ctx))
           goto leave;
 
         xxx = mpi_new (0);
 
-        /* y^2 == x^3 + ax + b */
+        /* y^2 == x^3 + a·x + b */
         ec_pow2 (y, y, ctx);
 
         ec_pow3 (xxx, x, ctx);
         ec_mulm (w, ctx->a, x, ctx);
         ec_addm (w, w, ctx->b, ctx);
         ec_addm (w, w, xxx, ctx);
 
         if (!mpi_cmp (y, w))
@@ -1554,17 +1554,17 @@ int
       break;
     case MPI_EC_MONTGOMERY:
       {
 #define xx y
         /* With Montgomery curve, only X-coordinate is valid.  */
         if (_gcry_mpi_ec_get_affine (x, NULL, point, ctx))
           goto leave;
 
-        /* The equation is: b * y^2 == x^3 + a  x^2 + x */
+        /* The equation is: b * y^2 == x^3 + a · x^2 + x */
         /* We check if right hand is quadratic residue or not by
            Euler's criterion.  */
         /* CTX->A has (a-2)/4 and CTX->B has b^-1 */
         ec_mulm (w, ctx->a, mpi_const (MPI_C_FOUR), ctx);
         ec_addm (w, w, mpi_const (MPI_C_TWO), ctx);
         ec_mulm (w, w, x, ctx);
         ec_pow2 (xx, x, ctx);
         ec_addm (w, w, xx, ctx);
@@ -1582,17 +1582,17 @@ int
 #undef p_minus1
       }
       break;
     case MPI_EC_EDWARDS:
       {
         if (_gcry_mpi_ec_get_affine (x, y, point, ctx))
           goto leave;
 
-        /* a  x^2 + y^2 - 1 - b  x^2  y^2 == 0 */
+        /* a · x^2 + y^2 - 1 - b · x^2 · y^2 == 0 */
         ec_pow2 (x, x, ctx);
         ec_pow2 (y, y, ctx);
         if (ctx->dialect == ECC_DIALECT_ED25519)
           mpi_sub (w, ctx->p, x);
         else
           ec_mulm (w, ctx->a, x, ctx);
         ec_addm (w, w, y, ctx);
         ec_subm (w, w, mpi_const (MPI_C_ONE), ctx);
--- a/third_party/libgcrypt/random/rndjent.c
+++ b/third_party/libgcrypt/random/rndjent.c
@@ -1,11 +1,11 @@
 /* rndjent.c  - Driver for the jitterentropy module.
  * Copyright (C) 2017 g10 Code GmbH
- * Copyright (C) 2017 Bundesamt fr Sicherheit in der Informationstechnik
+ * Copyright (C) 2017 Bundesamt für Sicherheit in der Informationstechnik
  * Copyright (C) 2013 Stephan Mueller <smueller@chronox.de>
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
  * 1. Redistributions of source code must retain the above copyright
  *    notice, and the entire permission notice in its entirety,
  *    including the disclaimer of warranties.
old mode 100644
new mode 100755
--- a/third_party/libgcrypt/tests/bench-slope.c
+++ b/third_party/libgcrypt/tests/bench-slope.c
@@ -171,25 +171,25 @@ get_nsec_time (struct nsec_time *t)
 }
 
 static double
 get_time_nsec_diff (struct nsec_time *start, struct nsec_time *end)
 {
   double nsecs;
 
   nsecs = end->tv.tv_sec - start->tv.tv_sec;
-  nsecs *= 1000000;		/* sec => sec */
+  nsecs *= 1000000;		/* sec => µsec */
 
   /* This way we don't have to care if tv_usec unsigned or signed. */
   if (end->tv.tv_usec >= start->tv.tv_usec)
     nsecs += end->tv.tv_usec - start->tv.tv_usec;
   else
     nsecs -= start->tv.tv_usec - end->tv.tv_usec;
 
-  nsecs *= 1000;		/* sec => nsec */
+  nsecs *= 1000;		/* µsec => nsec */
 
   return nsecs;
 }
 #else
 #define NO_GET_NSEC_TIME 1
 #endif
 
 
old mode 100644
new mode 100755
--- a/third_party/libgcrypt/tests/cavs_driver.pl
+++ b/third_party/libgcrypt/tests/cavs_driver.pl
@@ -1,14 +1,14 @@
 #!/usr/bin/env perl
 #
 # $Id: cavs_driver.pl 1497 2009-01-22 14:01:29Z smueller $
 #
 # CAVS test driver (based on the OpenSSL driver)
-# Written by: Stephan Mller <sm@atsec.com>
+# Written by: Stephan Müller <sm@atsec.com>
 # Copyright (c) atsec information security corporation
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
 # in the Software without restriction, including without limitation the rights
 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 # copies of the Software, and to permit persons to whom the Software is
 # furnished to do so, subject to the following conditions:
old mode 100644
new mode 100755
old mode 100644
new mode 100755
--- a/third_party/libgcrypt/tests/t-kdf.c
+++ b/third_party/libgcrypt/tests/t-kdf.c
@@ -152,17 +152,17 @@ check_openpgp (void)
        0 aes    md5 1024 abcdef
        0 aes    md5 1024 abcdefg
        0 aes    md5 1024 abcdefgh
        0 aes    md5 1024 abcdefghi
        0 aes    md5 1024 abcdefghijklmno
        0 aes    md5 1024 abcdefghijklmnop
        0 aes    md5 1024 abcdefghijklmnopq
        0 aes    md5 1024 Long_sentence_used_as_passphrase
-       0 aes    md5 1024 With_utf8_umlauts:
+       0 aes    md5 1024 With_utf8_umlauts:äüÖß
        0 aes    sha1 1024 a
        0 aes    sha1 1024 ab
        0 aes    sha1 1024 abc
        0 aes    sha1 1024 abcd
        0 aes    sha1 1024 abcde
        0 aes    sha1 1024 abcdef
        0 aes    sha1 1024 abcdefg
        0 aes    sha1 1024 abcdefgh
@@ -171,34 +171,34 @@ check_openpgp (void)
        0 aes    sha1 1024 abcdefghijklmnop
        0 aes    sha1 1024 abcdefghijklmnopq
        0 aes    sha1 1024 abcdefghijklmnopqr
        0 aes    sha1 1024 abcdefghijklmnopqrs
        0 aes    sha1 1024 abcdefghijklmnopqrst
        0 aes    sha1 1024 abcdefghijklmnopqrstu
        0 aes    sha1 1024 Long_sentence_used_as_passphrase
        0 aes256 sha1 1024 Long_sentence_used_as_passphrase
-       0 aes    sha1 1024 With_utf8_umlauts:
+       0 aes    sha1 1024 With_utf8_umlauts:äüÖß
        3 aes    sha1 1024 a
        3 aes    sha1 1024 ab
        3 aes    sha1 1024 abc
        3 aes    sha1 1024 abcd
        3 aes    sha1 1024 abcde
        3 aes    sha1 1024 abcdef
        3 aes    sha1 1024 abcdefg
        3 aes    sha1 1024 abcdefgh
        3 aes    sha1 1024 abcdefghi
        3 aes    sha1 1024 abcdefghijklmno
        3 aes    sha1 1024 abcdefghijklmnop
        3 aes    sha1 1024 abcdefghijklmnopq
        3 aes    sha1 1024 abcdefghijklmnopqr
        3 aes    sha1 1024 abcdefghijklmnopqrs
        3 aes    sha1 1024 abcdefghijklmnopqrst
        3 aes    sha1 1024 abcdefghijklmnopqrstu
-       3 aes    sha1 1024 With_utf8_umlauts:
+       3 aes    sha1 1024 With_utf8_umlauts:äüÖß
        3 aes    sha1 1024 Long_sentence_used_as_passphrase
        3 aes    sha1 10240 Long_sentence_used_as_passphrase
        3 aes    sha1 102400 Long_sentence_used_as_passphrase
        3 aes192 sha1 1024 a
        3 aes192 sha1 1024 abcdefg
        3 aes192 sha1 1024 abcdefghi
        3 aes192 sha1 1024 abcdefghi
        3 aes192 sha1 1024 Long_sentence_used_as_passphrase
--- a/third_party/libgcrypt/tests/t-sexp.c
+++ b/third_party/libgcrypt/tests/t-sexp.c
@@ -543,18 +543,18 @@ back_and_forth (void)
 "   #F7B0B535F8F8E22F4F3DA031224070303F82F9207D42952F1ACF21A4AB1C50304EBB25527992C7B265A9E9FF702826FB88759BDD55E4759E9FCA6C879538C9D043A9C60A326CB6681090BAA731289BD880A7D5774D9999F026E5E7963BFC8C0BDC9F061393CB734B4F259725C0A0A0B15BA39C39146EF6A1B3DC4DF30A22EBE09FD05AE6CB0C8C6532951A925F354F4E26A51964F5BBA50081690C421C8385C4074E9BAB9297D081B857756607EAE652415275A741C89E815558A50AC638EDC5F5030210B4395E3E1A40FF38DCCCB333A19EA88EFE7E4D51B54128C6DF27395646836679AC21B1B25C1DA6F0A7CE9F9BE078EFC7934FA9AE202CBB0AA06C20DFAF9A66FAB7E9073FBE96B9A7F25C3BA45EC3EECA65796AEE313BA148DE5314F30345B452B50B17C4D841A7F27397126E8C10BD0CE3B50A82C0425AAEE7798031671407B681F52916256F78CAF92A477AC27BCBE26DAFD1BCE386A853E2A036F8314BB2E8E5BB1F196434232EFB0288331C2AB16DBC5457CC295EB966CAC5CE73D5DA5D566E469F0EFA82F9A12B8693E0#)\n"
 "  )\n"
 " )\n", 0 },
     { "((sha1 #8B98CBF4A9823CA7# \"2097\") #3B6FC9#)", 0 },
     { "((4:sha18:\x8B\x98\xCB\xF4\xA9\x82\x3C\xA7""4:2097)3:\x3B\x6F\xC9)", 0},
     { "((4:sha18:\x8B\x98\xCB\x22\xA9\x82\x3C\xA7""4:2097)3:\x3B\x6F\xC9)", 0},
     { "((sha1 #64652267686970C9# \"2097\") #3B6FC9#)", 0 },
     { "((4:sha18:\x64\x65\x22\x67\x68\xc3\xa4\x71""4:2097)3:\x3B\x6F\xC9)", 0},
-    { "((sha1 \"defghq\" \"2097\") #3B6FC9#)", 0 },
-    { "((sha1 \"de\\\"ghq\" \"2097\") #3B6FC9#)", 0 },
+    { "((sha1 \"defghäq\" \"2097\") #3B6FC9#)", 0 },
+    { "((sha1 \"de\\\"ghäq\" \"2097\") #3B6FC9#)", 0 },
     { NULL, 0 }
   };
   int idx;
 
   for (idx=0; tests[idx].buf; idx++)
     back_and_forth_one (idx, tests[idx].buf, tests[idx].len);
 }