[pkg-horde] Bug#863502: unblock: php-horde-crypt/2.7.8-1

Mathieu Parent sathieu at debian.org
Sat May 27 20:40:06 UTC 2017


Package: release.debian.org
Severity: normal
User: release.debian.org at packages.debian.org
Usertags: unblock

Please unblock package php-horde-crypt

This update:
- Fixes Command injection: CVE-2017-7413, and CVE-2017-7414 (Closes: #859635),
  already in 2.7.5-2 (so this bug is a superset of #861715)
- Adds suport for GnuPG 2 (Closes: #854819: from upstream + 2 patches from me)
- Correctly specify either sha-1 or sha-256 when signing a smime message
- A small PHP style change (while-loop replaced by for-loop)
- improved test suite
- Add gnupg as a test dependency (Closes: #849151): debtests now passing.
- and a bunch of comment changes (s/2016/2017, ...)

I've attached:
- A complete, unreadable debdiff (because PEAR packages change path on each
  upstream release
- A complete git diff, still mostly polluted
- A code-only diff (git-diff, removing comments changes and testsuite
  improvements)


unblock php-horde-crypt/2.7.8-1

-- System Information:
Debian Release: 9.0
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing')
Architecture: amd64
 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.9.0-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: php-horde-crypt_2.7.8-1.debdiff
Type: text/x-diff
Size: 1402835 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-horde-hackers/attachments/20170527/a182cfbd/attachment-0001.diff>
-------------- next part --------------
diff --git a/Horde_Crypt-2.7.5/doc/Horde/Crypt/COPYING b/Horde_Crypt-2.7.8/doc/Horde/Crypt/COPYING
similarity index 100%
rename from Horde_Crypt-2.7.5/doc/Horde/Crypt/COPYING
rename to Horde_Crypt-2.7.8/doc/Horde/Crypt/COPYING
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt.php
similarity index 92%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt.php
index f4a7dd5..01d8198 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt.php
@@ -1,14 +1,14 @@
 <?php
 /**
- * Copyright 2002-2016 Horde LLC (http://www.horde.org/)
+ * Copyright 2002-2017 Horde LLC (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  *
- * @category  Horde
- * @copyright 2002-2016 Horde LLC
- * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
- * @package   Crypt
+ * @author   Michael Slusarz <slusarz at horde.org>
+ * @category Horde
+ * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
+ * @package  Crypt
  */
 
 /**
@@ -17,7 +17,7 @@
  *
  * @author    Michael Slusarz <slusarz at horde.org>
  * @category  Horde
- * @copyright 2002-2016 Horde LLC
+ * @copyright 2002-2017 Horde LLC
  * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
  * @package   Crypt
  */
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Exception.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Exception.php
similarity index 63%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Exception.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Exception.php
index 5dfad5b..52fae76 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Exception.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Exception.php
@@ -1,8 +1,6 @@
 <?php
 /**
- * Exception handler for the horde/Crypt package.
- *
- * Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+ * Copyright 2010-2017 Horde LLC (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
@@ -12,6 +10,16 @@
  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
  * @package  Crypt
  */
+
+/**
+ * Exception handler for the horde/Crypt package.
+ *
+ * @author    Michael Slusarz <slusarz at horde.org>
+ * @category  Horde
+ * @copyright 2010-2017 Horde LLC
+ * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
+ * @package   Crypt
+ */
 class Horde_Crypt_Exception extends Horde_Exception_Wrapped
 {
 }
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp.php
similarity index 99%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp.php
index 8d96525..5182f7c 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp.php
@@ -1,14 +1,15 @@
 <?php
 /**
- * Copyright 2002-2016 Horde LLC (http://www.horde.org/)
+ * Copyright 2002-2017 Horde LLC (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  *
- * @category  Horde
- * @copyright 2002-2016 Horde LLC
- * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
- * @package   Crypt
+ * @author   Michael Slusarz <slusarz at horde.org>
+ * @author   Jan Schneider <jan at horde.org>
+ * @category Horde
+ * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
+ * @package  Crypt
  */
 
 /**
@@ -20,7 +21,7 @@
  * @author    Michael Slusarz <slusarz at horde.org>
  * @author    Jan Schneider <jan at horde.org>
  * @category  Horde
- * @copyright 2002-2016 Horde LLC
+ * @copyright 2002-2017 Horde LLC
  * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
  * @package   Crypt
  */
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Backend.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend.php
similarity index 96%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Backend.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend.php
index b623a8f..e2ff45d 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Backend.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend.php
@@ -1,14 +1,14 @@
 <?php
 /**
- * Copyright 2015-2016 Horde LLC (http://www.horde.org/)
+ * Copyright 2015-2017 Horde LLC (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  *
- * @category  Horde
- * @copyright 2015-2016 Horde LLC
- * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
- * @package   Crypt
+ * @author   Michael Slusarz <slusarz at horde.org>
+ * @category Horde
+ * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
+ * @package  Crypt
  */
 
 /**
@@ -20,10 +20,10 @@
  *
  * @author    Michael Slusarz <slusarz at horde.org>
  * @category  Horde
- * @copyright 2015-2016 Horde LLC
- * @internal
+ * @copyright 2015-2017 Horde LLC
  * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
  * @package   Crypt
+ * @internal
  */
 class Horde_Crypt_Pgp_Backend
 {
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Backend/Binary.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
similarity index 95%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Backend/Binary.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
index 0b786ff..2d71888 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Backend/Binary.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
@@ -1,14 +1,14 @@
 <?php
 /**
- * Copyright 2015-2016 Horde LLC (http://www.horde.org/)
+ * Copyright 2015-2017 Horde LLC (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  *
- * @category  Horde
- * @copyright 2015-2016 Horde LLC
- * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
- * @package   Crypt
+ * @author   Michael Slusarz <slusarz at horde.org>
+ * @category Horde
+ * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
+ * @package  Crypt
  */
 
 /**
@@ -20,10 +20,10 @@
  *
  * @author    Michael Slusarz <slusarz at horde.org>
  * @category  Horde
- * @copyright 2015-2016 Horde LLC
- * @internal
+ * @copyright 2015-2017 Horde LLC
  * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
  * @package   Crypt
+ * @internal
  */
 class Horde_Crypt_Pgp_Backend_Binary
 extends Horde_Crypt_Pgp_Backend
@@ -77,6 +77,26 @@ extends Horde_Crypt_Pgp_Backend
             '--yes',
             '--homedir ' . $this->_tempdir
         );
+
+        /* GnuPG 2 requires specifying the pinentry-mode. */
+        $result = $this->_callGpg(array('--version'), 'r');
+        if (preg_match('/gpg \(GnuPG\) (\d+\.\d+\.\d+)/', $result->stdout, $version) &&
+            version_compare($version[1], '2.1.0', '>')) {
+            if (version_compare($version[1], '2.1.12', '>=')) {
+                $this->_gnupg[] = '--pinentry-mode loopback';
+                file_put_contents(
+                    $this->_tempdir . '/gpg-agent.conf',
+                    'allow-loopback-pinentry'
+                );
+            } else {
+                throw new Horde_Crypt_Exception(
+                    sprintf(
+                        Horde_Crypt_Translation::t("Unsupported GnuPG version %s detected. Only versions < 2.1 and > 2.1.11 are supported."),
+                        $version[1]
+                    )
+                );
+            }
+        }
     }
 
     /**
@@ -433,7 +453,7 @@ extends Horde_Crypt_Pgp_Backend
             $cmdline[] = $keyring;
             $cmdline[] = '--encrypt';
             foreach (array_keys($params['recips']) as $val) {
-                $cmdline[] = '--recipient ' . $val;
+                $cmdline[] = '--recipient ' . escapeshellarg($val);
             }
         } else {
             $cmdline[] = '--symmetric';
@@ -552,7 +572,7 @@ extends Horde_Crypt_Pgp_Backend
             '--armor',
             '--always-trust',
             '--batch',
-            '--charset ' . (isset($params['charset']) ? $params['charset'] : 'UTF-8'),
+            '--charset ' . (isset($params['charset']) ? escapeshellarg($params['charset']) : 'UTF-8'),
             $keyring,
             '--verify'
         );
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Keyserver.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Keyserver.php
similarity index 97%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Keyserver.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Keyserver.php
index 3b95f3a..facf886 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Keyserver.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Keyserver.php
@@ -1,14 +1,14 @@
 <?php
 /**
- * Copyright 2002-2016 Horde LLC (http://www.horde.org/)
+ * Copyright 2002-2017 Horde LLC (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  *
- * @category  Horde
- * @copyright 2002-2016 Horde LLC
- * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
- * @package   Crypt
+ * @author   Michael Slusarz <slusarz at horde.org>
+ * @category Horde
+ * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
+ * @package  Crypt
  */
 
 /**
@@ -19,7 +19,7 @@
  *
  * @author    Michael Slusarz <slusarz at horde.org>
  * @category  Horde
- * @copyright 2002-2016 Horde LLC
+ * @copyright 2002-2017 Horde LLC
  * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
  * @package   Crypt
  * @since     2.4.0
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Parse.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Parse.php
similarity index 95%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Parse.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Parse.php
index 518b3e7..9cbac24 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Parse.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Parse.php
@@ -1,14 +1,14 @@
 <?php
 /**
- * Copyright 2002-2016 Horde LLC (http://www.horde.org/)
+ * Copyright 2002-2017 Horde LLC (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  *
- * @category  Horde
- * @copyright 2002-2016 Horde LLC
- * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
- * @package   Crypt
+ * @author   Michael Slusarz <slusarz at horde.org>
+ * @category Horde
+ * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
+ * @package  Crypt
  */
 
 /**
@@ -16,7 +16,7 @@
  *
  * @author    Michael Slusarz <slusarz at horde.org>
  * @category  Horde
- * @copyright 2002-2016 Horde LLC
+ * @copyright 2002-2017 Horde LLC
  * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
  * @package   Crypt
  * @since     2.4.0
@@ -159,7 +159,7 @@ class Horde_Crypt_Pgp_Parse
         $new_part = new Horde_Mime_Part();
         $new_part->setType('multipart/mixed');
 
-        while (list(,$val) = each($parts)) {
+        for ($val = reset($parts); $val; $val = next($parts)) {
             switch ($val['type']) {
             case self::ARMOR_TEXT:
                 $part = new Horde_Mime_Part();
@@ -198,7 +198,7 @@ class Horde_Crypt_Pgp_Parse
                 break;
 
             case self::ARMOR_SIGNED_MESSAGE:
-                if ((list(,$sig) = each($parts)) &&
+                if (($sig = next($parts)) &&
                     ($sig['type'] == self::ARMOR_SIGNATURE)) {
                     $part = new Horde_Mime_Part();
                     $part->setType('multipart/signed');
@@ -223,8 +223,6 @@ class Horde_Crypt_Pgp_Parse
                     $part->addPart($part1);
                     $part->addPart($part2);
                     $new_part->addPart($part);
-
-                    next($parts);
                 }
             }
         }
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Smime.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Smime.php
similarity index 98%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Smime.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Smime.php
index cb8455d..f40a6dd 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Smime.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Smime.php
@@ -1,8 +1,6 @@
 <?php
 /**
- * Library to interact with the OpenSSL library and implement S/MIME.
- *
- * Copyright 2002-2016 Horde LLC (http://www.horde.org/)
+ * Copyright 2002-2017 Horde LLC (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
@@ -13,6 +11,17 @@
  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
  * @package  Crypt
  */
+
+/**
+ * Library to interact with the OpenSSL library and implement S/MIME.
+ *
+ * @author    Mike Cochrane <mike at graftonhall.co.nz>
+ * @author    Michael Slusarz <slusarz at horde.org>
+ * @category  Horde
+ * @copyright 2002-2017 Horde LLC
+ * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
+ * @package   Crypt
+ */
 class Horde_Crypt_Smime extends Horde_Crypt
 {
     /**
@@ -235,8 +244,9 @@ class Horde_Crypt_Smime extends Horde_Crypt
             'protocol',
             'application/pkcs7-signature'
         );
-        // Per RFC 5751 [3.4.3.2], 'sha1' has been deprecated for 'sha-1'.
-        $smime_part->setContentTypeParameter('micalg', 'sha-1');
+        $smime_part->setContentTypeParameter(
+            'micalg', $mime_message->getContentTypeParameter('micalg')
+        );
         $smime_part->addPart($mime_part);
         $smime_part->addPart($smime_sign);
 
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Translation.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Translation.php
similarity index 76%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Translation.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Translation.php
index d5b8df9..856015a 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Translation.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Translation.php
@@ -1,10 +1,11 @@
 <?php
 /**
- * Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+ * Copyright 2010-2017 Horde LLC (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you
  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
  *
+ * @author   Jan Schneider <jan at horde.org>
  * @category Horde
  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
  * @package  Crypt
@@ -13,9 +14,11 @@
 /**
  * Horde_Crypt_Translation is the translation wrapper class for Horde_Crypt.
  *
- * @author   Jan Schneider <jan at horde.org>
- * @category Horde
- * @package  Crypt
+ * @author    Jan Schneider <jan at horde.org>
+ * @category  Horde
+ * @copyright 2010-2017 Horde LLC
+ * @license   http://www.horde.org/licenses/lgpl21 LGPL 2.1
+ * @package   Crypt
  */
 class Horde_Crypt_Translation extends Horde_Translation_Autodetect
 {
diff --git a/Horde_Crypt-2.7.5/locale/Horde_Crypt.pot b/Horde_Crypt-2.7.8/locale/Horde_Crypt.pot
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/Horde_Crypt.pot
rename to Horde_Crypt-2.7.8/locale/Horde_Crypt.pot
diff --git a/Horde_Crypt-2.7.5/locale/ar/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/ar/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/ar/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/ar/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/ar/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/ar/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/ar/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/ar/LC_MESSAGES/Horde_Crypt.po
index 257c249..b109f5a 100644
--- a/Horde_Crypt-2.7.5/locale/ar/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/ar/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Arabic translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/bg/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/bg/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/bg/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/bg/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/bg/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/bg/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/bg/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/bg/LC_MESSAGES/Horde_Crypt.po
index c44375e..199ee66 100644
--- a/Horde_Crypt-2.7.5/locale/bg/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/bg/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Bulgarian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/bs/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/bs/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/bs/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/bs/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/bs/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/bs/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/bs/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/bs/LC_MESSAGES/Horde_Crypt.po
index 0aa1db9..f51a229 100644
--- a/Horde_Crypt-2.7.5/locale/bs/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/bs/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Bosnian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/ca/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/ca/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/ca/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/ca/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/ca/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/ca/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/ca/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/ca/LC_MESSAGES/Horde_Crypt.po
index a6fd2fd..bb25729 100644
--- a/Horde_Crypt-2.7.5/locale/ca/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/ca/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Catalan translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/cs/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/cs/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/cs/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/cs/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/cs/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/cs/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/cs/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/cs/LC_MESSAGES/Horde_Crypt.po
index 8d77b94..aaf0138 100644
--- a/Horde_Crypt-2.7.5/locale/cs/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/cs/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Czech translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/da/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/da/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/da/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/da/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/da/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/da/LC_MESSAGES/Horde_Crypt.po
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/da/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/da/LC_MESSAGES/Horde_Crypt.po
diff --git a/Horde_Crypt-2.7.5/locale/de/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/de/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/de/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/de/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/de/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/de/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/de/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/de/LC_MESSAGES/Horde_Crypt.po
index 6a93a4a..8f07df2 100644
--- a/Horde_Crypt-2.7.5/locale/de/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/de/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # German translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Jan Schneider <jan at horde.org>, 2010-2016.
 #
diff --git a/Horde_Crypt-2.7.5/locale/el/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/el/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/el/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/el/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/el/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/el/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/el/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/el/LC_MESSAGES/Horde_Crypt.po
index 3f1c9fb..7d84d11 100644
--- a/Horde_Crypt-2.7.5/locale/el/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/el/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Greek translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/es/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/es/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/es/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/es/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/es/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/es/LC_MESSAGES/Horde_Crypt.po
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/es/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/es/LC_MESSAGES/Horde_Crypt.po
diff --git a/Horde_Crypt-2.7.5/locale/et/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/et/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/et/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/et/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/et/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/et/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/et/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/et/LC_MESSAGES/Horde_Crypt.po
index 111eb10..32c42a8 100644
--- a/Horde_Crypt-2.7.5/locale/et/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/et/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Estonian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/eu/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/eu/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/eu/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/eu/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/eu/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/eu/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/eu/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/eu/LC_MESSAGES/Horde_Crypt.po
index 984b7cf..5da6939 100644
--- a/Horde_Crypt-2.7.5/locale/eu/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/eu/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Basque translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/fa/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/fa/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/fa/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/fa/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/fa/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/fa/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/fa/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/fa/LC_MESSAGES/Horde_Crypt.po
index 647b64d..cc67862 100644
--- a/Horde_Crypt-2.7.5/locale/fa/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/fa/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Persian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/fi/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/fi/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/fi/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/fi/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/fi/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/fi/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/fi/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/fi/LC_MESSAGES/Horde_Crypt.po
index 7c2bf33..d8adece 100644
--- a/Horde_Crypt-2.7.5/locale/fi/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/fi/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Finnish translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Leena Heino <liinu at uta.fi>, 2010-2012.
 #
diff --git a/Horde_Crypt-2.7.5/locale/fr/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/fr/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/fr/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/fr/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/fr/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/fr/LC_MESSAGES/Horde_Crypt.po
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/fr/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/fr/LC_MESSAGES/Horde_Crypt.po
diff --git a/Horde_Crypt-2.7.5/locale/gl/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/gl/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/gl/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/gl/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/gl/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/gl/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/gl/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/gl/LC_MESSAGES/Horde_Crypt.po
index 4126cf9..4567814 100644
--- a/Horde_Crypt-2.7.5/locale/gl/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/gl/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Galician translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/he/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/he/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/he/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/he/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/he/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/he/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/he/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/he/LC_MESSAGES/Horde_Crypt.po
index bcf7b39..606ee20 100644
--- a/Horde_Crypt-2.7.5/locale/he/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/he/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Hebrew translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/hr/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/hr/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/hr/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/hr/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/hr/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/hr/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/hr/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/hr/LC_MESSAGES/Horde_Crypt.po
index f4adf94..5133202 100644
--- a/Horde_Crypt-2.7.5/locale/hr/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/hr/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Croatian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Valentin Vidic <Valentin.Vidic at CARNet.hr>, 2011.
 #
diff --git a/Horde_Crypt-2.7.5/locale/hu/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/hu/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/hu/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/hu/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/hu/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/hu/LC_MESSAGES/Horde_Crypt.po
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/hu/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/hu/LC_MESSAGES/Horde_Crypt.po
diff --git a/Horde_Crypt-2.7.5/locale/id/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/id/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/id/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/id/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/id/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/id/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/id/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/id/LC_MESSAGES/Horde_Crypt.po
index e9e1cdf..ccc1b1f 100644
--- a/Horde_Crypt-2.7.5/locale/id/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/id/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Indonesian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/is/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/is/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/is/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/is/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/is/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/is/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/is/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/is/LC_MESSAGES/Horde_Crypt.po
index e1ca5f0..ef5b2fd 100644
--- a/Horde_Crypt-2.7.5/locale/is/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/is/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Icelandic translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/it/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/it/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/it/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/it/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/it/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/it/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/it/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/it/LC_MESSAGES/Horde_Crypt.po
index 7299f14..b94554f 100644
--- a/Horde_Crypt-2.7.5/locale/it/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/it/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Italian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/ja/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/ja/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/ja/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/ja/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/ja/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/ja/LC_MESSAGES/Horde_Crypt.po
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/ja/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/ja/LC_MESSAGES/Horde_Crypt.po
diff --git a/Horde_Crypt-2.7.5/locale/km/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/km/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/km/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/km/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/km/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/km/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/km/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/km/LC_MESSAGES/Horde_Crypt.po
index 08d37da..d1f29b5 100644
--- a/Horde_Crypt-2.7.5/locale/km/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/km/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Khmer translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/ko/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/ko/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/ko/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/ko/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/ko/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/ko/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/ko/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/ko/LC_MESSAGES/Horde_Crypt.po
index 846603f..c54e463 100644
--- a/Horde_Crypt-2.7.5/locale/ko/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/ko/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Korean translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/lt/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/lt/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/lt/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/lt/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/lt/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/lt/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/lt/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/lt/LC_MESSAGES/Horde_Crypt.po
index e19ecd3..aa479dc 100644
--- a/Horde_Crypt-2.7.5/locale/lt/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/lt/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Lithuanian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Vilius ?umskas <vilius at lnk.lt>, 2011.
 #
diff --git a/Horde_Crypt-2.7.5/locale/lv/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/lv/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/lv/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/lv/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/lv/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/lv/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/lv/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/lv/LC_MESSAGES/Horde_Crypt.po
index c5ab31a..eeae09e 100644
--- a/Horde_Crypt-2.7.5/locale/lv/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/lv/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Latvian translations for Horde_Crypt package.
-# Copyright 2011-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2011-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt package.
 # Automatically generated, 2011.
 #
diff --git a/Horde_Crypt-2.7.5/locale/mk/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/mk/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/mk/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/mk/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/mk/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/mk/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/mk/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/mk/LC_MESSAGES/Horde_Crypt.po
index 2e51cd2..867cf2b 100644
--- a/Horde_Crypt-2.7.5/locale/mk/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/mk/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Macedonian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/nb/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/nb/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/nb/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/nb/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/nb/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/nb/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/nb/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/nb/LC_MESSAGES/Horde_Crypt.po
index 3b5a43a..393d7d0 100644
--- a/Horde_Crypt-2.7.5/locale/nb/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/nb/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Norwegian Bokmal translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/nl/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/nl/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/nl/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/nl/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/nl/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/nl/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/nl/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/nl/LC_MESSAGES/Horde_Crypt.po
index 73a57fd..2fdb548 100644
--- a/Horde_Crypt-2.7.5/locale/nl/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/nl/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Dutch translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 #
 # Arjen de Korte <build+horde at de-korte.org>, 2012.
 msgid ""
diff --git a/Horde_Crypt-2.7.5/locale/nn/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/nn/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/nn/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/nn/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/nn/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/nn/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/nn/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/nn/LC_MESSAGES/Horde_Crypt.po
index c1fc152..d16bd71 100644
--- a/Horde_Crypt-2.7.5/locale/nn/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/nn/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Norwegian Nynorsk translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/pl/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/pl/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/pl/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/pl/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/pl/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/pl/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/pl/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/pl/LC_MESSAGES/Horde_Crypt.po
index 9e41429..364527a 100644
--- a/Horde_Crypt-2.7.5/locale/pl/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/pl/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Polish translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/pt/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/pt/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/pt/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/pt/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/pt/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/pt/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/pt/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/pt/LC_MESSAGES/Horde_Crypt.po
index c5039f3..759acb9 100644
--- a/Horde_Crypt-2.7.5/locale/pt/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/pt/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Portuguese translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/pt_BR/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/pt_BR/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/pt_BR/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/pt_BR/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/pt_BR/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/pt_BR/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/pt_BR/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/pt_BR/LC_MESSAGES/Horde_Crypt.po
index 31e8524..6a94991 100644
--- a/Horde_Crypt-2.7.5/locale/pt_BR/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/pt_BR/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Portuguese translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/ro/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/ro/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/ro/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/ro/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/ro/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/ro/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/ro/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/ro/LC_MESSAGES/Horde_Crypt.po
index 002c66a..84f8987 100644
--- a/Horde_Crypt-2.7.5/locale/ro/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/ro/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Romanian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/ru/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/ru/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/ru/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/ru/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/ru/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/ru/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/ru/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/ru/LC_MESSAGES/Horde_Crypt.po
index 977e8a9..32e4087 100644
--- a/Horde_Crypt-2.7.5/locale/ru/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/ru/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Russian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/sk/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/sk/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/sk/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/sk/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/sk/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/sk/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/sk/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/sk/LC_MESSAGES/Horde_Crypt.po
index a04da76..03e7ca7 100644
--- a/Horde_Crypt-2.7.5/locale/sk/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/sk/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Slovak translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 # Martin Matu?ka <martin at matuska.org>, 2008
diff --git a/Horde_Crypt-2.7.5/locale/sl/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/sl/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/sl/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/sl/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/sl/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/sl/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/sl/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/sl/LC_MESSAGES/Horde_Crypt.po
index 1c8171b..20dec82 100644
--- a/Horde_Crypt-2.7.5/locale/sl/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/sl/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Slovenian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/sv/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/sv/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/sv/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/sv/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/sv/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/sv/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/sv/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/sv/LC_MESSAGES/Horde_Crypt.po
index 7f993c1..bea9f78 100644
--- a/Horde_Crypt-2.7.5/locale/sv/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/sv/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Swedish translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/tr/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/tr/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/tr/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/tr/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/tr/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/tr/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/tr/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/tr/LC_MESSAGES/Horde_Crypt.po
index 0b14434..99a0d33 100644
--- a/Horde_Crypt-2.7.5/locale/tr/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/tr/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Turkish translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/uk/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/uk/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/uk/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/uk/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/uk/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/uk/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/uk/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/uk/LC_MESSAGES/Horde_Crypt.po
index 1a0bd43..6f54f80 100644
--- a/Horde_Crypt-2.7.5/locale/uk/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/uk/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Ukrainian translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # 
 msgid ""
diff --git a/Horde_Crypt-2.7.5/locale/zh_CN/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/zh_CN/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/zh_CN/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/zh_CN/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/zh_CN/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/zh_CN/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/zh_CN/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/zh_CN/LC_MESSAGES/Horde_Crypt.po
index 83c43b8..675771d 100644
--- a/Horde_Crypt-2.7.5/locale/zh_CN/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/zh_CN/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Chinese translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/locale/zh_TW/LC_MESSAGES/Horde_Crypt.mo b/Horde_Crypt-2.7.8/locale/zh_TW/LC_MESSAGES/Horde_Crypt.mo
similarity index 100%
rename from Horde_Crypt-2.7.5/locale/zh_TW/LC_MESSAGES/Horde_Crypt.mo
rename to Horde_Crypt-2.7.8/locale/zh_TW/LC_MESSAGES/Horde_Crypt.mo
diff --git a/Horde_Crypt-2.7.5/locale/zh_TW/LC_MESSAGES/Horde_Crypt.po b/Horde_Crypt-2.7.8/locale/zh_TW/LC_MESSAGES/Horde_Crypt.po
similarity index 99%
rename from Horde_Crypt-2.7.5/locale/zh_TW/LC_MESSAGES/Horde_Crypt.po
rename to Horde_Crypt-2.7.8/locale/zh_TW/LC_MESSAGES/Horde_Crypt.po
index 73d4513..106c00c 100644
--- a/Horde_Crypt-2.7.5/locale/zh_TW/LC_MESSAGES/Horde_Crypt.po
+++ b/Horde_Crypt-2.7.8/locale/zh_TW/LC_MESSAGES/Horde_Crypt.po
@@ -1,5 +1,5 @@
 # Chinese translations for Horde_Crypt module.
-# Copyright 2010-2016 Horde LLC (http://www.horde.org/)
+# Copyright 2010-2017 Horde LLC (http://www.horde.org/)
 # This file is distributed under the same license as the Horde_Crypt module.
 # Automatically generated, 2010.
 #
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/AllTests.php b/Horde_Crypt-2.7.8/test/Horde/Crypt/AllTests.php
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/AllTests.php
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/AllTests.php
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/Pgp/BinaryTest.php b/Horde_Crypt-2.7.8/test/Horde/Crypt/Pgp/BinaryTest.php
similarity index 77%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/Pgp/BinaryTest.php
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/Pgp/BinaryTest.php
index 3e3eb73..1defcbf 100644
--- a/Horde_Crypt-2.7.5/test/Horde/Crypt/Pgp/BinaryTest.php
+++ b/Horde_Crypt-2.7.8/test/Horde/Crypt/Pgp/BinaryTest.php
@@ -27,7 +27,12 @@ extends Horde_Crypt_Pgp_TestBase
             ));
         }
 
-        return array(new Horde_Crypt_Pgp_Backend_Binary($gnupg));
+        $backends = array(new Horde_Crypt_Pgp_Backend_Binary($gnupg));
+        if (!empty($c['gnupg2'])) {
+            $backends[] = new Horde_Crypt_Pgp_Backend_Binary($c['gnupg2']);
+        }
+
+        return $backends;
     }
 
 }
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/Pgp/TestBase.php b/Horde_Crypt-2.7.8/test/Horde/Crypt/Pgp/TestBase.php
similarity index 76%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/Pgp/TestBase.php
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/Pgp/TestBase.php
index 4c319b5..3cdbee8 100644
--- a/Horde_Crypt-2.7.5/test/Horde/Crypt/Pgp/TestBase.php
+++ b/Horde_Crypt-2.7.8/test/Horde/Crypt/Pgp/TestBase.php
@@ -14,21 +14,14 @@ abstract class Horde_Crypt_Pgp_TestBase
 extends Horde_Test_Case
 {
     private $_language;
-    private $_pgp;
 
     /* Returns the list of backends to test. */
     abstract protected function _setUp();
 
     protected function setUp()
     {
-        $backends = $this->_setUp();
-
         @date_default_timezone_set('GMT');
         $this->_language = getenv('LANGUAGE');
-
-        $this->_pgp = Horde_Crypt::factory('Pgp', array(
-            'backends' => $backends
-        ));
     }
 
     protected function tearDown()
@@ -36,7 +29,21 @@ extends Horde_Test_Case
         putenv('LANGUAGE=' . $this->_language);
     }
 
-    public function testBug6601()
+    public function backendProvider()
+    {
+        $pgp = array();
+        foreach ($this->_setUp() as $backend) {
+            $pgp[] = array(Horde_Crypt::factory('Pgp', array(
+                'backends' => array($backend)
+            )));
+        }
+        return $pgp;
+    }
+
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testBug6601($pgp)
     {
         $data = $this->_getFixture('bug_6601.asc');
 
@@ -54,17 +61,21 @@ Key ID:           0xF3C01D42
 Key Fingerprint:  5912D91D4C79C6701FFF148604A67B37F3C01D42
 
 ',
-            $this->_pgp->pgpPrettyKey($data)
+            $pgp->pgpPrettyKey($data)
         );
     }
 
