[git] GnuPG - branch, STABLE-BRANCH-1-4, updated. gnupg-1.4.20-28-g06db04b

by Werner Koch cvs at cvs.gnupg.org
Wed Aug 17 15:34:32 CEST 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The GNU Privacy Guard".

The branch, STABLE-BRANCH-1-4 has been updated
       via  06db04ba666c130e5068d29cf771f73040646912 (commit)
       via  47531220e57bf5093dcf2312884124f0a79e15db (commit)
       via  5e1843fc47457a9a0525ed7d3e55961d342ef1e2 (commit)
       via  03376ed88acc91967ca276301bd2ffbbc135166f (commit)
       via  56792b1191a31c8409d7dcdb33b87a92f0e65ab2 (commit)
       via  96fe65bc46243d9c40da74e9e3884fcc321b92f2 (commit)
       via  851a9de23ac0977c66f5ef56f08d8ca5eae92930 (commit)
       via  c6dbfe89903d0c8191cf50ecf1abb3c8458b427a (commit)
       via  e23eec8c9a602eee0a09851a54db0f5d611f125c (commit)
      from  61539efc2bc4ba9a9faceaced12660d588c1be7a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 06db04ba666c130e5068d29cf771f73040646912
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Aug 17 15:29:13 2016 +0200

    Post release updates
    
    --

diff --git a/NEWS b/NEWS
index 9b84c17..26f70cf 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+Noteworthy changes in version 1.4.22 (unreleased)
+-------------------------------------------------
+
+
 Noteworthy changes in version 1.4.21 (2016-08-17)
 -------------------------------------------------
 
diff --git a/configure.ac b/configure.ac
index 8133537..f03859c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ min_automake_version="1.14"
 # (git tag -s gnupg-1.n.m) and run "./autogen.sh --force".  Please
 # bump the version number immediately *after* the release and do
 # another commit and push so that the git magic is able to work.
-m4_define([mym4_version], [1.4.21])
+m4_define([mym4_version], [1.4.22])
 
 # Below is m4 magic to extract and compute the git revision number,
 # the decimalized short revision number, a beta version string and a

commit 47531220e57bf5093dcf2312884124f0a79e15db
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Aug 17 15:07:57 2016 +0200

    Release 1.4.21

diff --git a/NEWS b/NEWS
index 7de62d9..9b84c17 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,15 @@
-Noteworthy changes in version 1.4.21 (unreleased)
+Noteworthy changes in version 1.4.21 (2016-08-17)
 -------------------------------------------------
 
+ * 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 Dörre and
+   Vladimir Klebanov, KIT.
+
+ * Tweak default options for gpgv.
+
+ * By default do not anymore emit the GnuPG version with --armor.
+
 
 Noteworthy changes in version 1.4.20 (2015-12-20)
 -------------------------------------------------
diff --git a/README b/README
index 1a331fb..55b2f03 100644
--- a/README
+++ b/README
@@ -307,6 +307,12 @@
     card.  To see the fingerprints of the secondary keys, you can
     give the command twice; but this is normally not needed.
 
+    NEVER use the keyid to verify a key - always use the complete
+    fingerprint.  The keyid is just a convenience handle to identify a
+    key by a short semi-unique name which is trivial to spoof.  You
+    may want to put the line "keyid-format long" into your gpg.conf to
+    tell gpg to print the long keyid (which is still spoof-able).
+
     If you don't know the owner of the public key you are in trouble.
     Suppose however that friend of yours knows someone who knows someone
     who has met the owner of the public key at some computer conference.
@@ -403,28 +409,28 @@
 
     There are several ways to specify a user ID, here are some examples.
 
-    * Only by the short keyid (prepend a zero if it begins with A..F):
+    * By a fingerprint:
 
-	"234567C4"
-	"0F34E556E"
-	"01347A56A"
-	"0xAB123456
+	"1234343434343434C434343434343434"
+	"123434343434343C3434343434343734349A3434"
+	"0E12343434343434343434EAB3484343434343434"
+
+      The first one is a short fingerprint for PGP 2.x style keys.
+      The others are long fingerprints for OpenPGP keys.
 
-    * By a complete keyid:
+    * By a complete keyid (prepend a zero if it begins with A..F):
 
 	"234AABBCC34567C4"
 	"0F323456784E56EAB"
 	"01AB3FED1347A5612"
 	"0x234AABBCC34567C4"
 
-    * By a fingerprint:
-
-	"1234343434343434C434343434343434"
-	"123434343434343C3434343434343734349A3434"
-	"0E12343434343434343434EAB3484343434343434"
+    * By the short keyid:
 
-      The first one is a short fingerprint for PGP 2.x style keys.
-      The others are long fingerprints for OpenPGP keys.
+	"234567C4"
+	"0F34E556E"
+	"01347A56A"
+	"0xAB123456
 
     * By an exact string:
 

commit 5e1843fc47457a9a0525ed7d3e55961d342ef1e2
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Aug 17 14:50:35 2016 +0200

    gpg: Add dummy option --with-subkey-fingerprint.
    
    * g10/gpg.c (opts): Add dummy option.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/g10/gpg.c b/g10/gpg.c
index 236ea1e..416d44e 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -742,6 +742,11 @@ static ARGPARSE_OPTS opts[] = {
     { oNoRequireCrossCert, "no-require-cross-certification", 0, "@"},
     { oAutoKeyLocate, "auto-key-locate", 2, "@"},
     { oNoAutoKeyLocate, "no-auto-key-locate", 0, "@"},
+
+    /* Options from later gpg versions which we ignore.  */
+    { oNoop,  "with-subkey-fingerprint", 0, "@" },
+
+
     {0,NULL,0,NULL}
 };
 

commit 03376ed88acc91967ca276301bd2ffbbc135166f
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Aug 17 14:41:16 2016 +0200

    po: Auto update
    
    --

diff --git a/po/be.po b/po/be.po
index 2d20e7a..fdaa5e1 100644
--- a/po/be.po
+++ b/po/be.po
@@ -4410,14 +4410,14 @@ msgstr ""
 msgid "trustdb transaction too large\n"
 msgstr ""
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "немагчыма адкрыць %s: %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "немагчыма адкрыць %s: %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr ""
diff --git a/po/ca.po b/po/ca.po
index a8ae1c6..13d4132 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -4948,16 +4948,16 @@ msgstr ""
 msgid "trustdb transaction too large\n"
 msgstr "la transacció de la base de dades de confiança és massa gran\n"
 
+#, c-format
+msgid "%s: directory does not exist!\n"
+msgstr "%s: el directori no existeix!\n"
+
 # No em passe! ;)  ivb
 #, fuzzy, c-format
 msgid "can't access `%s': %s\n"
 msgstr "no s'ha pogut tancar «%s»: %s\n"
 
 #, c-format
-msgid "%s: directory does not exist!\n"
-msgstr "%s: el directori no existeix!\n"
-
-#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: no s'ha pogut crear un registre de versió: %s"
 
diff --git a/po/cs.po b/po/cs.po
index 5e38930..d4d04d6 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -4642,14 +4642,14 @@ msgid "trustdb transaction too large\n"
 msgstr "transakce s databází důvěry je příliš dlouhá\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "nemohu otevřít `%s': %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: adresář neexistuje!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "nemohu otevřít `%s': %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: nepodařilo se vytvořit záznam verze: %s"
 
diff --git a/po/da.po b/po/da.po
index 33fd087..8f3af6f 100644
--- a/po/da.po
+++ b/po/da.po
@@ -4654,14 +4654,14 @@ msgid "trustdb transaction too large\n"
 msgstr "transaktion for trustdb er for stor\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "kan ikke tilgå »%s«: %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: mappe findes ikke!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "kan ikke tilgå »%s«: %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: kunne ikke oprette versionspost: %s"
 
diff --git a/po/de.po b/po/de.po
index 760627e..a745205 100644
--- a/po/de.po
+++ b/po/de.po
@@ -4764,14 +4764,14 @@ msgid "trustdb transaction too large\n"
 msgstr "trustdb Transaktion zu groß\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "kann aus `%s' nicht zugreifen: %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: Verzeichnis existiert nicht!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "kann aus `%s' nicht zugreifen: %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: Fehler beim Erzeugen des Versionsatzes: %s"
 
diff --git a/po/el.po b/po/el.po
index 078e132..a6a9a46 100644
--- a/po/el.po
+++ b/po/el.po
@@ -4841,14 +4841,14 @@ msgstr "trustdb rec %lu: 
 msgid "trustdb transaction too large\n"
 msgstr "ðïëý ìåãÜëç óõíáëëáãÞ trustdb\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "áäõíáìßá êëåéóßìáôïò ôïõ `%s': %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: ï öÜêåëïò äåí õðÜñ÷åé!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "áäõíáìßá êëåéóßìáôïò ôïõ `%s': %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: áðïôõ÷ßá äçìéïõñãßáò ìéáò åããñáöÞò Ýêäïóçò: %s"