-    // decrypt() message
-    public function testPgpDecrypt()
+    /**
+     * decrypt() message
+     *
+     * @dataProvider backendProvider
+     */
+    public function testPgpDecrypt($pgp)
     {
         // Encrypted data is in ISO-8859-1 format
         $crypt = $this->_getFixture('pgp_encrypted.txt');
 
-        $decrypt = $this->_pgp->decrypt($crypt, array(
+        $decrypt = $pgp->decrypt($crypt, array(
             'passphrase' => 'Secret',
             'privkey' => $this->_getPrivateKey(),
             'pubkey' => $this->_getPublicKey(),
@@ -92,12 +103,15 @@ The quick brown fox jumps over the lazy dog.
         );
     }
 
-    public function testPgpDecryptSymmetric()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testPgpDecryptSymmetric($pgp)
     {
         // Encrypted data is in ISO-8859-1 format
         $crypt = $this->_getFixture('pgp_encrypted_symmetric.txt');
 
-        $decrypt = $this->_pgp->decrypt($crypt, array(
+        $decrypt = $pgp->decrypt($crypt, array(
             'passphrase' => 'Secret',
             'type' => 'message'
         ));
@@ -122,11 +136,14 @@ The quick brown fox jumps over the lazy dog.
         );
     }
 
-    public function testPgpEncrypt()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testPgpEncrypt($pgp)
     {
         $clear = $this->_getFixture('clear.txt');
 
-        $out = $this->_pgp->encrypt($clear, array(
+        $out = $pgp->encrypt($clear, array(
             'recips' => array('me at example.com' => $this->_getPublicKey()),
             'type' => 'message'
         ));
@@ -151,11 +168,14 @@ Version: GnuPG %s
         );
     }
 
-    public function testPgpEncryptSymmetric()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testPgpEncryptSymmetric($pgp)
     {
         $clear = $this->_getFixture('clear.txt');
 
-        $out = $this->_pgp->encrypt($clear, array(
+        $out = $pgp->encrypt($clear, array(
             'passphrase' => 'Secret',
             'symmetric' => true,
             'type' => 'message'
@@ -175,31 +195,40 @@ Version: GnuPG %s
         );
     }
 
-    public function testPgpEncryptedSymmetrically()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testPgpEncryptedSymmetrically($pgp)
     {
         $this->assertFalse(
-            $this->_pgp->encryptedSymmetrically(
+            $pgp->encryptedSymmetrically(
                 $this->_getFixture('pgp_encrypted.txt')
             )
         );
         $this->assertTrue(
-            $this->_pgp->encryptedSymmetrically(
+            $pgp->encryptedSymmetrically(
                 $this->_getFixture('pgp_encrypted_symmetric.txt')
             )
         );
     }
 
-    public function testGetSignersKeyID()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testGetSignersKeyID($pgp)
     {
         $this->assertEquals(
             'BADEABD7',
-            $this->_pgp->getSignersKeyID($this->_getFixture('pgp_signed.txt'))
+            $pgp->getSignersKeyID($this->_getFixture('pgp_signed.txt'))
         );
     }
 
-    public function testPgpPacketInformation()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testPgpPacketInformation($pgp)
     {
-        $out = $this->_pgp->pgpPacketInformation($this->_getPublicKey());
+        $out = $pgp->pgpPacketInformation($this->_getPublicKey());
 
         $this->assertArrayHasKey(
             'public_key',
@@ -222,7 +251,7 @@ Version: GnuPG %s
             $out['keyid']
         );
 
-        $out = $this->_pgp->pgpPacketInformation($this->_getPrivateKey());
+        $out = $pgp->pgpPacketInformation($this->_getPrivateKey());
 
         $this->assertArrayHasKey(
             'secret_key',
@@ -246,9 +275,12 @@ Version: GnuPG %s
         );
     }
 
-    public function testPgpPacketSignature()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testPgpPacketSignature($pgp)
     {
-        $out = $this->_pgp->pgpPacketSignature(
+        $out = $pgp->pgpPacketSignature(
             $this->_getPublicKey(),
             'me at example.com'
         );
@@ -258,7 +290,7 @@ Version: GnuPG %s
             $out['keyid']
         );
 
-        $out = $this->_pgp->pgpPacketSignature(
+        $out = $pgp->pgpPacketSignature(
             $this->_getPrivateKey(),
             'me at example.com'
         );
@@ -268,7 +300,7 @@ Version: GnuPG %s
             $out['keyid']
         );
 
-        $out = $this->_pgp->pgpPacketSignature(
+        $out = $pgp->pgpPacketSignature(
             $this->_getPrivateKey(),
             'foo at example.com'
         );
@@ -279,9 +311,12 @@ Version: GnuPG %s
         );
     }
 
-    public function testPgpPacketSignatureByUidIndex()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testPgpPacketSignatureByUidIndex($pgp)
     {
-        $out = $this->_pgp->pgpPacketSignatureByUidIndex(
+        $out = $pgp->pgpPacketSignatureByUidIndex(
             $this->_getPublicKey(),
             'id1'
         );
@@ -291,7 +326,7 @@ Version: GnuPG %s
             $out['keyid']
         );
 
-        $out = $this->_pgp->pgpPacketSignatureByUidIndex(
+        $out = $pgp->pgpPacketSignatureByUidIndex(
             $this->_getPrivateKey(),
             'id1'
         );
@@ -301,7 +336,7 @@ Version: GnuPG %s
             $out['keyid']
         );
 
-        $out = $this->_pgp->pgpPacketSignatureByUidIndex(
+        $out = $pgp->pgpPacketSignatureByUidIndex(
             $this->_getPrivateKey(),
             'id2'
         );
@@ -312,7 +347,10 @@ Version: GnuPG %s
         );
     }
 
-    public function testPgpPrettyKey()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testPgpPrettyKey($pgp)
     {
         putenv('LANGUAGE=C');
 
@@ -329,7 +367,7 @@ Key ID:           0xBADEABD7
 Key Fingerprint:  966F4BA9569DE6F65E8253977CA74426BADEABD7
 
 ',
-            $this->_pgp->pgpPrettyKey($this->_getPublicKey())
+            $pgp->pgpPrettyKey($this->_getPublicKey())
         );
 
         $this->assertEquals(
@@ -345,24 +383,24 @@ Key ID:           0xBADEABD7
 Key Fingerprint:  966F4BA9569DE6F65E8253977CA74426BADEABD7
 
 ',
-            $this->_pgp->pgpPrettyKey($this->_getPrivateKey())
+            $pgp->pgpPrettyKey($this->_getPrivateKey())
         );
     }
 
     /**
      * @dataProvider pgpGetFingerprintsFromKeyProvider
      */
-    public function testPgpGetFingerprintsFromKey($expected, $key)
+    public function testPgpGetFingerprintsFromKey($pgp, $expected, $key)
     {
         $this->assertEquals(
             $expected,
-            $this->_pgp->getFingerprintsFromKey($key)
+            $pgp->getFingerprintsFromKey($key)
         );
     }
 
     public function pgpGetFingerprintsFromKeyProvider()
     {
-        return array(
+        $fingerprints = array(
             array(
                 array(
                     '0xBADEABD7' => '966F4BA9569DE6F65E8253977CA74426BADEABD7'
@@ -376,11 +414,21 @@ Key Fingerprint:  966F4BA9569DE6F65E8253977CA74426BADEABD7
                 $this->_getPrivateKey()
             )
         );
+        $args = $this->backendProvider();
+        foreach ($args as &$arg) {
+            foreach ($fingerprints as $fingerprint) {
+                $arg = array_merge($arg, $fingerprint);
+            }
+        }
+        return $args;
     }
 
-    public function pgpPublicKeyMIMEPart()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function pgpPublicKeyMIMEPart($pgp)
     {
-        $mime_part = $this->_pgp->publicKeyMIMEPart($this->_getPublicKey());
+        $mime_part = $pgp->publicKeyMIMEPart($this->_getPublicKey());
 
         $this->assertEquals(
             'application/pgp-keys',
@@ -416,11 +464,14 @@ umO5uT5yDcir3zwqUAxzBAkE4ACcCtGfb6usaTKnNXo+ZuLoHiOwIE4=
         );
     }
 
-    public function testPgpSign()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testPgpSign($pgp)
     {
         $clear = $this->_getFixture('clear.txt');
 
-        $out = $this->_pgp->encrypt($clear, array(
+        $out = $pgp->encrypt($clear, array(
             'passphrase' => 'Secret',
             'privkey' => $this->_getPrivateKey(),
             'pubkey' => $this->_getPublicKey(),
@@ -438,7 +489,7 @@ Version: GnuPG %s
             $out
         );
 
-        $out = $this->_pgp->encrypt($clear, array(
+        $out = $pgp->encrypt($clear, array(
             'passphrase' => 'Secret',
             'privkey' => $this->_getPrivateKey(),
             'pubkey' => $this->_getPublicKey(),
@@ -475,11 +526,14 @@ Version: GnuPG %s
         );
     }
 
-    public function testDecryptSignature()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testDecryptSignature($pgp)
     {
         date_default_timezone_set('GMT');
 
-        $out = $this->_pgp->decrypt(
+        $out = $pgp->decrypt(
             $this->_getFixture('clear.txt'),
             array(
                 'pubkey' => $this->_getPublicKey(),
@@ -490,7 +544,7 @@ Version: GnuPG %s
 
         $this->assertNotEmpty($out->result);
 
-        $out = $this->_pgp->decrypt(
+        $out = $pgp->decrypt(
             $this->_getFixture('pgp_signed.txt'),
             array(
                 'pubkey' => $this->_getPublicKey(),
@@ -500,7 +554,7 @@ Version: GnuPG %s
 
         $this->assertNotEmpty($out->result);
 
-        $out = $this->_pgp->decrypt(
+        $out = $pgp->decrypt(
             $this->_getFixture('pgp_signed2.txt'),
             array(
                 'pubkey' => $this->_getPublicKey(),
@@ -511,18 +565,27 @@ Version: GnuPG %s
         $this->assertNotEmpty($out->result);
     }
 
-    public function testVerifyPassphrase()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testVerifyPassphraseCorrect($pgp)
     {
         $this->assertTrue(
-            $this->_pgp->verifyPassphrase(
+            $pgp->verifyPassphrase(
                 $this->_getPublicKey(),
                 $this->_getPrivateKey(),
                 'Secret'
             )
         );
+    }
 
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testVerifyPassphraseIncorrect($pgp)
+    {
         $this->assertFalse(
-            $this->_pgp->verifyPassphrase(
+            $pgp->verifyPassphrase(
                 $this->_getPublicKey(),
                 $this->_getPrivateKey(),
                 'Wrong'
@@ -530,10 +593,13 @@ Version: GnuPG %s
         );
     }
 
-    public function testGetPublicKeyFromPrivateKey()
+    /**
+     * @dataProvider backendProvider
+     */
+    public function testGetPublicKeyFromPrivateKey($pgp)
     {
         $this->assertNotNull(
-            $this->_pgp->getPublicKeyFromPrivateKey($this->_getPrivateKey())
+            $pgp->getPublicKeyFromPrivateKey($this->_getPrivateKey())
         );
     }
 
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/PgpKeyserverTest.php b/Horde_Crypt-2.7.8/test/Horde/Crypt/PgpKeyserverTest.php
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/PgpKeyserverTest.php
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/PgpKeyserverTest.php
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/PgpParseTest.php b/Horde_Crypt-2.7.8/test/Horde/Crypt/PgpParseTest.php
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/PgpParseTest.php
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/PgpParseTest.php
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/SmimeTest.php b/Horde_Crypt-2.7.8/test/Horde/Crypt/SmimeTest.php
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/SmimeTest.php
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/SmimeTest.php
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/bootstrap.php b/Horde_Crypt-2.7.8/test/Horde/Crypt/bootstrap.php
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/bootstrap.php
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/bootstrap.php
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/conf.php.dist b/Horde_Crypt-2.7.8/test/Horde/Crypt/conf.php.dist
similarity index 60%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/conf.php.dist
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/conf.php.dist
index aec961a..b891ef0 100644
--- a/Horde_Crypt-2.7.5/test/Horde/Crypt/conf.php.dist
+++ b/Horde_Crypt-2.7.8/test/Horde/Crypt/conf.php.dist
@@ -1,2 +1,3 @@
 <?php
 $conf['gnupg'] = '/usr/bin/gpg';
+$conf['gnupg2'] = false;
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/bug_6601.asc b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/bug_6601.asc
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/bug_6601.asc
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/bug_6601.asc
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/clear.txt b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/clear.txt
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/clear.txt
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/clear.txt
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_encrypted.txt b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_encrypted.txt
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_encrypted.txt
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_encrypted.txt
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_encrypted_symmetric.txt b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_encrypted_symmetric.txt
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_encrypted_symmetric.txt
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_encrypted_symmetric.txt
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_private.asc b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_private.asc
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_private.asc
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_private.asc
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_public.asc b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_public.asc
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_public.asc
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_public.asc
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_signature.txt b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_signature.txt
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_signature.txt
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_signature.txt
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_signed.txt b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_signed.txt
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_signed.txt
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_signed.txt
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_signed2.txt b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_signed2.txt
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/pgp_signed2.txt
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/pgp_signed2.txt
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/smime_subjectAltName.pem b/Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/smime_subjectAltName.pem
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/fixtures/smime_subjectAltName.pem
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/fixtures/smime_subjectAltName.pem
diff --git a/Horde_Crypt-2.7.5/test/Horde/Crypt/phpunit.xml b/Horde_Crypt-2.7.8/test/Horde/Crypt/phpunit.xml
similarity index 100%
rename from Horde_Crypt-2.7.5/test/Horde/Crypt/phpunit.xml
rename to Horde_Crypt-2.7.8/test/Horde/Crypt/phpunit.xml
diff --git a/debian/changelog b/debian/changelog
index 9c4f720..c61e151 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,20 @@
+php-horde-crypt (2.7.8-1) unstable; urgency=medium
+
+  * New upstream version 2.7.8
+    - with GnuPG 2 support (incomplete)
+    - Remove 0001-Escape-user-provided-recipients-and-charset-data.patch, merged
+  * Add gnupg as a test dependency (Closes: #849151)
+  * Fix GnuPG 2 support (from https://github.com/horde/horde/pull/221)
+
+ -- Mathieu Parent <sathieu at debian.org>  Sat, 27 May 2017 22:14:43 +0200
+
+php-horde-crypt (2.7.5-2) unstable; urgency=medium
+
+  * Escape user provided recipients and charset data. Fixes CVE-2017-7413 and
+    CVE-2017-7414 (Closes: #859635)
+
+ -- Mathieu Parent <sathieu at debian.org>  Wed, 03 May 2017 07:15:32 +0200
+
 php-horde-crypt (2.7.5-1) unstable; urgency=medium
 
   * New upstream version 2.7.5
diff --git a/debian/patches/0001-Horde_Crypt-Fix-getFingerprintsFromKey-test-with-gpg.patch b/debian/patches/0001-Horde_Crypt-Fix-getFingerprintsFromKey-test-with-gpg.patch
new file mode 100644
index 0000000..9f93c23
--- /dev/null
+++ b/debian/patches/0001-Horde_Crypt-Fix-getFingerprintsFromKey-test-with-gpg.patch
@@ -0,0 +1,43 @@
+From a9e6ac7d33c06cd4500f95dd6004f7736d7340eb Mon Sep 17 00:00:00 2001
+From: Mathieu Parent <math.parent at gmail.com>
+Date: Thu, 18 May 2017 22:39:35 +0200
+Subject: [PATCH 1/2] Horde_Crypt: Fix getFingerprintsFromKey test with gpg
+ 2.1.18
+
+Using --with-colons and --fixed-list-mode ensure stable formating.
+---
+ Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
+index 2d71888ec0..5d80705eb6 100644
+--- a/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
++++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
+@@ -382,6 +382,8 @@ extends Horde_Crypt_Pgp_Backend
+             array(
+                 '--fingerprint',
+                 $keyring,
++                '--with-colons',
++                '--fixed-list-mode',
+             ),
+             'r',
+             null,
+@@ -397,10 +399,11 @@ extends Horde_Crypt_Pgp_Backend
+         $lines = explode("\n", $result->stdout);
+ 
+         foreach ($lines as $line) {
+-            if (preg_match('/pub\s+\w+\/(\w{8})/', $line, $matches)) {
+-                $keyid = '0x' . $matches[1];
+-            } elseif ($keyid && preg_match('/^\s+[\s\w]+=\s*([\w\s]+)$/m', $line, $matches)) {
+-                $fingerprints[$keyid] = str_replace(' ', '', $matches[1]);
++            $fields = explode(':', $line);
++            if ($fields[0] == 'pub') {
++                $keyid = '0x' . substr($fields[4], -8);
++            } elseif ($keyid && ($fields[0] == 'fpr')) {
++                $fingerprints[$keyid] = $fields[9];
+                 $keyid = null;
+             }
+         }
+-- 
+2.11.0
+
diff --git a/debian/patches/0002-Horde_Crypt-Fix-GetSignersKeyID-test-with-gpg-2.1.18.patch b/debian/patches/0002-Horde_Crypt-Fix-GetSignersKeyID-test-with-gpg-2.1.18.patch
new file mode 100644
index 0000000..45eb17c
--- /dev/null
+++ b/debian/patches/0002-Horde_Crypt-Fix-GetSignersKeyID-test-with-gpg-2.1.18.patch
@@ -0,0 +1,34 @@
+From de53721f027b135e3a43a0de0a0a3896d2bb249b Mon Sep 17 00:00:00 2001
+From: Mathieu Parent <math.parent at gmail.com>
+Date: Thu, 18 May 2017 22:56:41 +0200
+Subject: [PATCH 2/2] Horde_Crypt: Fix GetSignersKeyID test with gpg 2.1.18
+
+Output format has changed.
+---
+ Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
+index 5d80705eb6..9ec105cd66 100644
+--- a/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
++++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
+@@ -364,10 +364,16 @@ extends Horde_Crypt_Pgp_Backend
+             true
+         );
+ 
++        // GnuPG 1
+         if (preg_match('/gpg:\sSignature\smade.*ID\s+([A-F0-9]{8})\s+/', $result->stderr, $matches)) {
+             return $matches[1];
+         }
+ 
++        // GnuPG 2
++        if (preg_match('/gpg:\sSignature\smade.*using\s+\S+\s+key\s+([A-F0-9]{16})\s+/s', $result->stderr, $matches)) {
++            return substr($matches[1], -8);
++        }
++
+         throw new Horde_Crypt_Exception(_("Cannot read PGP key ID"));
+     }
+ 
+-- 
+2.11.0
+
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..9407700
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,2 @@
+0001-Horde_Crypt-Fix-getFingerprintsFromKey-test-with-gpg.patch
+0002-Horde_Crypt-Fix-GetSignersKeyID-test-with-gpg-2.1.18.patch
diff --git a/debian/tests/control b/debian/tests/control
index 7731959..7fd6289 100644
--- a/debian/tests/control
+++ b/debian/tests/control
@@ -1,3 +1,3 @@
 Tests: phpunit
 Restrictions: needs-recommends
-Depends: @, php-cli, php-horde-test
+Depends: @, php-cli, php-horde-test, gnupg
diff --git a/package.xml b/package.xml
index ad884c5..dec40ad 100644
--- a/package.xml
+++ b/package.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<package packagerversion="1.10.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+<package packagerversion="1.10.3" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
  <name>Horde_Crypt</name>
  <channel>pear.horde.org</channel>
  <summary>Horde Cryptography API</summary>
@@ -16,10 +16,10 @@
   <email>jan at horde.org</email>
   <active>yes</active>
  </lead>
- <date>2016-12-16</date>
- <time>16:57:15</time>
+ <date>2017-05-03</date>
+ <time>13:32:12</time>
  <version>
-  <release>2.7.5</release>
+  <release>2.7.8</release>
   <api>2.7.0</api>
  </version>
  <stability>
@@ -28,106 +28,107 @@
  </stability>
  <license uri="http://www.horde.org/licenses/lgpl21">LGPL-2.1</license>
  <notes>
-* [jan] Fix label for S/MIME Encrypted Key Usage attribute.
+* [jan] Detect unsupported GnuPG versions.
+* [jan] Fix detection of new GnuPG API (Remi Collet <remi at remirepo.net>, PR #220).
  </notes>
  <contents>
   <dir baseinstalldir="/" name="/">
    <file baseinstalldir="/" md5sum="321bf41f280cf805086dd5a720b37785" name="doc/Horde/Crypt/COPYING" role="doc" />
-   <file baseinstalldir="/" md5sum="2fa1d14e7a6c76ce493d045700db63ea" name="lib/Horde/Crypt/Pgp/Backend/Binary.php" role="php" />
-   <file baseinstalldir="/" md5sum="95f9719239468f925721b4da2e93a0e3" name="lib/Horde/Crypt/Pgp/Backend.php" role="php" />
-   <file baseinstalldir="/" md5sum="d05f247a567912e3e412f0ecc28d44cb" name="lib/Horde/Crypt/Pgp/Keyserver.php" role="php" />
-   <file baseinstalldir="/" md5sum="e92c09c2fad2d4b4a8790887a2c6bfaf" name="lib/Horde/Crypt/Pgp/Parse.php" role="php" />
-   <file baseinstalldir="/" md5sum="4c210bee685bad483fadd90cbea82f15" name="lib/Horde/Crypt/Exception.php" role="php" />
-   <file baseinstalldir="/" md5sum="43aa56fbae521a914689085de8db33a2" name="lib/Horde/Crypt/Pgp.php" role="php" />
-   <file baseinstalldir="/" md5sum="c231756068e522d90911107c4bcdb326" name="lib/Horde/Crypt/Smime.php" role="php" />
-   <file baseinstalldir="/" md5sum="0cb3b13d1fd98ef68bed46091cdea973" name="lib/Horde/Crypt/Translation.php" role="php">
+   <file baseinstalldir="/" md5sum="928ff5d0ff1626480cc7443e9f93a535" name="lib/Horde/Crypt/Pgp/Backend/Binary.php" role="php" />
+   <file baseinstalldir="/" md5sum="0c54f31669cce20eb2c789b2d336e5bd" name="lib/Horde/Crypt/Pgp/Backend.php" role="php" />
+   <file baseinstalldir="/" md5sum="729620a8ebc0e84b2e415239f6b0355c" name="lib/Horde/Crypt/Pgp/Keyserver.php" role="php" />
+   <file baseinstalldir="/" md5sum="787768310d1b8111142a426465c5196c" name="lib/Horde/Crypt/Pgp/Parse.php" role="php" />
+   <file baseinstalldir="/" md5sum="a0b8d77b280c859c13e677008728e1b0" name="lib/Horde/Crypt/Exception.php" role="php" />
+   <file baseinstalldir="/" md5sum="ed0e40588c69dab1bd9a73e2f1566ee1" name="lib/Horde/Crypt/Pgp.php" role="php" />
+   <file baseinstalldir="/" md5sum="fc8412134a115db2d5bb2b0d0383d5e2" name="lib/Horde/Crypt/Smime.php" role="php" />
+   <file baseinstalldir="/" md5sum="80ac434cfa2dc73cf157b0cbb9de6e94" name="lib/Horde/Crypt/Translation.php" role="php">
     <tasks:replace from="@data_dir@" to="data_dir" type="pear-config" />
    </file>
-   <file baseinstalldir="/" md5sum="f0dfed7158fc436632621d1e6a832c28" name="lib/Horde/Crypt.php" role="php" />
+   <file baseinstalldir="/" md5sum="f552f814bb63db07286fffa15c48a404" name="lib/Horde/Crypt.php" role="php" />
    <file baseinstalldir="/" md5sum="c1ece32ec41eb8e21264470af59b012e" name="locale/ar/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="159783c6ca9da27ec1fb6b6f343a2a5f" name="locale/ar/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="a6d0cda8c3d4e5b9a3204073c5be3165" name="locale/ar/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="c4822558dd9fe3fc766983b057430e45" name="locale/bg/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="c23ac1d31417192091f4e07010fc8502" name="locale/bg/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="ba3d4263c47f289c1bdaea6d48bb2bd5" name="locale/bg/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="cedd01e7b308ee6e695bfb839b81cd5c" name="locale/bs/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="72d4a7ea48101c585f20d844ad4deb70" name="locale/bs/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="8a5d9336e2fc4d2814bbc4deb65d5465" name="locale/bs/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="b6dbcad692d57dda6554d31b4a8dfd31" name="locale/ca/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="7cfe41ac69ba21ef0317c44245a401e6" name="locale/ca/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="626900b3547553f51761eed76b565423" name="locale/ca/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="a154f8a91b15a924dd8e5437b2ee1060" name="locale/cs/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="b321302ad198da4da698409efddb0e6d" name="locale/cs/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="775972e451924c6623495f0a31485939" name="locale/cs/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="81597a2bb118de29611d5b87cdacaffb" name="locale/da/LC_MESSAGES/Horde_Crypt.mo" role="data" />
    <file baseinstalldir="/" md5sum="9e2042505c80f037569a0558ab62da7c" name="locale/da/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="ccaa4035219679a1cc748ecb87d7ef34" name="locale/de/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="d981a920abfc520c1441ade6666da0f3" name="locale/de/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="29df57cad826347cd9ba38b32cdc6f48" name="locale/de/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="df040c38703aa9aa93950f7322a2e097" name="locale/el/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="cfa6c7c30c9fd6572060a3c5b21b6962" name="locale/el/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="a2300c1a72df5fb06a72dcb8a939244d" name="locale/el/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="84f77cdf7cb07970c021146139888358" name="locale/es/LC_MESSAGES/Horde_Crypt.mo" role="data" />
    <file baseinstalldir="/" md5sum="e772d51bbba74813883d9ca0ecc815f7" name="locale/es/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="203e6f007fe7e331494452a3a2059034" name="locale/et/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="9e02b413b129eb87b71a5d2666af1a83" name="locale/et/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="729e0c0a7c6451c549c81b6a39194ae1" name="locale/et/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="09b5dc1b37ebdacdaf17721717dad173" name="locale/eu/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="1c7ec7e25602ee2934f43198fdffdcbc" name="locale/eu/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="6a4b935ee5cfb84fb43727f55e760c02" name="locale/eu/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="c936725466075a9f77091c163c416e2d" name="locale/fa/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="0a0eec6160766f9c83ba87c198780bda" name="locale/fa/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="92763ec6920e8094bb6d300521e1e4f0" name="locale/fa/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="ebbf718fee5b20b6045a5fd31e45f693" name="locale/fi/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="377397d0bf4b577141fd53fb87137e5f" name="locale/fi/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="f864ad19ab4ef9f2e7ada2c7c43364a9" name="locale/fi/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="0c2577851f922f378694f53c68eadfcc" name="locale/fr/LC_MESSAGES/Horde_Crypt.mo" role="data" />
    <file baseinstalldir="/" md5sum="3bd0c432cc3abe1828cc997ab83f0982" name="locale/fr/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="c60a48afe3aaf13caae9983f12e3cf4b" name="locale/gl/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="a8c1484d315471d73d107929d33c14ce" name="locale/gl/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="beddf67ad563e65a8839509c41dcb329" name="locale/gl/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="a38121978f6655971d57384e9623e131" name="locale/he/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="f814f2c7cfeaa3909894faeb85f612ef" name="locale/he/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="cee3738f98604bf385f2b9ed6fa90943" name="locale/he/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="5a4b4d68149592d7e628be0e309dcefb" name="locale/hr/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="2e15c2f9474a94c75b623b88bb29cea3" name="locale/hr/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="c8a8a40a5e1686c7cc61cd79353f3162" name="locale/hr/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="58833c6c716616cee449ba88cba716db" name="locale/hu/LC_MESSAGES/Horde_Crypt.mo" role="data" />
    <file baseinstalldir="/" md5sum="9c32bd3c5ea363ab99b2e138446c8add" name="locale/hu/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="abe8c201fa304e3add7ad0896a7c8686" name="locale/id/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="21ba4b94eb5a0feab094155d129c1178" name="locale/id/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="5e37410c094f87740333bdff814e626b" name="locale/id/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="91e66c270077cbbf4ec21b429318bc6c" name="locale/is/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="1036ac173530779eca233ad2801fe62b" name="locale/is/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="4cb588babc67c87aca6606f74c8628a0" name="locale/is/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="bc5f98e62cb6020d70e4e145e0c7e033" name="locale/it/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="6bac1a1aa2445d75ffeb02fbbfa955b1" name="locale/it/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="0a66205379bf2ed5466077fc719ad5b4" name="locale/it/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="198b5c1441992bb34684335a827c36b4" name="locale/ja/LC_MESSAGES/Horde_Crypt.mo" role="data" />
    <file baseinstalldir="/" md5sum="2b12ab1d5cb69a895736d37ba821ffcd" name="locale/ja/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="0962bbc2c05e8466fdd88ba8a2c794c0" name="locale/km/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="b82240f47cdfd6b113fd012f76137293" name="locale/km/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="104cf1f24fd3eba8e3b6e461fffdf952" name="locale/km/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="6d4fae28c4e31c889ac39ecdaef0dab3" name="locale/ko/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="37d339f8142184b6948962b56a1b440c" name="locale/ko/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="18470c8be05da3fc0e7f937cd0d23ec5" name="locale/ko/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="1719207f65582e41a8ff6ebb4725a5f3" name="locale/lt/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="324d98c11701db91f26c11e5503fce47" name="locale/lt/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="19087145750dfd83e1df83db85dde2a0" name="locale/lt/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="35d548167583bfa3a38e821e8da58a03" name="locale/lv/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="e9679ea6f87b3167ae1082d4598e0ad0" name="locale/lv/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="dc4a3464bf7ee5ba2ae2457f3d39489e" name="locale/lv/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="ae2011b033fe569deccae28da585f776" name="locale/mk/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="978cee74fce080be5e48c0c622b007ec" name="locale/mk/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="74e0475e88c48c118ec3c867565e7c6b" name="locale/mk/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="865a0b7ce1d74251f792ce2512bbf53d" name="locale/nb/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="50db4fa40abc5a1b2e76519c84e137f9" name="locale/nb/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="dda567e6a58fdc412493d76bebd76bf8" name="locale/nb/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="02709616eaa93c5027df2a2ad60d6aa5" name="locale/nl/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="bf44cd3ccf0edefdca0f784fc792344d" name="locale/nl/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="cd0254cca4ee64ed3d054a9b642fd087" name="locale/nl/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="fc2be186c609ee17afd455f254b4466c" name="locale/nn/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="1444a87c66de8413616be80f1deefc03" name="locale/nn/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="63316375949036de174677bf249f30fa" name="locale/nn/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="def5345bd96d8c1974cc577b784a2e93" name="locale/pl/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="068362e66da2f4432e19aebf8561253d" name="locale/pl/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="fd6cb1e01296b9b356b4b01307ae5dee" name="locale/pl/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="d0a4adf36ab7f3ebb3f2657e1ad9fe7d" name="locale/pt/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="1961d5b31d737862691d7a5f5714c87c" name="locale/pt/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="511e0e66406f497714fa02b7145d54a1" name="locale/pt/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="1276ffe6d4fab1394140fa4ef3112bfa" name="locale/pt_BR/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="7b2f31d72c41d29c8b69fe3daeef5a06" name="locale/pt_BR/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="0310fa8f4a3a031584e32c860b64aebe" name="locale/pt_BR/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="78038e5f26ced13e0a44c7eabfc9f7ba" name="locale/ro/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="8e4149a8abcdc300d24da01e9ec84497" name="locale/ro/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="cb477a1f41ebb5cd1b5b79dd78c37214" name="locale/ro/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="ce5b109f67a954c2cc031d142d6afd6c" name="locale/ru/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="56c1eb77de679c64011153a1d1aa2de2" name="locale/ru/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="a662853d17a3ccfd8c67eecfc5d97daa" name="locale/ru/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="a19ded1020d704a8295e83bef811b854" name="locale/sk/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="519e13a6d6e467cc18dd4b1abdcf769a" name="locale/sk/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="b67d95735b3bbad36cee5ce65a8cf97e" name="locale/sk/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="f2bb9698e90c7b0964854559d8cfc265" name="locale/sl/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="d0022c52eb40bd0f0cf555ea9849b0c2" name="locale/sl/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="3fc3274a412503190d6c2c2e21f31757" name="locale/sl/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="6cb784c16056c8feab4ba502fd4b14e8" name="locale/sv/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="3c7c4c8f4fc806399290e9f01e9ecb53" name="locale/sv/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="5dc897effe8d323e99a0e11f2b4dec36" name="locale/sv/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="9d2705b40fcf135c2786f9286f012945" name="locale/tr/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="3c31f23d9da8b923a1afa71cf62b853c" name="locale/tr/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="c37f3568fe08c5dacbbad9e346c4b089" name="locale/tr/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="4c8a3b41d835fd99affff35623e4f47f" name="locale/uk/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="9b9c6094f3dae02df50eb6b5bfeda5c6" name="locale/uk/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="2277db1ebe500344fcf2d3609c410a66" name="locale/uk/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="d6fef12b972ac8bba15dbadbe4d24e60" name="locale/zh_CN/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="123e98ba19efe6ae76448591bb100e72" name="locale/zh_CN/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="c6bc56fb2ee2ece83b386503ea5d493d" name="locale/zh_CN/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="cabdd64a674d02d96501e1ac588c30e8" name="locale/zh_TW/LC_MESSAGES/Horde_Crypt.mo" role="data" />
-   <file baseinstalldir="/" md5sum="2d7a255c91fcc7dbab861d176986bec6" name="locale/zh_TW/LC_MESSAGES/Horde_Crypt.po" role="data" />
+   <file baseinstalldir="/" md5sum="e6256ef8abb5c3655063653bf6047bbd" name="locale/zh_TW/LC_MESSAGES/Horde_Crypt.po" role="data" />
    <file baseinstalldir="/" md5sum="437c5ec0af228d856e4f2fdfe9601ea6" name="locale/Horde_Crypt.pot" role="data" />
    <file baseinstalldir="/" md5sum="9b9f80ab5004e863e896d6b07080356a" name="test/Horde/Crypt/fixtures/bug_6601.asc" role="test" />
    <file baseinstalldir="/" md5sum="d8b74210c071777add8eafc9ce001094" name="test/Horde/Crypt/fixtures/clear.txt" role="test" />
@@ -139,11 +140,11 @@
    <file baseinstalldir="/" md5sum="d2fc2b5297b2fd24170e2edc254905b3" name="test/Horde/Crypt/fixtures/pgp_signed.txt" role="test" />
    <file baseinstalldir="/" md5sum="40a005225e2f7c4d7208305345507cd5" name="test/Horde/Crypt/fixtures/pgp_signed2.txt" role="test" />
    <file baseinstalldir="/" md5sum="707933f201a7b2a724ae2669044f7ac1" name="test/Horde/Crypt/fixtures/smime_subjectAltName.pem" role="test" />
-   <file baseinstalldir="/" md5sum="321fdcbd2122c6663478ff1e3372971a" name="test/Horde/Crypt/Pgp/BinaryTest.php" role="test" />
-   <file baseinstalldir="/" md5sum="bba8842eb7e3e94665292af42e86d3a6" name="test/Horde/Crypt/Pgp/TestBase.php" role="test" />
+   <file baseinstalldir="/" md5sum="75bc07f712d83b208b727d8e196a788e" name="test/Horde/Crypt/Pgp/BinaryTest.php" role="test" />
+   <file baseinstalldir="/" md5sum="157ed10914507df1174997065aec1fbd" name="test/Horde/Crypt/Pgp/TestBase.php" role="test" />
    <file baseinstalldir="/" md5sum="8bc9518b9c0576806c82d9413489d099" name="test/Horde/Crypt/AllTests.php" role="test" />
    <file baseinstalldir="/" md5sum="0a5018f0726d4673850fece3ad4d72c0" name="test/Horde/Crypt/bootstrap.php" role="test" />
-   <file baseinstalldir="/" md5sum="50dafb62b9148a337d718b904eb2a97d" name="test/Horde/Crypt/conf.php.dist" role="test" />
+   <file baseinstalldir="/" md5sum="88b797d327dc637d336fc72fb142182a" name="test/Horde/Crypt/conf.php.dist" role="test" />
    <file baseinstalldir="/" md5sum="f08fcbae617e5b518f85529c1b5e07ba" name="test/Horde/Crypt/PgpKeyserverTest.php" role="test" />
    <file baseinstalldir="/" md5sum="3cc1f7d147f5c70561ef8967bd67b87b" name="test/Horde/Crypt/PgpParseTest.php" role="test" />
    <file baseinstalldir="/" md5sum="090ce475b8a9773a240e954334988c75" name="test/Horde/Crypt/phpunit.xml" role="test" />
@@ -1073,5 +1074,52 @@ Initial release as a PEAR package
 * [jan] Fix label for S/MIME Encrypted Key Usage attribute.
    </notes>
   </release>
+  <release>
+   <version>
+    <release>2.7.6</release>
+    <api>2.7.0</api>
+   </version>
+   <stability>
+    <release>stable</release>
+    <api>stable</api>
+   </stability>
+   <date>2017-04-04</date>
+   <license uri="http://www.horde.org/licenses/lgpl21">LGPL-2.1</license>
+   <notes>
+* [mjr] SECURITY: Fix remote code execution vulnerability (CVE-2017-7413, and CVE-2017-7414).
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>2.7.7</release>
+    <api>2.7.0</api>
+   </version>
+   <stability>
+    <release>stable</release>
+    <api>stable</api>
+   </stability>
+   <date>2017-05-03</date>
+   <license uri="http://www.horde.org/licenses/lgpl21">LGPL-2.1</license>
+   <notes>
+* [mjr] Correctly specify either sha-1 or sha-256 when signing a smime message.
+* [jan] Support GnuPG 2.1+ too (Bug #14014).
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>2.7.8</release>
+    <api>2.7.0</api>
+   </version>
+   <stability>
+    <release>stable</release>
+    <api>stable</api>
+   </stability>
+   <date>2017-05-03</date>
+   <license uri="http://www.horde.org/licenses/lgpl21">LGPL-2.1</license>
+   <notes>
+* [jan] Detect unsupported GnuPG versions.
+* [jan] Fix detection of new GnuPG API (Remi Collet <remi at remirepo.net>, PR #220).
+   </notes>
+  </release>
  </changelog>
 </package>
-------------- next part --------------
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Backend/Binary.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
similarity index 95%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Backend/Binary.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
index 0b786ff..2d71888 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Backend/Binary.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
@@ -77,6 +77,26 @@ extends Horde_Crypt_Pgp_Backend
             '--yes',
             '--homedir ' . $this->_tempdir
         );
+
+        /* GnuPG 2 requires specifying the pinentry-mode. */
+        $result = $this->_callGpg(array('--version'), 'r');
+        if (preg_match('/gpg \(GnuPG\) (\d+\.\d+\.\d+)/', $result->stdout, $version) &&
+            version_compare($version[1], '2.1.0', '>')) {
+            if (version_compare($version[1], '2.1.12', '>=')) {
+                $this->_gnupg[] = '--pinentry-mode loopback';
+                file_put_contents(
+                    $this->_tempdir . '/gpg-agent.conf',
+                    'allow-loopback-pinentry'
+                );
+            } else {
+                throw new Horde_Crypt_Exception(
+                    sprintf(
+                        Horde_Crypt_Translation::t("Unsupported GnuPG version %s detected. Only versions < 2.1 and > 2.1.11 are supported."),
+                        $version[1]
+                    )
+                );
+            }
+        }
     }
 
     /**
@@ -433,7 +453,7 @@ extends Horde_Crypt_Pgp_Backend
             $cmdline[] = $keyring;
             $cmdline[] = '--encrypt';
             foreach (array_keys($params['recips']) as $val) {
-                $cmdline[] = '--recipient ' . $val;
+                $cmdline[] = '--recipient ' . escapeshellarg($val);
             }
         } else {
             $cmdline[] = '--symmetric';
@@ -552,7 +572,7 @@ extends Horde_Crypt_Pgp_Backend
             '--armor',
             '--always-trust',
             '--batch',
-            '--charset ' . (isset($params['charset']) ? $params['charset'] : 'UTF-8'),
+            '--charset ' . (isset($params['charset']) ? escapeshellarg($params['charset']) : 'UTF-8'),
             $keyring,
             '--verify'
         );
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Parse.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Parse.php
similarity index 95%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Parse.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Parse.php
index 518b3e7..9cbac24 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Pgp/Parse.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Parse.php
@@ -159,7 +159,7 @@ class Horde_Crypt_Pgp_Parse
         $new_part = new Horde_Mime_Part();
         $new_part->setType('multipart/mixed');
 
-        while (list(,$val) = each($parts)) {
+        for ($val = reset($parts); $val; $val = next($parts)) {
             switch ($val['type']) {
             case self::ARMOR_TEXT:
                 $part = new Horde_Mime_Part();
@@ -198,7 +198,7 @@ class Horde_Crypt_Pgp_Parse
                 break;
 
             case self::ARMOR_SIGNED_MESSAGE:
-                if ((list(,$sig) = each($parts)) &&
+                if (($sig = next($parts)) &&
                     ($sig['type'] == self::ARMOR_SIGNATURE)) {
                     $part = new Horde_Mime_Part();
                     $part->setType('multipart/signed');
@@ -223,8 +223,6 @@ class Horde_Crypt_Pgp_Parse
                     $part->addPart($part1);
                     $part->addPart($part2);
                     $new_part->addPart($part);
-
-                    next($parts);
                 }
             }
         }
diff --git a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Smime.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Smime.php
similarity index 98%
rename from Horde_Crypt-2.7.5/lib/Horde/Crypt/Smime.php
rename to Horde_Crypt-2.7.8/lib/Horde/Crypt/Smime.php
index cb8455d..f40a6dd 100644
--- a/Horde_Crypt-2.7.5/lib/Horde/Crypt/Smime.php
+++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Smime.php
@@ -235,8 +244,9 @@ class Horde_Crypt_Smime extends Horde_Crypt
             'protocol',
             'application/pkcs7-signature'
         );
-        // Per RFC 5751 [3.4.3.2], 'sha1' has been deprecated for 'sha-1'.
-        $smime_part->setContentTypeParameter('micalg', 'sha-1');
+        $smime_part->setContentTypeParameter(
+            'micalg', $mime_message->getContentTypeParameter('micalg')
+        );
         $smime_part->addPart($mime_part);
         $smime_part->addPart($smime_sign);
 
diff --git a/debian/changelog b/debian/changelog
index 9c4f720..c61e151 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,20 @@
+php-horde-crypt (2.7.8-1) unstable; urgency=medium
+
+  * New upstream version 2.7.8
+    - with GnuPG 2 support (incomplete)
+    - Remove 0001-Escape-user-provided-recipients-and-charset-data.patch, merged
+  * Add gnupg as a test dependency (Closes: #849151)
+  * Fix GnuPG 2 support (from https://github.com/horde/horde/pull/221)
+
+ -- Mathieu Parent <sathieu at debian.org>  Sat, 27 May 2017 22:14:43 +0200
+
+php-horde-crypt (2.7.5-2) unstable; urgency=medium
+
+  * Escape user provided recipients and charset data. Fixes CVE-2017-7413 and
+    CVE-2017-7414 (Closes: #859635)
+
+ -- Mathieu Parent <sathieu at debian.org>  Wed, 03 May 2017 07:15:32 +0200
+
 php-horde-crypt (2.7.5-1) unstable; urgency=medium
 
   * New upstream version 2.7.5
diff --git a/debian/patches/0001-Horde_Crypt-Fix-getFingerprintsFromKey-test-with-gpg.patch b/debian/patches/0001-Horde_Crypt-Fix-getFingerprintsFromKey-test-with-gpg.patch
new file mode 100644
index 0000000..9f93c23
--- /dev/null
+++ b/debian/patches/0001-Horde_Crypt-Fix-getFingerprintsFromKey-test-with-gpg.patch
@@ -0,0 +1,43 @@
+From a9e6ac7d33c06cd4500f95dd6004f7736d7340eb Mon Sep 17 00:00:00 2001
+From: Mathieu Parent <math.parent at gmail.com>
+Date: Thu, 18 May 2017 22:39:35 +0200
+Subject: [PATCH 1/2] Horde_Crypt: Fix getFingerprintsFromKey test with gpg
+ 2.1.18
+
+Using --with-colons and --fixed-list-mode ensure stable formating.
+---
+ Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
+index 2d71888ec0..5d80705eb6 100644
+--- a/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
++++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
+@@ -382,6 +382,8 @@ extends Horde_Crypt_Pgp_Backend
+             array(
+                 '--fingerprint',
+                 $keyring,
++                '--with-colons',
++                '--fixed-list-mode',
+             ),
+             'r',
+             null,
+@@ -397,10 +399,11 @@ extends Horde_Crypt_Pgp_Backend
+         $lines = explode("\n", $result->stdout);
+ 
+         foreach ($lines as $line) {
+-            if (preg_match('/pub\s+\w+\/(\w{8})/', $line, $matches)) {
+-                $keyid = '0x' . $matches[1];
+-            } elseif ($keyid && preg_match('/^\s+[\s\w]+=\s*([\w\s]+)$/m', $line, $matches)) {
+-                $fingerprints[$keyid] = str_replace(' ', '', $matches[1]);
++            $fields = explode(':', $line);
++            if ($fields[0] == 'pub') {
++                $keyid = '0x' . substr($fields[4], -8);
++            } elseif ($keyid && ($fields[0] == 'fpr')) {
++                $fingerprints[$keyid] = $fields[9];
+                 $keyid = null;
+             }
+         }
+-- 
+2.11.0
+
diff --git a/debian/patches/0002-Horde_Crypt-Fix-GetSignersKeyID-test-with-gpg-2.1.18.patch b/debian/patches/0002-Horde_Crypt-Fix-GetSignersKeyID-test-with-gpg-2.1.18.patch
new file mode 100644
index 0000000..45eb17c
--- /dev/null
+++ b/debian/patches/0002-Horde_Crypt-Fix-GetSignersKeyID-test-with-gpg-2.1.18.patch
@@ -0,0 +1,34 @@
+From de53721f027b135e3a43a0de0a0a3896d2bb249b Mon Sep 17 00:00:00 2001
+From: Mathieu Parent <math.parent at gmail.com>
+Date: Thu, 18 May 2017 22:56:41 +0200
+Subject: [PATCH 2/2] Horde_Crypt: Fix GetSignersKeyID test with gpg 2.1.18
+
+Output format has changed.
+---
+ Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
+index 5d80705eb6..9ec105cd66 100644
+--- a/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
++++ b/Horde_Crypt-2.7.8/lib/Horde/Crypt/Pgp/Backend/Binary.php
+@@ -364,10 +364,16 @@ extends Horde_Crypt_Pgp_Backend
+             true
+         );
+ 
++        // GnuPG 1
+         if (preg_match('/gpg:\sSignature\smade.*ID\s+([A-F0-9]{8})\s+/', $result->stderr, $matches)) {
+             return $matches[1];
+         }
+ 
++        // GnuPG 2
++        if (preg_match('/gpg:\sSignature\smade.*using\s+\S+\s+key\s+([A-F0-9]{16})\s+/s', $result->stderr, $matches)) {
++            return substr($matches[1], -8);
++        }
++
+         throw new Horde_Crypt_Exception(_("Cannot read PGP key ID"));
+     }
+ 
+-- 
+2.11.0
+
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..9407700
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,2 @@
+0001-Horde_Crypt-Fix-getFingerprintsFromKey-test-with-gpg.patch
+0002-Horde_Crypt-Fix-GetSignersKeyID-test-with-gpg-2.1.18.patch
diff --git a/debian/tests/control b/debian/tests/control
index 7731959..7fd6289 100644
--- a/debian/tests/control
+++ b/debian/tests/control
@@ -1,3 +1,3 @@
 Tests: phpunit
 Restrictions: needs-recommends
-Depends: @, php-cli, php-horde-test
+Depends: @, php-cli, php-horde-test, gnupg
diff --git a/package.xml b/package.xml
index ad884c5..dec40ad 100644
--- a/package.xml
+++ b/package.xml
@@ -16,10 +16,10 @@
   <email>jan at horde.org</email>
   <active>yes</active>
  </lead>
- <date>2016-12-16</date>
- <time>16:57:15</time>
+ <date>2017-05-03</date>
+ <time>13:32:12</time>
  <version>
-  <release>2.7.5</release>
+  <release>2.7.8</release>
   <api>2.7.0</api>
  </version>
  <stability>
@@ -1073,5 +1074,52 @@ Initial release as a PEAR package
 * [jan] Fix label for S/MIME Encrypted Key Usage attribute.
    </notes>
   </release>
+  <release>
+   <version>
+    <release>2.7.6</release>
+    <api>2.7.0</api>
+   </version>
+   <stability>
+    <release>stable</release>
+    <api>stable</api>
+   </stability>
+   <date>2017-04-04</date>
+   <license uri="http://www.horde.org/licenses/lgpl21">LGPL-2.1</license>
+   <notes>
+* [mjr] SECURITY: Fix remote code execution vulnerability (CVE-2017-7413, and CVE-2017-7414).
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>2.7.7</release>
+    <api>2.7.0</api>
+   </version>
+   <stability>
+    <release>stable</release>
+    <api>stable</api>
+   </stability>
+   <date>2017-05-03</date>
+   <license uri="http://www.horde.org/licenses/lgpl21">LGPL-2.1</license>
+   <notes>
+* [mjr] Correctly specify either sha-1 or sha-256 when signing a smime message.
+* [jan] Support GnuPG 2.1+ too (Bug #14014).
+   </notes>
+  </release>
+  <release>
+   <version>
+    <release>2.7.8</release>
+    <api>2.7.0</api>
+   </version>
+   <stability>
+    <release>stable</release>
+    <api>stable</api>
+   </stability>
+   <date>2017-05-03</date>
+   <license uri="http://www.horde.org/licenses/lgpl21">LGPL-2.1</license>
+   <notes>
+* [jan] Detect unsupported GnuPG versions.
+* [jan] Fix detection of new GnuPG API (Remi Collet <remi at remirepo.net>, PR #220).
+   </notes>
+  </release>
  </changelog>
 </package>


More information about the pkg-horde-hackers mailing list