diff --git a/po/eo.po b/po/eo.po
index 9f4dcc4..5ab4beb 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -4780,14 +4780,14 @@ msgstr "fido-datenaro loko %lu: skribo malsukcesis (n=%d): %s\n"
 msgid "trustdb transaction too large\n"
 msgstr "fido-datenaro-transakcio tro granda\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "ne povas fermi '%s': %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: dosierujo ne ekzistas!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "ne povas fermi '%s': %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: malsukcesis krei versiregistron: %s"
diff --git a/po/es.po b/po/es.po
index 9aa6700..ba65dd1 100644
--- a/po/es.po
+++ b/po/es.po
@@ -4692,14 +4692,14 @@ msgid "trustdb transaction too large\n"
 msgstr "transacción en la base de datos de confianza demasiado grande\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "no se puede acceder a `%s': %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: ¡el directorio no existe!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "no se puede acceder a `%s': %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: fallo al crear el registro de versión: %s"
 
diff --git a/po/et.po b/po/et.po
index 072f5ff..a42bcb8 100644
--- a/po/et.po
+++ b/po/et.po
@@ -4753,14 +4753,14 @@ msgstr "trustdb rec %lu: write failed (n=%d): %s\n"
 msgid "trustdb transaction too large\n"
 msgstr "trustdb transaktsioon on liiga suur\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "`%s' ei õnnestu sulgeda: %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: kataloogi ei ole!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "`%s' ei õnnestu sulgeda: %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: versioonikirje loomine ei õnnestu: %s"
diff --git a/po/fi.po b/po/fi.po
index e5b473e..203bedb 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -4827,14 +4827,14 @@ msgstr "trustdb rec %lu: kirjoittaminen epäonnistuin (n=%d): %s\n"
 msgid "trustdb transaction too large\n"
 msgstr "trustdb-tapahtuma on liian suuri\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "tiedostoa \"%s\" ei voi sulkea: %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: hakemistoa ei ole olemassa!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "tiedostoa \"%s\" ei voi sulkea: %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: versiotietueen luonti epäonnistui: %s"
diff --git a/po/fr.po b/po/fr.po
index b1b9dbf..a664e59 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -4775,14 +4775,14 @@ msgid "trustdb transaction too large\n"
 msgstr "transaction de base de confiance trop grande\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "impossible d'accéder à « %s » : %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s : le répertoire n'existe pas.\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "impossible d'accéder à « %s » : %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s : impossible de créer un enregistrement de version : %s"
 
diff --git a/po/gl.po b/po/gl.po
index 806d934..58a680c 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -4820,14 +4820,14 @@ msgstr ""
 msgid "trustdb transaction too large\n"
 msgstr "transacción da base de datos de confianza demasiado grande\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "non se pode pechar `%s': %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: ¡o directorio non existe!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "non se pode pechar `%s': %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: non se puido crea-lo rexistro de versión: %s"
diff --git a/po/hu.po b/po/hu.po
index 6346267..20c6c8b 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -4794,14 +4794,14 @@ msgstr "Bizalmi adatb
 msgid "trustdb transaction too large\n"
 msgstr "Bizalmi adatbázis tranzakciója túl nagy.\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "Nem tudom bezárni a(z) \"%s\" állományt: %s.\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: Könyvtár nem létezik!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "Nem tudom bezárni a(z) \"%s\" állományt: %s.\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: Nem sikerült verziórekordot létrehoznom: %s"
diff --git a/po/id.po b/po/id.po
index 2c3691d..b0022c0 100644
--- a/po/id.po
+++ b/po/id.po
@@ -4794,14 +4794,14 @@ msgstr "trustdb rec %lu: write failed (n=%d): %s\n"
 msgid "trustdb transaction too large\n"
 msgstr "transaksi trustdb terlalu besar\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "tidak dapat menutup `%s': %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: direktori tidak ada!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "tidak dapat menutup `%s': %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: gagal membuat catatan versi: %s"
diff --git a/po/it.po b/po/it.po
index fdeed8f..1108836 100644
--- a/po/it.po
+++ b/po/it.po
@@ -4712,14 +4712,14 @@ msgid "trustdb transaction too large\n"
 msgstr "transazione del trustdb troppo grande\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "impossibile accedere a \"%s\": %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: la directory non esiste.\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "impossibile accedere a \"%s\": %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: creazione del record della versione non riuscita: %s"
 
diff --git a/po/ja.po b/po/ja.po
index fc36029..76383a3 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -3717,7 +3717,8 @@ msgstr "未知の"
 
 #, c-format
 msgid "WARNING: not a detached signature; file '%s' was NOT verified!\n"
-msgstr "*警告*: 分遣署名ではありません。ファイル「%s」は検証され*ませんでした*!\n"
+msgstr ""
+"*警告*: 分遣署名ではありません。ファイル「%s」は検証され*ませんでした*!\n"
 
 #, c-format
 msgid "Can't check signature: %s\n"
@@ -4531,14 +4532,14 @@ msgid "trustdb transaction too large\n"
 msgstr "信用データベースのトランザクションが大きすぎます\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "「%s」にアクセスできません: %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: ディレクトリがありません!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "「%s」にアクセスできません: %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: バージョン・レコードの作成に失敗しました: %s"
 
diff --git a/po/nb.po b/po/nb.po
index 81fbffe..eafef85 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -4503,14 +4503,14 @@ msgid "trustdb transaction too large\n"
 msgstr ""
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "kan ikke aksere «%s»: %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr ""
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "kan ikke aksere «%s»: %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr ""
 
diff --git a/po/nl.po b/po/nl.po
index 70f0953..b24ce55 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -4843,14 +4843,14 @@ msgid "trustdb transaction too large\n"
 msgstr "betrouwbaarheidsdatabank (trustdb): transactie is te groot\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "krijg geen toegang tot `%s': %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: map bestaat niet!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "krijg geen toegang tot `%s': %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: het registreren van de versie is mislukt: %s"
 
diff --git a/po/pl.po b/po/pl.po
index a77c979..62531c6 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -4663,14 +4663,14 @@ msgid "trustdb transaction too large\n"
 msgstr "zbyt duże zlecenie dla bazy zaufania\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "nie ma dostępu do ,,%s'': %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: katalog nie istnieje!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "nie ma dostępu do ,,%s'': %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: stworzenie zapisu o wersji nie powiodło się: %s"
 
diff --git a/po/pt.po b/po/pt.po
index 480eff3..1cde13d 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -4789,14 +4789,14 @@ msgstr "base de dados de confian
 msgid "trustdb transaction too large\n"
 msgstr "transação de base de dados de confiança muito grande\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "impossível fechar `%s': %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: diretoria inexistente!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "impossível fechar `%s': %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: falha ao criar registo de versão: %s"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index c9a4cdb..c42a774 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -4740,14 +4740,14 @@ msgstr "banco de dados de confiabilidade rec %lu: escrita falhou (n=%d): %s\n"
 msgid "trustdb transaction too large\n"
 msgstr "transação de banco de dados de confiabilidade muito grande\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "impossível abrir `%s': %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: diretório inexistente!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "impossível abrir `%s': %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: falha ao criar registro de versão: %s"
diff --git a/po/ro.po b/po/ro.po
index 68fae3f..9e02f26 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -4689,14 +4689,14 @@ msgid "trustdb transaction too large\n"
 msgstr "tranzacția trustdb prea mare\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "nu pot accesa `%s': %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: directorul nu există!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "nu pot accesa `%s': %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: am eșuat să creez înregistrare versiune: %s"
 
diff --git a/po/ru.po b/po/ru.po
index 23c092d..1394d98 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -4628,14 +4628,14 @@ msgid "trustdb transaction too large\n"
 msgstr "слишком длинная транзакция таблицы доверия\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "нет доступа к `%s': %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: каталог не существует!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "нет доступа к `%s': %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: сбой создания записи о версии: %s"
 
diff --git a/po/sk.po b/po/sk.po
index cd8d96c..7820c9c 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -4802,14 +4802,14 @@ msgstr "z
 msgid "trustdb transaction too large\n"
 msgstr "transakcia s databázou dôvery je príli¹ dlhá\n"
 
-#, fuzzy, c-format
-msgid "can't access `%s': %s\n"
-msgstr "nemô¾em zavrie» `%s': %s\n"
-
 #, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: adresár neexistuje!\n"
 
+#, fuzzy, c-format
+msgid "can't access `%s': %s\n"
+msgstr "nemô¾em zavrie» `%s': %s\n"
+
 #, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: nepodarilo sa vytvori» záznam verzie: %s"
diff --git a/po/sv.po b/po/sv.po
index 82d73f6..4945b76 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -4767,14 +4767,14 @@ msgid "trustdb transaction too large\n"
 msgstr "tillitsdatabastransaktion för stor\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "kan inte komma åt \"%s\": %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: katalogen finns inte!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "kan inte komma åt \"%s\": %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: misslyckades med att skapa versionspost: %s"
 
diff --git a/po/tr.po b/po/tr.po
index b46a9b1..f162a53 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -4688,14 +4688,14 @@ msgid "trustdb transaction too large\n"
 msgstr "güvence veritabanı işlemi çok uzun\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "'%s' eriÅŸilemiyor: %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: dizin yok!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "'%s' eriÅŸilemiyor: %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: sürüm kaydı oluşturmada başarısız: %s"
 
diff --git a/po/uk.po b/po/uk.po
index 4bfc8f3..de46213 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -4719,14 +4719,14 @@ msgid "trustdb transaction too large\n"
 msgstr "занадто велика операція trustdb\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "немає доступу до «%s»: %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: каталогу не існує!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "немає доступу до «%s»: %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: не вдалося створити запис щодо версії: %s"
 
diff --git a/po/zh_CN.po b/po/zh_CN.po
index de0167c..e6d5f78 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -4514,14 +4514,14 @@ msgid "trustdb transaction too large\n"
 msgstr "信任度数据库处理量过大\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "无法存取‘%s’:%s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s:目录不存在!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "无法存取‘%s’:%s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s:建立版本记录失败:%s"
 
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 6d600db..dc61180 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -4526,14 +4526,14 @@ msgid "trustdb transaction too large\n"
 msgstr "信任資料庫更動量過大\n"
 
 #, c-format
-msgid "can't access `%s': %s\n"
-msgstr "無法存取 `%s': %s\n"
-
-#, c-format
 msgid "%s: directory does not exist!\n"
 msgstr "%s: 目錄不存在!\n"
 
 #, c-format
+msgid "can't access `%s': %s\n"
+msgstr "無法存取 `%s': %s\n"
+
+#, c-format
 msgid "%s: failed to create version record: %s"
 msgstr "%s: 建立版本記錄失敗: %s"
 

commit 56792b1191a31c8409d7dcdb33b87a92f0e65ab2
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Aug 17 14:39:26 2016 +0200

    build: Create a swdb file during "make distcheck".
    
    * Makefile.am (distcheck-hook): New.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/Makefile.am b/Makefile.am
index 1c6311b..44adf6a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -77,6 +77,19 @@ dist-hook: gen-ChangeLog
 	    > $(distdir)/gnupg.spec
 	echo "$(VERSION)" > $(distdir)/VERSION
 
+distcheck-hook:
+	set -e; ( \
+	pref="#+macro: gnupg1_" ;\
+	reldate="$$(date -u +%Y-%m-%d)" ;\
+        echo "$${pref}ver  $(PACKAGE_VERSION)"  ;\
+        echo "$${pref}date $${reldate}" ;\
+        list='$(DIST_ARCHIVES)'; for i in $$list; do \
+	  case "$$i" in *.tar.bz2) \
+            echo "$${pref}size $$(wc -c <$$i|awk '{print int($$1/1024)}')k" ;\
+	    echo "$${pref}sha1 $$(sha1sum <$$i|cut -d' ' -f1)" ;\
+	    echo "$${pref}sha2 $$(sha256sum <$$i|cut -d' ' -f1)" ;;\
+	  esac;\
+	done ) | tee $(distdir).swdb
 
 gen_start_date = 2011-12-01T06:00:00
 .PHONY: gen-ChangeLog

commit 96fe65bc46243d9c40da74e9e3884fcc321b92f2
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Aug 17 14:36:25 2016 +0200

    build: Update config.{guess,sub} to {2016-05-15,2016-06-20}.
    
    --

diff --git a/scripts/config.guess b/scripts/config.guess
index 1f5c50c..c4bd827 100755
--- a/scripts/config.guess
+++ b/scripts/config.guess
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2016 Free Software Foundation, Inc.
 
-timestamp='2014-03-23'
+timestamp='2016-05-15'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -24,12 +24,12 @@ timestamp='2014-03-23'
 # program.  This Exception is an additional permission under section 7
 # of the GNU General Public License, version 3 ("GPLv3").
 #
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 #
-# Please send patches with a ChangeLog entry to config-patches at gnu.org.
+# Please send patches to <config-patches at gnu.org>.
 
 
 me=`echo "$0" | sed -e 's,.*/,,'`
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2016 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -168,19 +168,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# Note: NetBSD doesn't particularly care about the vendor
 	# portion of the name.  We always set it to "unknown".
 	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+	    /sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || \
+	    echo unknown)`
 	case "${UNAME_MACHINE_ARCH}" in
 	    armeb) machine=armeb-unknown ;;
 	    arm*) machine=arm-unknown ;;
 	    sh3el) machine=shl-unknown ;;
 	    sh3eb) machine=sh-unknown ;;
 	    sh5el) machine=sh5le-unknown ;;
+	    earmv*)
+		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
+		machine=${arch}${endian}-unknown
+		;;
 	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
 	esac
 	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
+	# to ELF recently (or will in the future) and ABI.
 	case "${UNAME_MACHINE_ARCH}" in
+	    earm*)
+		os=netbsdelf
+		;;
 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
 		eval $set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -197,6 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		os=netbsd
 		;;
 	esac
+	# Determine ABI tags.
+	case "${UNAME_MACHINE_ARCH}" in
+	    earm*)
+		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+		;;
+	esac
 	# The OS release
 	# Debian GNU/NetBSD machines have a different userland, and
 	# thus, need a distinct triplet. However, they do not need
@@ -207,13 +224,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		release='-gnu'
 		;;
 	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
 		;;
 	esac
 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
 	# contains redundant information, the shorter form:
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
+	echo "${machine}-${os}${release}${abi}"
 	exit ;;
     *:Bitrig:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -223,6 +240,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
 	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
 	exit ;;
+    *:LibertyBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
+	exit ;;
     *:ekkoBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
 	exit ;;
@@ -235,6 +256,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:MirBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
 	exit ;;
+    *:Sortix:*:*)
+	echo ${UNAME_MACHINE}-unknown-sortix
+	exit ;;
     alpha:OSF1:*:*)
 	case $UNAME_RELEASE in
 	*4.0)
@@ -251,42 +275,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
 	case "$ALPHA_CPU_TYPE" in
 	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
+		UNAME_MACHINE=alpha ;;
 	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
+		UNAME_MACHINE=alpha ;;
 	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
+		UNAME_MACHINE=alpha ;;
 	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
+		UNAME_MACHINE=alphaev5 ;;
 	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
+		UNAME_MACHINE=alphaev56 ;;
 	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
+		UNAME_MACHINE=alphapca56 ;;
 	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
+		UNAME_MACHINE=alphapca57 ;;
 	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
+		UNAME_MACHINE=alphaev6 ;;
 	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
+		UNAME_MACHINE=alphaev67 ;;
 	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
+		UNAME_MACHINE=alphaev68 ;;
 	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
+		UNAME_MACHINE=alphaev68 ;;
 	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
+		UNAME_MACHINE=alphaev68 ;;
 	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
+		UNAME_MACHINE=alphaev69 ;;
 	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
+		UNAME_MACHINE=alphaev7 ;;
 	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
+		UNAME_MACHINE=alphaev79 ;;
 	esac
 	# A Pn.n version is a patched version.
 	# A Vn.n version is a released version.
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
 	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
 	exitcode=$?
 	trap '' 0
@@ -359,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
 	eval $set_cc_for_build
-	SUN_ARCH="i386"
+	SUN_ARCH=i386
 	# If there is a compiler, see if it is configured for 64-bit objects.
 	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
 	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
 	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		grep IS_64BIT_ARCH >/dev/null
 	    then
-		SUN_ARCH="x86_64"
+		SUN_ARCH=x86_64
 	    fi
 	fi
 	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@@ -393,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	exit ;;
     sun*:*:4.2BSD:*)
 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
 	case "`/bin/arch`" in
 	    sun3)
 		echo m68k-sun-sunos${UNAME_RELEASE}
@@ -579,8 +603,9 @@ EOF
 	else
 		IBM_ARCH=powerpc
 	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
+	if [ -x /usr/bin/lslpp ] ; then
+		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
 	else
 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
 	fi
@@ -617,13 +642,13 @@ EOF
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
 		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
 		    case "${sc_cpu_version}" in
-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
 		      532)                      # CPU_PA_RISC2_0
 			case "${sc_kernel_bits}" in
-			  32) HP_ARCH="hppa2.0n" ;;
-			  64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+			  32) HP_ARCH=hppa2.0n ;;
+			  64) HP_ARCH=hppa2.0w ;;
+			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
 			esac ;;
 		    esac
 		fi
@@ -662,11 +687,11 @@ EOF
 		    exit (0);
 		}
 EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
 		fi ;;
 	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
+	if [ ${HP_ARCH} = hppa2.0w ]
 	then
 	    eval $set_cc_for_build
 
@@ -679,12 +704,12 @@ EOF
 	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
 	    # => hppa64-hp-hpux11.23
 
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+	    if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
 		grep -q __LP64__
 	    then
-		HP_ARCH="hppa2.0w"
+		HP_ARCH=hppa2.0w
 	    else
-		HP_ARCH="hppa64"
+		HP_ARCH=hppa64
 	    fi
 	fi
 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
@@ -789,14 +814,14 @@ EOF
 	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
 	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
 	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
 	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@@ -878,7 +903,7 @@ EOF
 	exit ;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
 	exit ;;
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
@@ -901,7 +926,7 @@ EOF
 	  EV68*) UNAME_MACHINE=alphaev68 ;;
 	esac
 	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     arc:Linux:*:* | arceb:Linux:*:*)
@@ -932,6 +957,9 @@ EOF
     crisv32:Linux:*:*)
 	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
 	exit ;;
+    e2k:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     frv:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
@@ -944,6 +972,9 @@ EOF
     ia64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
+    k1om:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     m32r*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
@@ -1020,7 +1051,7 @@ EOF
 	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
 	exit ;;
     x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
 	exit ;;
     xtensa*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
@@ -1099,7 +1130,7 @@ EOF
 	# uname -m prints for DJGPP always 'pc', but it prints nothing about
 	# the processor, so we play safe by assuming i586.
 	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
+	# prints for the "djgpp" host, or else GDB configure will decide that
 	# this is a cross-build.
 	echo i586-pc-msdosdjgpp
 	exit ;;
@@ -1248,6 +1279,9 @@ EOF
     SX-8R:SUPER-UX:*:*)
 	echo sx8r-nec-superux${UNAME_RELEASE}
 	exit ;;
+    SX-ACE:SUPER-UX:*:*)
+	echo sxace-nec-superux${UNAME_RELEASE}
+	exit ;;
     Power*:Rhapsody:*:*)
 	echo powerpc-apple-rhapsody${UNAME_RELEASE}
 	exit ;;
@@ -1261,9 +1295,9 @@ EOF
 	    UNAME_PROCESSOR=powerpc
 	fi
 	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
 		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		    (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		    grep IS_64BIT_ARCH >/dev/null
 		then
 		    case $UNAME_PROCESSOR in
@@ -1285,7 +1319,7 @@ EOF
 	exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
 	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
+	if test "$UNAME_PROCESSOR" = x86; then
 		UNAME_PROCESSOR=i386
 		UNAME_MACHINE=pc
 	fi
@@ -1316,7 +1350,7 @@ EOF
 	# "uname -m" is not consistent, so use $cputype instead. 386
 	# is converted to i386 for consistency with other x86
 	# operating systems.
-	if test "$cputype" = "386"; then
+	if test "$cputype" = 386; then
 	    UNAME_MACHINE=i386
 	else
 	    UNAME_MACHINE="$cputype"
@@ -1358,7 +1392,7 @@ EOF
 	echo i386-pc-xenix
 	exit ;;
     i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
 	exit ;;
     i*86:rdos:*:*)
 	echo ${UNAME_MACHINE}-pc-rdos
@@ -1369,23 +1403,25 @@ EOF
     x86_64:VMkernel:*:*)
 	echo ${UNAME_MACHINE}-unknown-esx
 	exit ;;
+    amd64:Isilon\ OneFS:*:*)
+	echo x86_64-unknown-onefs
+	exit ;;
 esac
 
 cat >&2 <<EOF
 $0: unable to guess system type
 
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite
+config.guess and config.sub with the latest versions from:
 
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches at gnu.org> in order to provide the needed
-information to handle your system.
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches at gnu.org to
+provide the necessary information to handle your system.
 
 config.guess timestamp = $timestamp
 
diff --git a/scripts/config.sub b/scripts/config.sub
index bba4efb..9feb73b 100755
--- a/scripts/config.sub
+++ b/scripts/config.sub
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2016 Free Software Foundation, Inc.
 
-timestamp='2014-09-11'
+timestamp='2016-06-20'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@ timestamp='2014-09-11'
 # of the GNU General Public License, version 3 ("GPLv3").
 
 
-# Please send patches with a ChangeLog entry to config-patches at gnu.org.
+# Please send patches to <config-patches at gnu.org>.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
@@ -33,7 +33,7 @@ timestamp='2014-09-11'
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -53,8 +53,7 @@ timestamp='2014-09-11'
 me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
 
 Canonicalize a configuration name.
 
@@ -68,7 +67,7 @@ Report bugs and patches to <config-patches at gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2016 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -117,7 +116,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
@@ -255,12 +254,13 @@ case $basic_machine in
 	| arc | arceb \
 	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
 	| avr | avr32 \
+	| ba \
 	| be32 | be64 \
 	| bfin \
 	| c4x | c8051 | clipper \
 	| d10v | d30v | dlx | dsp16xx \
-	| epiphany \
-	| fido | fr30 | frv \
+	| e2k | epiphany \
+	| fido | fr30 | frv | ft32 \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| hexagon \
 	| i370 | i860 | i960 | ia64 \
@@ -305,7 +305,7 @@ case $basic_machine in
 	| riscv32 | riscv64 \
 	| rl78 | rx \
 	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -313,6 +313,7 @@ case $basic_machine in
 	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
 	| ubicom32 \
 	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+	| visium \
 	| we32k \
 	| x86 | xc16x | xstormy16 | xtensa \
 	| z8k | z80)
@@ -327,6 +328,9 @@ case $basic_machine in
 	c6x)
 		basic_machine=tic6x-unknown
 		;;
+	leon|leon[3-9])
+		basic_machine=sparc-$basic_machine
+		;;
 	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
 		basic_machine=$basic_machine-unknown
 		os=-none
@@ -372,12 +376,13 @@ case $basic_machine in
 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
+	| ba-* \
 	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
 	| c[123]* | c30-* | [cjt]90-* | c4x-* \
 	| c8051-* | clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
+	| e2k-* | elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
@@ -424,12 +429,13 @@ case $basic_machine in
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
 	| pyramid-* \
+	| riscv32-* | riscv64-* \
 	| rl78-* | romp-* | rs6000-* | rx-* \
 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
 	| tahoe-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
 	| tile*-* \
@@ -437,6 +443,7 @@ case $basic_machine in
 	| ubicom32-* \
 	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
 	| vax-* \
+	| visium-* \
 	| we32k-* \
 	| x86-* | x86_64-* | xc16x-* | xps100-* \
 	| xstormy16-* | xtensa*-* \
@@ -513,6 +520,9 @@ case $basic_machine in
 		basic_machine=i386-pc
 		os=-aros
 		;;
+	asmjs)
+		basic_machine=asmjs-unknown
+		;;
 	aux)
 		basic_machine=m68k-apple
 		os=-aux
@@ -633,6 +643,14 @@ case $basic_machine in
 		basic_machine=m68k-bull
 		os=-sysv3
 		;;
+	e500v[12])
+		basic_machine=powerpc-unknown
+		os=$os"spe"
+		;;
+	e500v[12]-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=$os"spe"
+		;;
 	ebmon29k)
 		basic_machine=a29k-amd
 		os=-ebmon
@@ -774,6 +792,9 @@ case $basic_machine in
 		basic_machine=m68k-isi
 		os=-sysv
 		;;
+	leon-*|leon[3-9]-*)
+		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+		;;
 	m68knommu)
 		basic_machine=m68k-unknown
 		os=-linux
@@ -1365,18 +1386,18 @@ case $os in
 	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
 	      | -sym* | -kopensolaris* | -plan9* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
+	      | -aos* | -aros* | -cloudabi* | -sortix* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -bitrig* | -openbsd* | -solidbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* | -cegcc* \
 	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
 	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
@@ -1385,7 +1406,8 @@ case $os in
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
+	      | -onefs* | -tirtos* | -phoenix*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1517,6 +1539,8 @@ case $os in
 		;;
 	-nacl*)
 		;;
+	-ios)
+		;;
 	-none)
 		;;
 	*)

commit 851a9de23ac0977c66f5ef56f08d8ca5eae92930
Author: Ineiev <ineiev at gnu.org>
Date:   Wed Aug 17 14:31:12 2016 +0200

    po: Update Russian translation

diff --git a/po/ru.po b/po/ru.po
index 15689a7..23c092d 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GnuPG 1.4.18\n"
 "Report-Msgid-Bugs-To: translations at gnupg.org\n"
-"PO-Revision-Date: 2015-06-25 17:16+0200\n"
+"PO-Revision-Date: 2015-12-21 17:16+0200\n"
 "Last-Translator: Ineiev <ineiev at gnu.org>\n"
 "Language-Team: Russian <gnupg-ru at gnupg.org>\n"
 "Language: ru\n"
@@ -263,7 +263,7 @@ msgstr "отпечаток на карте не совпадает с запро
 
 #, c-format
 msgid "card does not support digest algorithm %s\n"
-msgstr "карта не поддерживает хэш-функцию %s\n"
+msgstr "карта не поддерживает хеш-функцию %s\n"
 
 #, c-format
 msgid "signatures created so far: %lu\n"
@@ -540,10 +540,10 @@ msgid "unknown key protection algorithm\n"
 msgstr "неизвестный алгоритм защиты ключа\n"
 
 msgid "secret parts of key are not available\n"
-msgstr "закрытые части ключа недоступны\n"
+msgstr "секретные части ключа недоступны\n"
 
 msgid "secret key already stored on a card\n"
-msgstr "закрытый ключ уже хранится на карте\n"
+msgstr "секретный ключ уже хранится на карте\n"
 
 #, c-format
 msgid "error writing key to card: %s\n"
@@ -676,7 +676,7 @@ msgid "Delete this key from the keyring? (y/N) "
 msgstr "Удалить данный ключ из таблицы? (y/N) "
 
 msgid "This is a secret key! - really delete? (y/N) "
-msgstr "Это закрытый ключ! - все равно удалить? (y/N) "
+msgstr "Это секретный ключ! - все равно удалить? (y/N) "
 
 #, c-format
 msgid "deleting keyblock failed: %s\n"
@@ -687,7 +687,7 @@ msgstr "сведения о доверии владельцу сброшены\n
 
 #, c-format
 msgid "there is a secret key for public key \"%s\"!\n"
-msgstr "имеется закрытый ключ для открытого ключа \"%s\"!\n"
+msgstr "для открытого ключа \"%s\" есть секретный ключ!\n"
 
 msgid "use option \"--delete-secret-keys\" to delete it first.\n"
 msgstr "сначала удалите его командой \"--delete-secret-keys\".\n"
@@ -832,7 +832,7 @@ msgid "remove as much as possible from key during export"
 msgstr "удалить как можно больше из ключа при экспорте"
 
 msgid "exporting secret keys not allowed\n"
-msgstr "экспорт закрытых ключей не разрешен\n"
+msgstr "экспорт секретных ключей не разрешен\n"
 
 #, c-format
 msgid "key %s: not protected - skipped\n"
@@ -855,7 +855,7 @@ msgstr "сбой снятия защиты с ключа: %s\n"
 
 #, c-format
 msgid "WARNING: secret key %s does not have a simple SK checksum\n"
-msgstr "ВНИМАНИЕ: закрытый ключ %s не имеет простой контрольной суммы SK\n"
+msgstr "ВНИМАНИЕ: у секретного ключа %s нет простой контрольной суммы SK\n"
 
 msgid "WARNING: nothing exported\n"
 msgstr "ВНИМАНИЕ: нечего экспортировать\n"
@@ -901,7 +901,7 @@ msgid "list keys and fingerprints"
 msgstr "вывести список ключей и их отпечатков"
 
 msgid "list secret keys"
-msgstr "вывести список закрытых ключей"
+msgstr "вывести список секретных ключей"
 
 msgid "generate a new key pair"
 msgstr "создать новую пару ключей"
@@ -910,7 +910,7 @@ msgid "remove keys from the public keyring"
 msgstr "удалить ключи из таблицы открытых ключей"
 
 msgid "remove keys from the secret keyring"
-msgstr "удалить ключи из таблицы закрытых ключей"
+msgstr "удалить ключи из таблицы секретных ключей"
 
 msgid "sign a key"
 msgstr "подписать ключ"
@@ -955,7 +955,7 @@ msgid "update the trust database"
 msgstr "обновить таблицу доверия"
 
 msgid "|algo [files]|print message digests"
-msgstr "|algo [files]|вывести хэши файлов"
+msgstr "|algo [files]|вывести хеши файлов"
 
 msgid ""
 "@\n"
@@ -1304,13 +1304,13 @@ msgid "selected cipher algorithm is invalid\n"
 msgstr "выбран неверный алгоритм шифрования\n"
 
 msgid "selected digest algorithm is invalid\n"
-msgstr "выбрана неверная хэш-функция\n"
+msgstr "выбрана неверная хеш-функция\n"
 
 msgid "selected compression algorithm is invalid\n"
 msgstr "выбран неверный алгоритм сжатия\n"
 
 msgid "selected certification digest algorithm is invalid\n"
-msgstr "выбрана неверная хэш-функция для сертификации\n"
+msgstr "выбрана неверная хеш-функция для сертификации\n"
 
 msgid "completes-needed must be greater than 0\n"
 msgstr "completes-needed должен быть больше 0\n"
@@ -1340,7 +1340,7 @@ msgid "invalid personal cipher preferences\n"
 msgstr "недопустимые персональные предпочтения шифра\n"
 
 msgid "invalid personal digest preferences\n"
-msgstr "недопустимые персональные предпочтения хэш-функции\n"
+msgstr "недопустимые персональные предпочтения хеш-функции\n"
 
 msgid "invalid personal compress preferences\n"
 msgstr "недопустимые персональные предпочтения алгоритмов сжатия\n"
@@ -1355,7 +1355,7 @@ msgstr "Вы не можете использовать шифрование `%s
 
 #, c-format
 msgid "you may not use digest algorithm `%s' while in %s mode\n"
-msgstr "Вы не можете использовать хэш-функцию `%s' в режиме %s\n"
+msgstr "Вы не можете использовать хеш-функцию `%s' в режиме %s\n"
 
 #, c-format
 msgid "you may not use compression algorithm `%s' while in %s mode\n"
@@ -1461,7 +1461,7 @@ msgstr "ошибка преобразования в текстовый форм
 
 #, c-format
 msgid "invalid hash algorithm `%s'\n"
-msgstr "недопустимая хэш-функция `%s'\n"
+msgstr "недопустимая хеш-функция `%s'\n"
 
 msgid "[filename]"
 msgstr "[файл]"
@@ -1486,7 +1486,7 @@ msgstr "[ID пользователя не найден]"
 
 #, c-format
 msgid "key %s: secret key without public key - skipped\n"
-msgstr "ключ %s: закрытый ключ без открытого ключа - пропущен\n"
+msgstr "ключ %s: секретный ключ без открытого ключа - пропущен\n"
 
 #, c-format
 msgid "automatically retrieved `%s' via %s\n"
@@ -1499,7 +1499,7 @@ msgstr ""
 
 #, c-format
 msgid "no secret subkey for public subkey %s - ignoring\n"
-msgstr "нет закрытого подключа для открытого подключа %s - игнорируем\n"
+msgstr "нет секретного подключа для открытого подключа %s - игнорируем\n"
 
 #, c-format
 msgid "using subkey %s instead of primary key %s\n"
@@ -1544,7 +1544,7 @@ msgid ""
 msgstr ""
 "Для построения Сети доверия GnuPG должен знать, к каким ключам\n"
 "имеется абсолютное доверие - обычно это ключи, для которых у Вас есть\n"
-"закрытый ключ. Ответьте \"yes\" для присвоения абсолютного доверия\n"
+"секретный ключ. Ответьте \"yes\" для присвоения абсолютного доверия\n"
 "данному ключу\n"
 
 msgid "If you want to use this untrusted key anyway, answer \"yes\"."
@@ -1801,7 +1801,7 @@ msgstr ""
 "ситуации Вы можете выбрать один из следующих вариантов:\n"
 "  \"Ключ был скомпрометирован\"\n"
 "      Выберите, если Вы полагаете, что посторонний человек\n"
-"      получил доступ к Вашему закрытому ключу.\n"
+"      получил доступ к Вашему секретному ключу.\n"
 "  \"Ключ заменен другим\"\n"
 "      Выберите, если Вы заменили данный ключ на другой.\n"
 "  \"Ключ больше не используется\"\n"
@@ -1840,7 +1840,7 @@ msgid "do not update the trustdb after import"
 msgstr "не обновлять таблицу доверия после импорта"
 
 msgid "create a public key when importing a secret key"
-msgstr "создать открытый ключ при импорте закрытого ключа"
+msgstr "создать открытый ключ при импорте секретного ключа"
 
 msgid "only accept updates to existing keys"
 msgstr "обновлять только существующие ключи"
@@ -1898,15 +1898,15 @@ msgstr "         новых отзывов ключей: %lu\n"
 
 #, c-format
 msgid "      secret keys read: %lu\n"
-msgstr "      считано закрытых ключей: %lu\n"
+msgstr "      считано секретных ключей: %lu\n"
 
 #, c-format
 msgid "  secret keys imported: %lu\n"
-msgstr "импортировано закрытых ключей: %lu\n"
+msgstr "импортировано секретных ключей: %lu\n"
 
 #, c-format
 msgid " secret keys unchanged: %lu\n"
-msgstr " неизмененных закрытых ключей: %lu\n"
+msgstr " неизмененных секретных ключей: %lu\n"
 
 #, c-format
 msgid "          not imported: %lu\n"
@@ -1935,7 +1935,7 @@ msgstr "         \"%s\": предпочитает шифр %s\n"
 
 #, c-format
 msgid "         \"%s\": preference for digest algorithm %s\n"
-msgstr "         \"%s\": предпочитает хэш-функцию %s\n"
+msgstr "         \"%s\": предпочитает хеш-функцию %s\n"
 
 #, c-format
 msgid "         \"%s\": preference for compression algorithm %s\n"
@@ -2061,30 +2061,30 @@ msgstr "ключ %s: \"%s\" не изменен\n"
 
 #, c-format
 msgid "secret key %s: %s\n"
-msgstr "закрытый ключ %s: %s\n"
+msgstr "секретный ключ %s: %s\n"
 
 msgid "importing secret keys not allowed\n"
-msgstr "импорт закрытого ключа не допускается\n"
+msgstr "импорт секретного ключа не допускается\n"
 
 #, c-format
 msgid "key %s: secret key with invalid cipher %d - skipped\n"
-msgstr "ключ %s: закрытый ключ с недопустимым шифром %d - пропущен\n"
+msgstr "ключ %s: секретный ключ с недопустимым шифром %d - пропущен\n"
 
 #, c-format
 msgid "no default secret keyring: %s\n"
-msgstr "нет основной таблицы закрытых ключей: %s\n"
+msgstr "нет основной таблицы секретных ключей: %s\n"
 
 #, c-format
 msgid "key %s: secret key imported\n"
-msgstr "ключ %s: импортирован закрытый ключ\n"
+msgstr "ключ %s: импортирован секретный ключ\n"
 
 #, c-format
 msgid "key %s: already in secret keyring\n"
-msgstr "ключ %s: уже есть в таблице закрытых ключей\n"
+msgstr "ключ %s: уже есть в таблице секретных ключей\n"
 
 #, c-format
 msgid "key %s: secret key not found: %s\n"
-msgstr "ключ %s: закрытый ключ не найден: %s\n"
+msgstr "ключ %s: секретный ключ не найден: %s\n"
 
 #, c-format
 msgid "key %s: no public key - can't apply revocation certificate\n"
@@ -2452,10 +2452,10 @@ msgid "This key is not protected.\n"
 msgstr "Данный ключ не защищен.\n"
 
 msgid "Secret parts of primary key are not available.\n"
-msgstr "Закрытые части главного ключа отсутствуют.\n"
+msgstr "Секретные части главного ключа отсутствуют.\n"
 
 msgid "Secret parts of primary key are stored on-card.\n"
-msgstr "Закрытые части главного ключа сохранены на карте.\n"
+msgstr "Секретные части главного ключа сохранены на карте.\n"
 
 msgid "Key is protected.\n"
 msgstr "Ключ защищен.\n"
@@ -2468,7 +2468,7 @@ msgid ""
 "Enter the new passphrase for this secret key.\n"
 "\n"
 msgstr ""
-"Введите новую фразу-пароль для данного закрытого ключа.\n"
+"Введите новую фразу-пароль для данного секретного ключа.\n"
 "\n"
 
 msgid "passphrase not correctly repeated; try again"
@@ -2554,7 +2554,7 @@ msgid "flag the selected user ID as primary"
 msgstr "пометить выбранный ID пользователя как главный"
 
 msgid "toggle between the secret and public key listings"
-msgstr "переключение между просмотром открытых и закрытых ключей"
+msgstr "переключение между просмотром открытых и секретных ключей"
 
 msgid "list preferences (expert)"
 msgstr "список предпочтений (экспертам)"
@@ -2605,13 +2605,13 @@ msgstr "сжать непригодные ID пользователей и уд
 
 #, c-format
 msgid "error reading secret keyblock \"%s\": %s\n"
-msgstr "ошибка чтения закрытого блока ключа \"%s\": %s\n"
+msgstr "ошибка чтения секретного блока ключа \"%s\": %s\n"
 
 msgid "Secret key is available.\n"
-msgstr "Закрытый ключ доступен.\n"
+msgstr "Секретный ключ доступен.\n"
 
 msgid "Need the secret key to do this.\n"
-msgstr "Для данного действия нужен закрытый ключ.\n"
+msgstr "Для данного действия нужен секретный ключ.\n"
 
 msgid "Please use the command \"toggle\" first.\n"
 msgstr "Сначала воспользуйтесь командой \"toggle\".\n"
@@ -2723,7 +2723,7 @@ msgstr "сбой при обновлении: %s\n"
 
 #, c-format
 msgid "update secret failed: %s\n"
-msgstr "сбой при обновлений закрытого ключа: %s\n"
+msgstr "сбой при обновлении секретного ключа: %s\n"
 
 msgid "Key not changed so no update needed.\n"
 msgstr "Ключ не изменялся - обновление не нужно.\n"
@@ -2911,7 +2911,7 @@ msgid ""
 msgstr "Вы уверены, что хотите назначить данный ключ отзывающим? (y/N) "
 
 msgid "Please remove selections from the secret keys.\n"
-msgstr "Снимите выделение с закрытых ключей.\n"
+msgstr "Снимите выделение с секретных ключей.\n"
 
 msgid "Please select at most one subkey.\n"
 msgstr "Выделите не более одного подключа.\n"
@@ -2926,7 +2926,7 @@ msgid "You can't change the expiration date of a v3 key\n"
 msgstr "Нельзя изменить срок действия ключа v3\n"
 
 msgid "No corresponding signature in secret ring\n"
-msgstr "Нет соответствующей подписи в таблице закрытых ключей\n"
+msgstr "Нет соответствующей подписи в таблице секретных ключей\n"
 
 #, c-format
 msgid "signing subkey %s is already cross-certified\n"
@@ -2964,7 +2964,7 @@ msgstr "Нет ID пользователя с индексом %d\n"
 
 #, c-format
 msgid "No user ID with hash %s\n"
-msgstr "Нет ID пользователя с хэшем %s\n"
+msgstr "Нет ID пользователя с хешем %s\n"
 
 # c-format
 #, c-format
@@ -3013,7 +3013,7 @@ msgid "Really create the revocation certificates? (y/N) "
 msgstr "Действительно создать сертификат отзыва? (y/N) "
 
 msgid "no secret key\n"
-msgstr "нет закрытого ключа\n"
+msgstr "нет секретного ключа\n"
 
 #, c-format
 msgid "user ID \"%s\" is already revoked\n"
@@ -3043,7 +3043,7 @@ msgid "too many cipher preferences\n"
 msgstr "слишком много шифровых предпочтений\n"
 
 msgid "too many digest preferences\n"
-msgstr "слишком много предпочтений для хэш-функций\n"
+msgstr "слишком много предпочтений для хеш-функций\n"
 
 msgid "too many compression preferences\n"
 msgstr "слишком много предпочтений для методов сжатия\n"
@@ -3315,7 +3315,7 @@ msgid ""
 "You need a Passphrase to protect your secret key.\n"
 "\n"
 msgstr ""
-"Для защиты закрытого ключа необходима фраза-пароль.\n"
+"Для защиты секретного ключа необходима фраза-пароль.\n"
 "\n"
 
 #, c-format
@@ -3354,11 +3354,11 @@ msgstr "сохранение открытого ключа в `%s'\n"
 
 #, c-format
 msgid "writing secret key stub to `%s'\n"
-msgstr "сохранение заготовки закрытого ключа в `%s'\n"
+msgstr "сохранение заготовки секретного ключа в `%s'\n"
 
 #, c-format
 msgid "writing secret key to `%s'\n"
-msgstr "сохранение закрытого ключа в `%s'\n"
+msgstr "сохранение секретного ключа в `%s'\n"
 
 #, c-format
 msgid "no writable public keyring found: %s\n"
@@ -3366,7 +3366,7 @@ msgstr "нет доступной для записи таблицы откры
 
 #, c-format
 msgid "no writable secret keyring found: %s\n"
-msgstr "нет доступной для записи таблицы закрытых ключей: %s\n"
+msgstr "нет доступной для записи таблицы секретных ключей: %s\n"
 
 #, c-format
 msgid "error writing public keyring `%s': %s\n"
@@ -3374,10 +3374,10 @@ msgstr "ошибка записи таблицы открытых ключей `
 
 #, c-format
 msgid "error writing secret keyring `%s': %s\n"
-msgstr "ошибка записи таблицы закрытых ключей `%s': %s\n"
+msgstr "ошибка записи таблицы секретных ключей `%s': %s\n"
 
 msgid "public and secret key created and signed.\n"
-msgstr "открытый и закрытый ключи созданы и подписаны.\n"
+msgstr "открытый и секретный ключи созданы и подписаны.\n"
 
 msgid ""
 "Note that this key cannot be used for encryption.  You may want to use\n"
@@ -3647,7 +3647,7 @@ msgstr "сеансовый ключ зашифрован %s\n"
 
 #, c-format
 msgid "passphrase generated with unknown digest algorithm %d\n"
-msgstr "фраза-пароль создана с незнакомой хэш-функцией %d\n"
+msgstr "фраза-пароль создана с незнакомой хеш-функцией %d\n"
 
 #, c-format
 msgid "public key is %s\n"
@@ -3766,7 +3766,7 @@ msgstr "Подпись действительна до %s\n"
 
 #, c-format
 msgid "%s signature, digest algorithm %s\n"
-msgstr "подпись в %s форме, хэш-функция %s\n"
+msgstr "подпись в %s форме, хеш-функция %s\n"
 
 msgid "binary"
 msgstr "двоичной"
@@ -3832,11 +3832,11 @@ msgstr ""
 
 #, c-format
 msgid "WARNING: using experimental digest algorithm %s\n"
-msgstr "ВНИМАНИЕ: используется экспериментальная хэш-функция %s\n"
+msgstr "ВНИМАНИЕ: используется экспериментальная хеш-функция %s\n"
 
 #, c-format
 msgid "WARNING: digest algorithm %s is deprecated\n"
-msgstr "ВНИМАНИЕ: хэш-функция %s не рекомендуется\n"
+msgstr "ВНИМАНИЕ: хеш-функция %s не рекомендуется\n"
 
 #, c-format
 msgid "please see %s for more information\n"
@@ -3882,10 +3882,9 @@ msgstr "неоднозначный параметр `%s'\n"
 msgid "unknown option `%s'\n"
 msgstr "неизвестный параметр `%s'\n"
 
-#, fuzzy, c-format
-#| msgid "Unknown signature type `%s'\n"
+#, c-format
 msgid "Unknown weak digest '%s'\n"
-msgstr "Неизвестный тип подписи `%s'\n"
+msgstr "Неизвестный слабый хеш '%s'\n"
 
 #, c-format
 msgid "File `%s' exists. "
@@ -3960,7 +3959,7 @@ msgid ""
 "\"%.*s\"\n"
 "%u-bit %s key, ID %s, created %s%s\n"
 msgstr ""
-"Необходима фраза-пароль для доступа к закрытому ключу пользователя:\n"
+"Необходима фраза-пароль для доступа к секретному ключу пользователя:\n"
 "\"%.*s\"\n"
 "%u-бит %s ключ, ID %s, создан %s пользователем%s\n"
 
@@ -3984,7 +3983,7 @@ msgid ""
 "You need a passphrase to unlock the secret key for\n"
 "user: \"%s\"\n"
 msgstr ""
-"Необходима фраза-пароль для доступа к закрытому ключу пользователя: \"%s\"\n"
+"Необходима фраза-пароль для доступа к секретному ключу пользователя: \"%s\"\n"
 
 #, c-format
 msgid "%u-bit %s key, ID %s, created %s"
@@ -4283,7 +4282,7 @@ msgstr "не могу открыть подписанные данные `%s'\n"
 
 #, c-format
 msgid "anonymous recipient; trying secret key %s ...\n"
-msgstr "анонимный получатель; пробую закрытый ключ %s ...\n"
+msgstr "анонимный получатель; пробую секретный ключ %s ...\n"
 
 msgid "okay, we are the anonymous recipient.\n"
 msgstr "Отлично, мы - анонимный получатель.\n"
@@ -4302,7 +4301,7 @@ msgstr ""
 
 #, c-format
 msgid "NOTE: secret key %s expired at %s\n"
-msgstr "ЗАМЕЧАНИЕ: закрытый ключ %s просрочен с %s\n"
+msgstr "ЗАМЕЧАНИЕ: секретный ключ %s просрочен с %s\n"
 
 msgid "NOTE: key has been revoked"
 msgstr "ЗАМЕЧАНИЕ: ключ был отозван"
@@ -4341,14 +4340,14 @@ msgstr "ключи отзыва для \"%s\" не найдены\n"
 
 #, c-format
 msgid "secret key \"%s\" not found: %s\n"
-msgstr "закрытый ключ \"%s\" не найден: %s\n"
+msgstr "секретный ключ \"%s\" не найден: %s\n"
 
 #, c-format
 msgid "no corresponding public key: %s\n"
 msgstr "нет соответствующего открытого ключа: %s\n"
 
 msgid "public key does not match secret key!\n"
-msgstr "открытый ключ не соответствует закрытому!\n"
+msgstr "открытый ключ не соответствует секретному!\n"
 
 msgid "Create a revocation certificate for this key? (y/N) "
 msgstr "Создать сертификат отзыва данного ключа? (y/N) "
@@ -4401,7 +4400,7 @@ msgid "Is this okay? (y/N) "
 msgstr "Все правильно? (y/N) "
 
 msgid "secret key parts are not available\n"
-msgstr "закрытая часть ключа недоступна\n"
+msgstr "секретная часть ключа недоступна\n"
 
 #, c-format
 msgid "protection algorithm %d%s is not supported\n"
@@ -4409,7 +4408,7 @@ msgstr "метод защиты %d%s не поддерживается\n"
 
 #, c-format
 msgid "protection digest %d is not supported\n"
-msgstr "метод защиты %d не поддерживается\n"
+msgstr "метод защиты хеша %d не поддерживается\n"
 
 msgid "Invalid passphrase; please try again"
 msgstr "Неверная фраза-пароль; попробуйте еще раз"
@@ -4434,18 +4433,18 @@ msgstr ""
 "невозможно избежать слабого ключа для симметричного шифра; %d попыток!\n"
 
 msgid "DSA requires the hash length to be a multiple of 8 bits\n"
-msgstr "DSA требует длины хэша, кратной 8 битам\n"
+msgstr "DSA требует длины хеша, кратной 8 битам\n"
 
 #, c-format
 msgid "DSA key %s uses an unsafe (%u bit) hash\n"
-msgstr "Ключ DSA %s использует небезопасный (%u-битный) хэш\n"
+msgstr "Ключ DSA %s использует небезопасный (%u-битный) хеш\n"
 
 #, c-format
 msgid "DSA key %s requires a %u bit or larger hash\n"
-msgstr "Ключ DSA %s требует %u-битного или более длинного хэша\n"
+msgstr "Ключ DSA %s требует %u-битного или более длинного хеша\n"
 
 msgid "WARNING: signature digest conflict in message\n"
-msgstr "ВНИМАНИЕ: конфликт хэшей подписей в сообщении\n"
+msgstr "ВНИМАНИЕ: конфликт хешей подписей в сообщении\n"
 
 #, c-format
 msgid "WARNING: signing subkey %s is not cross-certified\n"
@@ -4481,10 +4480,9 @@ msgstr ""
 msgid "NOTE: signature key %s expired %s\n"
 msgstr "ЗАМЕЧАНИЕ: срок действия подписавшего ключа %s истек %s\n"
 
-#, fuzzy, c-format
-#| msgid "%s signature, digest algorithm %s\n"
+#, c-format
 msgid "Note: signatures using the %s algorithm are rejected\n"
-msgstr "подпись в %s форме, хэш-функция %s\n"
+msgstr "Замечание: подписи с использованием алгоритма %s не учитываются\n"
 
 #, c-format
 msgid "assuming bad signature from key %s due to an unknown critical bit\n"
@@ -4536,7 +4534,7 @@ msgstr ""
 msgid ""
 "WARNING: forcing digest algorithm %s (%d) violates recipient preferences\n"
 msgstr ""
-"ВНИМАНИЕ: использование хэш-функции %s (%d) нарушает предпочтения "
+"ВНИМАНИЕ: использование хеш-функции %s (%d) нарушает предпочтения "
 "получателя\n"
 
 msgid "signing:"
@@ -4564,7 +4562,7 @@ msgid "skipped \"%s\": %s\n"
 msgstr "пропущено \"%s\": %s\n"
 
 msgid "skipped: secret key already present\n"
-msgstr "пропущено: закрытый ключ уже имеется\n"
+msgstr "пропущено: секретный ключ уже имеется\n"
 
 msgid "this is a PGP generated Elgamal key which is not secure for signatures!"
 msgstr ""
@@ -4658,7 +4656,7 @@ msgstr "%s: непригодная таблица доверия\n"
 
 #, c-format
 msgid "%s: failed to create hashtable: %s\n"
-msgstr "%s: сбой создания таблицы хэшей: %s\n"
+msgstr "%s: сбой создания таблицы хешей: %s\n"
 
 #, c-format
 msgid "%s: error updating version record: %s\n"
@@ -4890,13 +4888,13 @@ msgid "unknown pubkey algorithm"
 msgstr "неизвестный алгоритм с открытым ключом"
 
 msgid "unknown digest algorithm"
-msgstr "неизвестная хэш-функция"
+msgstr "неизвестная хеш-функция"
 
 msgid "bad public key"
 msgstr "плохой открытый ключ"
 
 msgid "bad secret key"
-msgstr "плохой закрытый ключ"
+msgstr "плохой секретный ключ"
 
 msgid "bad signature"
 msgstr "подпись неверна"
@@ -4926,10 +4924,10 @@ msgid "no such user id"
 msgstr "нет такого ID пользователя"
 
 msgid "secret key not available"
-msgstr "закрытый ключ не найден"
+msgstr "секретный ключ не найден"
 
 msgid "wrong secret key used"
-msgstr "использован неправильный закрытый ключ"
+msgstr "использован неправильный секретный ключ"
 
 msgid "not supported"
 msgstr "не поддерживается"
@@ -5028,7 +5026,7 @@ msgid "unusable public key"
 msgstr "непригодный открытый ключ"
 
 msgid "unusable secret key"
-msgstr "непригодный закрытый ключ"
+msgstr "непригодный секретный ключ"
 
 msgid "keyserver error"
 msgstr "ошибка сервера ключей"
@@ -5163,7 +5161,7 @@ msgstr "(возможно, Вы используете для этой зада
 #~ msgstr "нельзя ставить URL правил в v3 (PGP 2.x стиля) подписи\n"
 
 #~ msgid "DSA requires the use of a 160 bit hash algorithm\n"
-#~ msgstr "DSA требует использования 160-битной хэш-функции\n"
+#~ msgstr "DSA требует использования 160-битной хеш-функции\n"
 
 #~ msgid ""
 #~ "please see http://www.gnupg.org/why-not-idea.html for more information\n"

commit c6dbfe89903d0c8191cf50ecf1abb3c8458b427a
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Aug 17 11:15:50 2016 +0200

    random: Hash continuous areas in the csprng pool.
    
    * cipher/random.c (mix_pool): Store the first hash at the end of the
    pool.
    --
    
    This fixes a long standing bug (since 1998) in Libgcrypt and GnuPG.
    An attacker who obtains 580 bytes of the random number from the
    standard RNG can trivially predict the next 20 bytes of output.
    
    This bug does not affect the default generation of
    keys because running gpg for key creation creates at most 2 keys from
    the pool: For a single 4096 bit RSA key 512 byte of random are
    required and thus for the second key (encryption subkey), 20 bytes
    could be predicted from the the first key.  However, the security of
    an OpenPGP key depends on the primary key (which was generated first)
    and thus the 20 predictable bytes should not be a problem.  For the
    default key length of 2048 bit nothing will be predictable.
    
    For the former default of DSA+Elgamal key it is complicate to give an
    answer: For 2048 bit keys a pool of 30 non-secret candidate primes of
    about 300 bits each are first created.  This reads at least 1140 bytes
    from the pool and thus parts could be predicted.  At some point a 256
    bit secret is read from the pool; which in the worst case might be
    partly predictable.
    
    The bug was found and reported by Felix Dörre and Vladimir Klebanov,
    Karlsruhe Institute of Technology.  A paper describing the problem in
    detail will shortly be published.
    
    CVE-id: CVE-2016-6313
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/cipher/random.c b/cipher/random.c
index be2f51a..5f7de51 100644
--- a/cipher/random.c
+++ b/cipher/random.c
@@ -360,23 +360,21 @@ mix_pool(byte *pool)
 #if DIGESTLEN != 20
 #error must have a digest length of 20 for ripe-md-160
 #endif
-    /* loop over the pool */
+    /* pool -> pool' */
     pend = pool + POOLSIZE;
     memcpy(hashbuf, pend - DIGESTLEN, DIGESTLEN );
     memcpy(hashbuf+DIGESTLEN, pool, BLOCKLEN-DIGESTLEN);
     rmd160_mixblock( &md, hashbuf);
     memcpy(pool, hashbuf, DIGESTLEN);
 
+    /* Loop for the remaining iterations.  */
     p = pool;
     for( n=1; n < POOLBLOCKS; n++ ) {
-	memcpy(hashbuf, p, DIGESTLEN );
-
-	p += DIGESTLEN;
-	if( p+DIGESTLEN+BLOCKLEN < pend )
-	    memcpy(hashbuf+DIGESTLEN, p+DIGESTLEN, BLOCKLEN-DIGESTLEN);
+	if( p + BLOCKLEN < pend )
+	    memcpy(hashbuf, p, BLOCKLEN);
 	else {
-	    char *pp = p+DIGESTLEN;
-	    for(i=DIGESTLEN; i < BLOCKLEN; i++ ) {
+	    char *pp = p;
+	    for(i=0; i < BLOCKLEN; i++ ) {
 		if( pp >= pend )
 		    pp = pool;
 		hashbuf[i] = *pp++;
@@ -384,6 +382,7 @@ mix_pool(byte *pool)
 	}
 
 	rmd160_mixblock( &md, hashbuf);
+        p += DIGESTLEN;
 	memcpy(p, hashbuf, DIGESTLEN);
     }
     burn_stack (384); /* for the rmd160_mixblock() */

commit e23eec8c9a602eee0a09851a54db0f5d611f125c
Author: Werner Koch <wk at gnupg.org>
Date:   Wed Aug 17 11:03:07 2016 +0200

    cipher: Improve readability by using a macro.
    
    * cipher/random.c (mix_pool): Use DIGESTLEN instead of 20.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/cipher/random.c b/cipher/random.c
index 7549517..be2f51a 100644
--- a/cipher/random.c
+++ b/cipher/random.c
@@ -365,7 +365,7 @@ mix_pool(byte *pool)
     memcpy(hashbuf, pend - DIGESTLEN, DIGESTLEN );
     memcpy(hashbuf+DIGESTLEN, pool, BLOCKLEN-DIGESTLEN);
     rmd160_mixblock( &md, hashbuf);
-    memcpy(pool, hashbuf, 20 );
+    memcpy(pool, hashbuf, DIGESTLEN);
 
     p = pool;
     for( n=1; n < POOLBLOCKS; n++ ) {
@@ -384,7 +384,7 @@ mix_pool(byte *pool)
 	}
 
 	rmd160_mixblock( &md, hashbuf);
-	memcpy(p, hashbuf, 20 );
+	memcpy(p, hashbuf, DIGESTLEN);
     }
     burn_stack (384); /* for the rmd160_mixblock() */
 }

-----------------------------------------------------------------------

Summary of changes:
 Makefile.am          |  13 ++++
 NEWS                 |  15 ++++-
 README               |  32 ++++++----
 cipher/random.c      |  19 +++---
 configure.ac         |   2 +-
 g10/gpg.c            |   5 ++
 po/be.po             |   8 +--
 po/ca.po             |   8 +--
 po/cs.po             |   8 +--
 po/da.po             |   8 +--
 po/de.po             |   8 +--
 po/el.po             |   8 +--
 po/eo.po             |   8 +--
 po/es.po             |   8 +--
 po/et.po             |   8 +--
 po/fi.po             |   8 +--
 po/fr.po             |   8 +--
 po/gl.po             |   8 +--
 po/hu.po             |   8 +--
 po/id.po             |   8 +--
 po/it.po             |   8 +--
 po/ja.po             |  11 ++--
 po/nb.po             |   8 +--
 po/nl.po             |   8 +--
 po/pl.po             |   8 +--
 po/pt.po             |   8 +--
 po/pt_BR.po          |   8 +--
 po/ro.po             |   8 +--
 po/ru.po             | 170 +++++++++++++++++++++++++--------------------------
 po/sk.po             |   8 +--
 po/sv.po             |   8 +--
 po/tr.po             |   8 +--
 po/uk.po             |   8 +--
 po/zh_CN.po          |   8 +--
 po/zh_TW.po          |   8 +--
 scripts/config.guess | 168 ++++++++++++++++++++++++++++++--------------------
 scripts/config.sub   |  58 ++++++++++++------
 37 files changed, 402 insertions(+), 307 deletions(-)


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list