Hello community,

here is the log from the commit of package enigmail for openSUSE:Factory 
checked in at 2018-04-04 11:08:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/enigmail (Old)
 and      /work/SRC/openSUSE:Factory/.enigmail.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "enigmail"

Wed Apr  4 11:08:42 2018 rev:21 rq:593311 version:2.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/enigmail/enigmail.changes        2018-03-28 
10:30:49.894232083 +0200
+++ /work/SRC/openSUSE:Factory/.enigmail.new/enigmail.changes   2018-04-04 
11:09:11.171847087 +0200
@@ -1,0 +2,10 @@
+Tue Apr  3 16:28:50 UTC 2018 - [email protected]
+
+- enigmail 2.0.1, addressing several issues found in 2.0:
+  * S/MIME signing/encryption not working correctly, if Enigmail
+    is not enabled for an account
+  * Emails fail to decrypt if the sender address contains brackets
+  * Autocrypt-headers may flip manually created per-recipient rules
+  * The key manager does not load if no key on the keyring
+
+-------------------------------------------------------------------

Old:
----
  enigmail-2.0.tar.gz
  enigmail-2.0.tar.gz.asc

New:
----
  enigmail-2.0.1.tar.gz
  enigmail-2.0.1.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ enigmail.spec ++++++
--- /var/tmp/diff_new_pack.gYohI6/_old  2018-04-04 11:09:12.899784468 +0200
+++ /var/tmp/diff_new_pack.gYohI6/_new  2018-04-04 11:09:12.903784323 +0200
@@ -18,7 +18,7 @@
 
 
 Name:           enigmail
-Version:        2.0
+Version:        2.0.1
 Release:        0
 Summary:        OpenPGP addon for Thunderbird and SeaMonkey
 License:        MPL-2.0

++++++ enigmail-2.0.tar.gz -> enigmail-2.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/Makefile new/enigmail/Makefile
--- old/enigmail/Makefile       2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/Makefile       2018-04-02 13:33:37.000000000 +0200
@@ -3,7 +3,7 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 XPI_MODULE     = enigmail
-XPI_MODULE_VERS = 2.0
+XPI_MODULE_VERS = 2.0.1
 
 DEPTH          = .
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/configure new/enigmail/configure
--- old/enigmail/configure      2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/configure      2018-04-02 13:33:37.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for enigmail 2.0.
+# Generated by GNU Autoconf 2.69 for enigmail 2.0.1.
 #
 # Report bugs to <https://www.enigmail.net>.
 #
@@ -579,8 +579,8 @@
 # Identity of this package.
 PACKAGE_NAME='enigmail'
 PACKAGE_TARNAME='enigmail'
-PACKAGE_VERSION='2.0'
-PACKAGE_STRING='enigmail 2.0'
+PACKAGE_VERSION='2.0.1'
+PACKAGE_STRING='enigmail 2.0.1'
 PACKAGE_BUGREPORT='https://www.enigmail.net'
 PACKAGE_URL=''
 
@@ -1195,7 +1195,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures enigmail 2.0 to adapt to many kinds of systems.
+\`configure' configures enigmail 2.0.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1261,7 +1261,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of enigmail 2.0:";;
+     short | recursive ) echo "Configuration of enigmail 2.0.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1343,7 +1343,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-enigmail configure 2.0
+enigmail configure 2.0.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1360,7 +1360,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by enigmail $as_me 2.0, which was
+It was created by enigmail $as_me 2.0.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/de/enigmail.properties 
new/enigmail/lang/de/enigmail.properties
--- old/enigmail/lang/de/enigmail.properties    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/de/enigmail.properties    2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Unterstützung für Autocrypt
 upgradeInfo.autocrypt.desc=Enigmail unterstützt nun <a 
href="https://autocrypt.org/";>Autocrypt</a>, einen neuen Standard zur 
Verteilung von Schlüsseln als Teil der gesendeten Nachrichten. Enigmail 
importiert automatisch Schlüssel aus Autocrypt-kompatiblen Nachrichten, so dass 
im Laufe der Zeit immer mehr E-Mails verschlüsselt werden können.
 upgradeInfo.pEp.title=Neuer p≡p Junior-Modus (Pretty Easy Privacy)
-upgradeInfo.pEp.desc=Enigmail enthält jetzt einen <a 
href="https://pep-project.org/";>p≡p</a> Junior-Modus. Derzeit müssen Sie dazu 
p≡p manuell installieren; dies wird sich in einer zukünftigen Version ändern. 
Der p≡p Junior-Modus ermöglicht es Ihnen, die OpenPGP-Verschlüsselung so 
transparent wie möglich zu nutzen; Sie müssen sich nicht mehr um die 
Schlüsselverwaltung und die Synchronisation von Schlüsseln zwischen Geräten 
kümmern.
+upgradeInfo.pEp.desc=Enigmail enthält jetzt einen <a 
href="https://pep-project.org/";>p≡p</a> Junior-Modus. Der p≡p Junior-Modus 
ermöglicht es Ihnen, die OpenPGP-Verschlüsselung so transparent wie möglich zu 
nutzen; Sie müssen sich nicht mehr um die Schlüsselverwaltung und die 
Synchronisation von Schlüsseln zwischen Geräten kümmern.
 upgradeInfo.bottom.desc=Bitte beachten Sie <a 
href="https://enigmail.net/home/docu.php";>unsere Dokumentation</a>, um Hilfe 
zur Verwendung von Enigmail zu erhalten.
 
 pep.missingGnuPG=Für die Verwendung von Enigmail/p≡p wird GnuPG benötigt. Da 
wir es nicht finden konnten, schlagen wir vor, es für Sie herunterzuladen und 
zu installieren.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/es-ES/enigmail.properties 
new/enigmail/lang/es-ES/enigmail.properties
--- old/enigmail/lang/es-ES/enigmail.properties 2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/es-ES/enigmail.properties 2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Soporte para Autocrypt
 upgradeInfo.autocrypt.desc=Enigmail ahora soporta <a 
href="https://autocrypt.org/";>Autocrypt</a>, un nuevo estándar para distribuir 
claves como parte de mensajes enviados. Enigmail importa claves automáticamente 
desde mensajes compatibles con Autocrypt, de forma que con el tiempo se pueden 
cifrar cada vez más correos electrónicos.
 upgradeInfo.pEp.title=Nuevo Modo Junior de p≡p (pretty Easy privacy)
-upgradeInfo.pEp.desc=Enigmail ahora contiene un Modo Junior de <a 
href="https://pep-project.org/";>p≡p</a>. En la actualidad necesita instalar p≡p 
manualmente para este propósito; esto cambiará en una futura versión. El Modo 
Junior de p≡p le permite usar cifrado OpenPGP de la forma más transparente 
posible; no tendrá que atender la administración de claves y la sincronización 
de claves entre dispositivos nunca más.
+upgradeInfo.pEp.desc=Enigmail ahora contiene un Modo Junior de <a 
href="https://pep-project.org/";>p≡p</a>. El Modo Junior de p≡p le permite usar 
cifrado OpenPGP de la forma más transparente posible; no tendrá que atender la 
administración de claves y la sincronización de claves entre dispositivos nunca 
más.
 upgradeInfo.bottom.desc=Por favor, visite <a 
href="https://enigmail.net/home/docu.php";>nuestra documentación</a> para ayuda 
en el uso de Enigmail.
 
 pep.missingGnuPG=Para usar Enigmail/p≡p, se requiere GnuPG. Como no pudimos 
encontrarlo, sugerimos descargarlo e instalarlo para usted.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/fr/enigmail.dtd 
new/enigmail/lang/fr/enigmail.dtd
--- old/enigmail/lang/fr/enigmail.dtd   2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/lang/fr/enigmail.dtd   2018-04-02 13:33:37.000000000 +0200
@@ -725,7 +725,7 @@
 <!ENTITY enigmail.setupWiz.pgKeyCreate.subtitle      "Créer une nouvelle 
biclé">
 <!ENTITY enigmail.setupWiz.pgKeyCreate.descTwoKeys   "Cette boîte de dialogue 
créera deux clés :">
 <!ENTITY enigmail.setupWiz.pgKeyCreate.descPub       "Votre <html:b>clé 
publique</html:b> permet <html:b>aux autres</html:b> de vous envoyer des 
courriels chiffrés. Vous pouvez la distribuer à tout le monde.">
-<!ENTITY enigmail.setupWiz.pgKeyCreate.descSec1      "Votre <html:b>clé 
privée</html:b><html:b> <html:b>vous</html:b> permet de déchiffrer ces 
courriels et d’envoyer des courriels signés. Vous ne devriez la donner à 
personne.">
+<!ENTITY enigmail.setupWiz.pgKeyCreate.descSec1      "Votre <html:b>clé 
privée</html:b> <html:b>vous</html:b> permet de déchiffrer ces courriels et 
d’envoyer des courriels signés. Vous ne devriez la donner à personne.">
 <!ENTITY enigmail.setupWiz.pgKeyCreate.descSec2      "Votre <html:b>clé 
privée</html:b> <html:b>vous</html:b> permet de déchiffrer ces courriels et 
d’envoyer des courriels signés.
 Vous ne devriez la donner à personne.
 Pour protéger votre clé privée, vous serez invité à saisir une phrase de passe 
dans les deux boîtes de dialogue suivantes.">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/fr/enigmail.properties 
new/enigmail/lang/fr/enigmail.properties
--- old/enigmail/lang/fr/enigmail.properties    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/fr/enigmail.properties    2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Prise en charge d’Autocrypt
 upgradeInfo.autocrypt.desc=Enigmail prend désormais en charge <a 
href="https://autocrypt.org/";>Autocrypt</a>, une nouvelle norme pour distribuer 
des clés comme faisant partie des messages envoyés. Enigmail importe 
automatiquement les clés des messages conformes à Autocrypt, permettant ainsi 
de chiffrer de plus en plus de courriels avec le temps.
 upgradeInfo.pEp.title=Nouveau mode p≡p junior (confidentialité plutôt facile 
[Pretty Easy Privacy]).
-upgradeInfo.pEp.desc=Enigmail contient désormais un mode <a 
href="https://pep-project.org/";>p≡p</a> junior. Vous devez actuellement 
installer p≡p pour pouvoir l’utiliser, mais cela changera dans une version 
future. Le mode p≡p junior vous permet d’utiliser le chiffrement OpenPGP de 
manière aussi transparente que possible ; vous n’avez plus à vous soucier de la 
gestion des clés ni de leurs synchronisations entre vos appareils.
+upgradeInfo.pEp.desc=Enigmail contient désormais un mode <a 
href="https://pep-project.org/";>p≡p</a> junior. Le mode p≡p junior vous permet 
d’utiliser le chiffrement OpenPGP de manière aussi transparente que possible ; 
vous n’avez plus à vous soucier de la gestion des clés ni de leurs 
synchronisations entre vos appareils.
 upgradeInfo.bottom.desc=Veuillez consulter <a 
href="https://enigmail.net/home/docu.php";>notre documentation</a> pour obtenir 
de l’aide sur l’utilisation d’Enigmail.
 
 pep.missingGnuPG=Afin d’utiliser Enigmail ou p≡p, GnuPG est exigé. Comme nous 
ne l’avons pas trouvé, nous vous suggérons de le télécharger et de l’installer 
pour vous.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/gd/enigmail.properties 
new/enigmail/lang/gd/enigmail.properties
--- old/enigmail/lang/gd/enigmail.properties    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/gd/enigmail.properties    2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Taic ri Autocrypt
 upgradeInfo.autocrypt.desc=Cuiridh Enigmail taic ri <a 
href="https://autocrypt.org/";>Autocrypt</a> a-nis, seo stannard ùr a chum 
sgaoileadh iuchraichean mar phàirt de theachdaireachdan a thèid a chur. 
Ion-phortaichidh Enigmail iuchraichean o theachdaireachdan a ghèilleas ri 
Autocrypt gu fèin-obrachail ach an gabh barrachd phost-d a chrioptachadh san àm 
ri teachd.
 upgradeInfo.pEp.title=Modh p≡p furasta ùr (Pretty Easy Privacy)
-upgradeInfo.pEp.desc=Tha modh furasta <a 
href="https://pep-project.org/";>p≡p</a> aig Enigmail a-nis. Feumaidh tu p≡p a 
stàladh a làimh aig an àm seo; tha sinn ag amas piseach a chur air sin san àm 
ri teachd. Leigidh am modh furasta p≡p leat crioptachadh OpenPGP a chleachdadh 
air dòigh as soilleire; cha leig thu leas bodraigeadh le stiùireadh no 
sioncronachadh nan iuchraichean eadar uidheaman tuilleadh.
+upgradeInfo.pEp.desc=Tha modh furasta <a 
href="https://pep-project.org/";>p≡p</a> aig Enigmail a-nis. Leigidh am modh 
furasta p≡p leat crioptachadh OpenPGP a chleachdadh air dòigh as soilleire; cha 
leig thu leas bodraigeadh le stiùireadh no sioncronachadh nan iuchraichean 
eadar uidheaman tuilleadh.
 upgradeInfo.bottom.desc=Tadhail air an <a 
href="https://enigmail.net/home/docu.php";>docamaideadh</a> againn airson 
cobhair le cleachdadh Enigmail.
 
 pep.missingGnuPG=Feumaidh GnuPG a bhith agad mus urrainn dhut Enigmail/p≡p a 
chleachdadh. Cha do lorg sinn e agus mholamaid gun luchdaich sinn a-nuas is gun 
stàlaich sinn e air do shon.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/gl/enigmail.properties 
new/enigmail/lang/gl/enigmail.properties
--- old/enigmail/lang/gl/enigmail.properties    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/gl/enigmail.properties    2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Compatibilidade para o Autocrypt
 upgradeInfo.autocrypt.desc=O Enigmail xa é compatíbel co <a 
href="https://autocrypt.org/";>Autocrypt</a>, un novo estándar para distribuír 
chaves como parte das mensaxes enviadas. O Enigmail importa automaticamente 
estas chaves das mensaxes que cumpren coas normas do Autocrypt, deste xeito 
cada vez máis correos electrónicos poderán ser cifrados.
 upgradeInfo.pEp.title=Novo modo Junior do p≡p (Pretty Easy Privacy)
-upgradeInfo.pEp.desc=Enigmail xa dispón do Modo Junior <a 
href="https://pep-project.org/";>p≡p</a>. Con este propósito debe instalar 
manualmente o p≡p; isto cambiará en futuras versións. O Modo Junior p≡p 
permítelle usar o cifrado OpenPGP con tanta transparencia como é posíbel; 
vostede xa non precisa preocuparse da xestión e sincronización de chaves entre 
dispositivos.
+upgradeInfo.pEp.desc=Enigmail xa dispón do Modo Junior <a 
href="https://pep-project.org/";>p≡p</a>. O Modo Junior p≡p permítelle usar o 
cifrado OpenPGP con tanta transparencia como é posíbel; vostede xa non precisa 
preocuparse da xestión e sincronización de chaves entre dispositivos.
 upgradeInfo.bottom.desc=Lea a <a 
href="https://enigmail.net/home/docu.php";>nosa documentación</a> para obter 
axuda no uso do Enigmail.
 
 # pep.missingGnuPG=In order to use Enigmail/p≡p, GnuPG is required. As we 
could not find it, we suggest to download and install it for you.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/ja/enigmail.properties 
new/enigmail/lang/ja/enigmail.properties
--- old/enigmail/lang/ja/enigmail.properties    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/ja/enigmail.properties    2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Autocrypt のサポート
 upgradeInfo.autocrypt.desc=Enigmail は新たな鍵配布標準である <a 
href="https://autocrypt.org/";>Autocrypt</a> をサポートします。Enigmail は Autocrypt 
に適合したメッセージから自動的に鍵をインポートすることで、メッセージの暗号化を推進します。
 upgradeInfo.pEp.title=p≡p (Pretty Easy Privacy) のサポート
-upgradeInfo.pEp.desc=Enigmail は <a href="https://pep-project.org/";>p≡p Junior 
Mode</a> をサポートします。現時点では p≡p を手作業でインストールする必要がありますが、将来的に改善される見込みです。p≡p Junior 
Mode では、OpenPGP によるメッセージの暗号化を透過的に提供します。つまり、鍵の管理やデバイス間での鍵の同期を気にする必要がなくなります。
+upgradeInfo.pEp.desc=Enigmail は <a href="https://pep-project.org/";>p≡p Junior 
Mode</a> をサポートします。p≡p Junior Mode では、OpenPGP 
によるメッセージの暗号化を透過的に提供します。つまり、鍵の管理やデバイス間での鍵の同期を気にする必要がなくなります。
 upgradeInfo.bottom.desc=Enigmail 利用に関する詳細なヘルプは、<a 
href="https://enigmail.net/home/docu.php";>オンラインドキュメント</a> を参照してください。
 
 pep.missingGnuPG=Enigmail/p≡p を利用するためには GnuPG が必要ですが、あなたの環境に GnuPG 
がインストールされていることを確認できませんでした。GnuPG をダウンロード・インストールすることをお勧めします
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/nl/enigmail.properties 
new/enigmail/lang/nl/enigmail.properties
--- old/enigmail/lang/nl/enigmail.properties    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/nl/enigmail.properties    2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Ondersteuning voor Autocrypt
 upgradeInfo.autocrypt.desc=Enigmail ondersteunt nu <a 
href="https://autocrypt.org/";>Autocrypt</a>, een nieuwe standaard om sleutels 
te verspreiden als onderdeel van verzonden berichten. Enigmail importeert 
sleutels van Autocrypt-compatibele berichten automatisch, zodat na verloop van 
tijd meer en meer berichten versleuteld kunnen worden.
 upgradeInfo.pEp.title=Nieuwe p≡p-juniormodus (Pretty Easy Privacy)
-upgradeInfo.pEp.desc=Enigmail heeft nu een <a 
href="https://pep-project.org/";>p≡p</a>-juniormodus. Momenteel moet u hiervoor 
handmatig p≡p installeren; dit zal in toekomstige versies veranderen. Met de 
p≡p-juniormodus kunt u OpenPGP-versleuteling zo transparant als mogelijk 
gebruiken; u hoeft zich niet meer te bekommeren om sleutelbeheer en het 
synchroniseren van sleutels tussen apparaten.
+upgradeInfo.pEp.desc=Enigmail heeft nu een <a 
href="https://pep-project.org/";>p≡p</a>-juniormodus. Met de p≡p-juniormodus 
kunt u OpenPGP-versleuteling zo transparant als mogelijk gebruiken; u hoeft 
zich niet meer te bekommeren om sleutelbeheer en het synchroniseren van 
sleutels tussen apparaten.
 upgradeInfo.bottom.desc=Bezoek <a 
href="https://enigmail.net/home/docu.php";>onze documentatie</a> voor hulp over 
het gebruik van Enigmail.
 
 pep.missingGnuPG=Om Enigmail/p≡p te gebruiken, is GunPG vereist. Omdat we het 
niet konden vinden, stellen wij voor het voor u te downloaden en installeren.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/pt-BR/enigmail.properties 
new/enigmail/lang/pt-BR/enigmail.properties
--- old/enigmail/lang/pt-BR/enigmail.properties 2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/pt-BR/enigmail.properties 2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Suporte para Auto-encriptação
 upgradeInfo.autocrypt.desc=O Enigmail agora suporta <a 
href="https://autocrypt.org/";>Criptografia Automática</a>, um novo padrão para 
distribuir as chave como parte das mensagens enviadas. O Enigmail 
automaticamente importa as chaves de mensagens compatíveis com a Criptografia 
Automatica, desta forma mais e mais emials poderão ser criptografados com o 
passar do tempo.
 upgradeInfo.pEp.title=Novo p≡p Modo Junior (Pretty Easy Privacy)
-upgradeInfo.pEp.desc=Enigmail agora contém um modo Júnior <a 
href="https://pep-project.org/";>p≡p</a>. No momento você precisa instalar 
manualmente o p≡p para este propósito; Isto mudará nas futuras versões. O p≡p 
modo júnior permite que você use a criptografia OpenPGP o mais transparente 
possível; você não precisa mais se preocupar com a gerência de chaves e com a 
sincronização de chaves entre os dispositivos.
+upgradeInfo.pEp.desc=Enigmail agora contém um modo Júnior <a 
href="https://pep-project.org/";>p≡p</a>. O p≡p modo júnior permite que você use 
a criptografia OpenPGP o mais transparente possível; você não precisa mais se 
preocupar com a gerência de chaves e com a sincronização de chaves entre os 
dispositivos.
 upgradeInfo.bottom.desc=Por favor acesse <a 
href="https://enigmail.net/home/docu.php";>noss documentação</a>para obter ajuda 
no uso do Enigmail.
 
 pep.missingGnuPG=Para poder usar o Enigmail/p≡p, o GnuPG é pré-requisito. 
Assim como não o encontramos instalado, nós sugerimos baixar e fazer a 
instalação.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/sq/enigmail.properties 
new/enigmail/lang/sq/enigmail.properties
--- old/enigmail/lang/sq/enigmail.properties    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/sq/enigmail.properties    2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Mbulim për Autocrypt-in
 upgradeInfo.autocrypt.desc=Enigmail-i tani mbulon <a 
href="https://autocrypt.org/";>Autocrypt</a>, një standard i ri për shpërndarje 
të kyçeve si pjesë e mesazhit të dërguar. Enigmail-i importon vetvetiu kyçe nga 
mesazhe që janë në pajtim me Autocrypt-in, në mënyrë që me kalimin e kohës, të 
mund të fshehtëzohen gjithnjë e më shumë email-e.
 upgradeInfo.pEp.title=p≡p Junior Mode (Pretty Easy Privacy) e re
-upgradeInfo.pEp.desc=Enigmail-i tani përmban një <a 
href="https://pep-project.org/";>p≡p</a> Junior Mode. Për këtë qëllim, hëpërhë 
lypset të instaloni dorazi p≡p; në versionet e ardhshme kjo do të ndryshojë. 
p≡p Junior Mode ju lejon të përdorni fshehtëzim OpenPGP në mënyrën më 
transparente të mundshme; s’keni pse e çani më kokën për administrim kyçesh dhe 
njëkohësim kyçesh mes pajisjesh.
+upgradeInfo.pEp.desc=Enigmail-i tani përmban një <a 
href="https://pep-project.org/";>p≡p</a> Junior Mode. p≡p Junior Mode ju lejon 
të përdorni fshehtëzim OpenPGP në mënyrën më transparente të mundshme; s’keni 
pse e çani më kokën për administrim kyçesh dhe njëkohësim kyçesh mes pajisjesh.
 upgradeInfo.bottom.desc=Për ndihmë rreth përdorimit të Enigmail-it, ju lutemi, 
vizitoni <a href="https://enigmail.net/home/docu.php";>dokumentimin tonë</a>.
 
 pep.missingGnuPG=Që të mund të përdorni Enigmail/p≡p, GnuPG-ja është i 
domosdoshëm. Ngaqë nuk e gjetëm, këshillojmë të shkarkohet dhe të instalohet 
për ju.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/lang/sv-SE/enigmail.properties 
new/enigmail/lang/sv-SE/enigmail.properties
--- old/enigmail/lang/sv-SE/enigmail.properties 2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/lang/sv-SE/enigmail.properties 2018-04-02 13:33:37.000000000 
+0200
@@ -785,7 +785,7 @@
 upgradeInfo.autocrypt.title=Stöd för Autocrypt
 upgradeInfo.autocrypt.desc=Enigmail stöder nu <a 
href="https://autocrypt.org/";>Autocrypt</a>, en ny standard för att distribuera 
nycklar som en del i att skicka meddelanden. Enigmail importerar automatiskt 
nycklar från Autocrypt-kompatibla meddelanden, så att fler och fler 
e-postmeddelanden över tiden kan krypteras.
 upgradeInfo.pEp.title=Nytt p≡p Junior-läge (Pretty Easy Privacy)
-upgradeInfo.pEp.desc=Enigmail innehåller nu ett <a 
href="https://pep-project.org/";>p≡p</a> Junior-läge. Du behöver för närvarande 
manuellt installera p≡p för detta ändamål; detta kommer att förändras i en 
framtida version. p≡p Junior-läge låter dig använda OpenPGP-kryptering så 
transparent som möjligt; du behöver inte ta hand om nyckelhantering och 
synkronisering av nycklar mellan enheter längre.
+upgradeInfo.pEp.desc=Enigmail innehåller nu ett <a 
href="https://pep-project.org/";>p≡p</a> Junior-läge. p≡p Junior-läge låter dig 
använda OpenPGP-kryptering så transparent som möjligt; du behöver inte ta hand 
om nyckelhantering och synkronisering av nycklar mellan enheter längre.
 upgradeInfo.bottom.desc=Besök <a href="https://enigmail.net/home/docu.php";>vår 
dokumention</a> för hjälp med att använda Enigmail.
 
 pep.missingGnuPG=För att kunna använda Enigmail/p≡p krävs GnuPG. Eftersom vi 
inte kunde hitta det, föreslår vi att vi hämtar och installerar det för dig.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/armor.jsm 
new/enigmail/package/armor.jsm
--- old/enigmail/package/armor.jsm      2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/armor.jsm      2018-04-02 13:33:37.000000000 +0200
@@ -217,17 +217,17 @@
    * Remove all headers from an OpenPGP Armored message and replace them
    * with a set of new headers.
    *
-   * @param text:  String - ASCII armored message
-   * @param headers: Object - key/value pairs of new headers to insert
+   * @param armorText: String - ASCII armored message
+   * @param headers:   Object - key/value pairs of new headers to insert
    *
    * @return String - new armored message
    */
-  replaceArmorHeaders: function(text, headers) {
+  replaceArmorHeaders: function(armorText, headers) {
 
-    text = text.replace(/\r\n/g, "\n");
+    let text = armorText.replace(/\r\n/g, "\n");
     let i = text.search(/\n/);
 
-    if (i < 0) return text;
+    if (i < 0) return armorText;
     let m = text.substr(0, i + 1);
 
     for (let j in headers) {
@@ -235,7 +235,7 @@
     }
 
     i = text.search(/\n\n/);
-    if (i < 0) return text;
+    if (i < 0) return armorText;
     m += text.substr(i + 1);
 
     return m;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/autocrypt.jsm 
new/enigmail/package/autocrypt.jsm
--- old/enigmail/package/autocrypt.jsm  2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/autocrypt.jsm  2018-04-02 13:33:37.000000000 +0200
@@ -39,6 +39,7 @@
 Cu.import("resource://enigmail/keyEditor.jsm"); /*global EnigmailKeyEditor: 
false */
 Cu.import("resource://enigmail/stdlib.jsm"); /*global EnigmailStdlib: false */
 Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */
+Cu.import("resource://enigmail/constants.jsm"); /*global EnigmailConstants: 
false */
 
 var gCreatedSetupIds = [];
 
@@ -108,7 +109,9 @@
           }
         }
 
-        if (fromAddr !== paramArr.addr.toLowerCase()) {
+        paramArr.addr = paramArr.addr.toLowerCase();
+
+        if (fromAddr !== paramArr.addr) {
           EnigmailLog.DEBUG("autocrypt.jsm: processAutocryptHeader: from Addr 
" + fromAddr + " != " + paramArr.addr.toLowerCase() + "\n");
 
           resolve(3);
@@ -241,21 +244,26 @@
 
                 if (keysObj.value) {
                   importedKeys = importedKeys.concat(keysObj.value);
+                  if (keysObj.value.length > 0) {
+                    let key = EnigmailKeyRing.getKeyById(keysObj.value[0]);
 
-                  // enable encryption if state (prefer-encrypt) is "mutual";
-                  // otherwise, disable it explicitely
-                  let signEncrypt = (keyArr[i].state === "mutual" ? 1 : 0);
-
-                  let ruleObj = {
-                    email: "{" + keyArr[i].email + "}",
-                    keyList: "0x" + keyArr[i].fpr,
-                    sign: signEncrypt,
-                    encrypt: signEncrypt,
-                    pgpMime: 2,
-                    flags: 0
-                  };
-
-                  EnigmailRules.insertOrUpdateRule(ruleObj);
+                    // enable encryption if state (prefer-encrypt) is "mutual";
+                    // otherwise, disable it explicitely
+                    let signEncrypt = (keyArr[i].state === "mutual" ? 1 : 0);
+
+                    if (key && key.fpr) {
+                      let ruleObj = {
+                        email: "{" + EnigmailConstants.AC_RULE_PREFIX + 
keyArr[i].email + "}",
+                        keyList: "0x" + key.fpr,
+                        sign: signEncrypt,
+                        encrypt: signEncrypt,
+                        pgpMime: 2,
+                        flags: 0
+                      };
+
+                      EnigmailRules.insertOrUpdateRule(ruleObj);
+                    }
+                  }
                 }
               }
             }
@@ -370,6 +378,12 @@
 
       let keyData = EnigmailKeyRing.extractSecretKey(true, "0x" + key.fpr, {}, 
{});
 
+      if (!keyData || keyData.length === 0) {
+        EnigmailLog.DEBUG("autocrypt.jsm: createSetupMessage: no key found for 
" + identity.email + "\n");
+        reject(1);
+        return;
+      }
+
       let ac = EnigmailFuncs.getAccountForIdentity(identity);
       let preferEncrypt = ac.incomingServer.getIntValue("acPreferEncrypt") > 0 
? "mutual" : "nopreference";
 
@@ -377,6 +391,12 @@
         'Autocrypt-Prefer-Encrypt': preferEncrypt
       }) + '\r\n';
 
+      if (!innerMsg || innerMsg.length === 0) {
+        EnigmailLog.DEBUG("autocrypt.jsm: createSetupMessage: empty key data 
after replaceArmorHeaders\n");
+        reject(1);
+        return;
+      }
+
       let bkpCode = createBackupCode();
       let enc = {
         data: innerMsg,
@@ -415,8 +435,10 @@
    */
   sendSetupMessage: function(identity) {
     EnigmailLog.DEBUG("autocrypt.jsm: sendSetupMessage()\n");
+
+    let self = this;
     return new Promise((resolve, reject) => {
-      this.createSetupMessage(identity).then(res => {
+      self.createSetupMessage(identity).then(res => {
         let composeFields = 
Cc["@mozilla.org/messengercompose/composefields;1"].createInstance(Ci.nsIMsgCompFields);
         composeFields.characterSet = "UTF-8";
         composeFields.messageId = EnigmailRNG.generateRandomString(27) + 
"-enigmail";
@@ -712,7 +734,7 @@
   connection.executeTransaction(function _trx() {
     connection.execute("insert into autocrypt_keydata (email, keydata, fpr, 
type, last_seen_autocrypt, last_seen, state) values " +
       "(:email, :keyData, :fpr, :type, :lastAutocrypt, :lastSeen, :state)", {
-        email: paramsArr.addr,
+        email: paramsArr.addr.toLowerCase(),
         keyData: paramsArr.keydata,
         fpr: ("fpr" in paramsArr ? paramsArr.fpr : ""),
         type: paramsArr.type,
@@ -779,7 +801,7 @@
     updateStr = "update autocrypt_keydata set state = :state, keydata = 
:keyData, last_seen_autocrypt = :lastAutocrypt, " +
       "fpr = :fpr, last_seen = :lastSeen where email = :email and type = 
:type";
     updateObj = {
-      email: paramsArr.addr,
+      email: paramsArr.addr.toLowerCase(),
       state: paramsArr["prefer-encrypt"],
       keyData: paramsArr.keydata,
       fpr: ("fpr" in paramsArr ? paramsArr.fpr : ""),
@@ -791,7 +813,7 @@
   else {
     updateStr = "update autocrypt_keydata set state = :state, last_seen = 
:lastSeen where email = :email and type = :type";
     updateObj = {
-      email: paramsArr.addr,
+      email: paramsArr.addr.toLowerCase(),
       state: paramsArr["prefer-encrypt"],
       type: paramsArr.type,
       lastSeen: paramsArr.dateSent.toJSON()
@@ -919,7 +941,7 @@
 
 
 function updateRuleForEmail(email, preferEncrypt) {
-  let node = EnigmailRules.getRuleByEmail(email);
+  let node = EnigmailRules.getRuleByEmail(EnigmailConstants.AC_RULE_PREFIX + 
email);
 
   if (node) {
     let signEncrypt = (preferEncrypt === "mutual" ? "1" : "0");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/configure.jsm 
new/enigmail/package/configure.jsm
--- old/enigmail/package/configure.jsm  2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/configure.jsm  2018-04-02 13:33:37.000000000 +0200
@@ -141,6 +141,26 @@
 }
 
 /**
+ * set the Autocrypt prefer-encrypt option to "mutual" for all existing
+ * accounts
+ */
+function setAutocryptForOldAccounts() {
+  try {
+    let accountManager = 
Cc["@mozilla.org/messenger/account-manager;1"].getService(Ci.nsIMsgAccountManager);
+    let changedSomething = false;
+
+    for (let acct = 0; acct < accountManager.accounts.length; acct++) {
+      let ac = accountManager.accounts.queryElementAt(acct, Ci.nsIMsgAccount);
+      if (ac.incomingServer.type.search(/(pop3|imap|movemail)/) >= 0) {
+        ac.incomingServer.setIntValue("acPreferEncrypt", 1);
+      }
+    }
+  }
+  catch (ex) {}
+}
+
+
+/**
  * Determine if pEp is avaliable, and if it is not available,
  * whether it can be downaloaded and installed. This does not
  * trigger installation.
@@ -238,6 +258,9 @@
       if (vc.compare(oldVer, "2.0a1pre") < 0) {
         this.upgradeTo20();
       }
+      if (vc.compare(oldVer, "2.0.1a2pre") < 0) {
+        this.upgradeTo201();
+      }
     }
 
     EnigmailPrefs.setPref("configuredVersion", EnigmailApp.getVersion());
@@ -248,5 +271,9 @@
     EnigmailPrefs.setPref("juniorMode", 0); // disable pEp if upgrading from 
older version
     replaceKeyIdWithFpr();
     displayUpgradeInfo();
+  },
+
+  upgradeTo201: function() {
+    setAutocryptForOldAccounts();
   }
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/constants.jsm 
new/enigmail/package/constants.jsm
--- old/enigmail/package/constants.jsm  2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/constants.jsm  2018-04-02 13:33:37.000000000 +0200
@@ -129,6 +129,7 @@
   /* attachment handling */
 
   /* per-recipient rules */
+  AC_RULE_PREFIX: "autocrypt://",
 
   CARD_PIN_CHANGE: 1,
   CARD_PIN_UNBLOCK: 2,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/decryption.jsm 
new/enigmail/package/decryption.jsm
--- old/enigmail/package/decryption.jsm 2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/decryption.jsm 2018-04-02 13:33:37.000000000 +0200
@@ -98,6 +98,9 @@
       var fromAddr = win.gFolderDisplay.selectedMessage.author;
       try {
         fromAddr = EnigmailFuncs.stripEmail(fromAddr);
+        if (fromAddr.search(/@.*[\(\)]/) >= 0) {
+          fromAddr = false;
+        }
       }
       catch (ex) {
         fromAddr = false;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/funcs.jsm 
new/enigmail/package/funcs.jsm
--- old/enigmail/package/funcs.jsm      2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/funcs.jsm      2018-04-02 13:33:37.000000000 +0200
@@ -23,6 +23,7 @@
 Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */
 Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */
 Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */
+Cu.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */
 
 var gTxtConverter = null;
 
@@ -312,7 +313,7 @@
    */
   getProtectedSubjectText: function() {
     if (EnigmailPrefs.getPref("protectedSubjectText").length > 0) {
-      return EnigmailPrefs.getPref("protectedSubjectText");
+      return 
EnigmailData.convertToUnicode(EnigmailPrefs.getPref("protectedSubjectText"), 
"utf-8");
     }
     else {
       return EnigmailLocale.getString("msgCompose.encryptedSubjectStub");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/gpg.jsm new/enigmail/package/gpg.jsm
--- old/enigmail/package/gpg.jsm        2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/gpg.jsm        2018-04-02 13:33:37.000000000 +0200
@@ -28,7 +28,7 @@
 Cu.import("resource://enigmail/lazy.jsm"); /*global EnigmailLazy: false */
 const getGpgAgent = EnigmailLazy.loader("enigmail/gpgAgent.jsm", 
"EnigmailGpgAgent");
 
-const MINIMUM_GPG_VERSION = "2.0.16";
+const MINIMUM_GPG_VERSION = "2.0.14";
 const GPG_BATCH_OPT_LIST = ["--batch", "--no-tty", "--status-fd", "2"];
 
 function pushTrimmedStr(arr, str, splitStr) {
@@ -122,7 +122,7 @@
 
    @param featureName:  String; one of the following values:
    version-supported    - is the gpg version supported at all (true for gpg >= 
2.0.10)
-   supports-gpg-agent   - is gpg-agent is usually provided (true for gpg >= 
2.0)
+   supports-gpg-agent   - is gpg-agent is auto-started (true for gpg >= 2.0.16)
    keygen-passphrase    - can the passphrase be specified when generating keys 
(false for gpg 2.1 and 2.1.1)
    windows-photoid-bug  - is there a bug in gpg with the output of photoid on 
Windows (true for gpg < 2.0.16)
    genkey-no-protection - is "%no-protection" supported for generting keys 
(true for gpg >= 2.1)
@@ -154,7 +154,7 @@
       case "version-supported":
         return EnigmailVersioning.greaterThanOrEqual(gpgVersion, 
MINIMUM_GPG_VERSION);
       case "supports-gpg-agent":
-        return EnigmailVersioning.greaterThanOrEqual(gpgVersion, "2.0");
+        return EnigmailVersioning.greaterThanOrEqual(gpgVersion, "2.0.16");
       case "keygen-passphrase":
         return EnigmailVersioning.lessThan(gpgVersion, "2.1") || 
EnigmailVersioning.greaterThanOrEqual(gpgVersion, "2.1.2");
       case "genkey-no-protection":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/gpgAgent.jsm 
new/enigmail/package/gpgAgent.jsm
--- old/enigmail/package/gpgAgent.jsm   2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/gpgAgent.jsm   2018-04-02 13:33:37.000000000 +0200
@@ -647,6 +647,12 @@
       EnigmailLog.DEBUG("gpgAgent.jsm: detectGpgAgent: no GPG_AGENT_INFO 
variable set\n");
       EnigmailGpgAgent.gpgAgentInfo.preStarted = false;
 
+      if (!getEnigmailGpg().getGpgFeature("supports-gpg-agent")) {
+        esvc.initializationError = 
EnigmailLocale.getString("gpgAgent.noAutostart", getEnigmailGpg().agentVersion);
+        EnigmailLog.ERROR("gpgAgent.jsm: Error - " + esvc.initializationError 
+ "\n");
+        throw Components.results.NS_ERROR_FAILURE;
+      }
+
       var command = null;
       var outStr = "";
       var errorStr = "";
@@ -727,6 +733,8 @@
     let homeDirObj = 
Components.classes[NS_LOCAL_FILE_CONTRACTID].createInstance(Ci.nsIFile);
     EnigmailFiles.initPath(homeDirObj, homeDir);
 
+    homeDirObj.normalize(); // resolve symlinks etc.
+
     let dirType = EnigmailFiles.ensureWritableDirectory(homeDirObj, 0x1C0); // 
0700
     let errMsg = "";
     switch (dirType) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/hash.jsm 
new/enigmail/package/hash.jsm
--- old/enigmail/package/hash.jsm       2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/hash.jsm       2018-04-02 13:33:37.000000000 +0200
@@ -60,11 +60,15 @@
         }
       };
 
+      let errorMsgObj = {};
+      let statusFlagsObj = {};
       const proc = EnigmailEncryption.encryptMessageStart(win, testUiFlags, 
fromMailAddr, "",
         "", hashAlgo, sendFlags,
-        listener, {}, {});
+        listener, statusFlagsObj, errorMsgObj);
 
       if (!proc) {
+        hashAlgoObj.errorMsg = errorMsgObj.value;
+        hashAlgoObj.statusFlags = statusFlagsObj.value;
         return 1;
       }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/install.rdf 
new/enigmail/package/install.rdf
--- old/enigmail/package/install.rdf    2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/install.rdf    2018-04-02 13:33:37.000000000 +0200
@@ -5,7 +5,7 @@
 
   <Description about="urn:mozilla:install-manifest">
     <em:id>{847b3a00-7ab1-11d4-8f02-006008948af5}</em:id>
-    <em:version>2.0</em:version>
+    <em:version>2.0.1</em:version>
     <em:type>2</em:type> <!-- type = extension -->
     <em:bootstrap>true</em:bootstrap>
     
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/keyEditor.jsm 
new/enigmail/package/keyEditor.jsm
--- old/enigmail/package/keyEditor.jsm  2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/keyEditor.jsm  2018-04-02 13:33:37.000000000 +0200
@@ -535,7 +535,11 @@
       },
       addPhotoCallback,
       null,
-      callbackFunc);
+      function _f(returnCode, errorMsg) {
+        runKeyTrustCheck();
+        EnigmailKeyRing.updateKeys([keyId]);
+        callbackFunc(returnCode, errorMsg);
+      });
   },
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/keyRing.jsm 
new/enigmail/package/keyRing.jsm
--- old/enigmail/package/keyRing.jsm    2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/keyRing.jsm    2018-04-02 13:33:37.000000000 +0200
@@ -695,7 +695,7 @@
    * @param keyBlock        String   - data containing key
    * @param keyId           String   - key ID expected to import (no meaning)
    * @param errorMsgObj     Object   - o.value will contain error message from 
GnuPG
-   * @param importedKeysObj Object   - [OPTIONAL] o.value will contain an 
array of the key IDs imported
+   * @param importedKeysObj Object   - [OPTIONAL] o.value will contain an 
array of the key FPRs imported
    *
    * @return Integer -  exit code:
    *      ExitCode == 0  => success
@@ -818,6 +818,12 @@
     }
 
     if (foundPicture >= 0 && foundPicture === photoNumber) {
+      if (photoDataObj.value.search(/^gpg: /) === 0) {
+        // skip disturbing gpg output
+        let i = photoDataObj.value.search(/\n/) + 1;
+        skipData += i;
+      }
+
       const pictureData = photoDataObj.value.substr(16 + skipData, imgSize);
       if (!pictureData.length) {
         return null;
@@ -833,13 +839,17 @@
         const fileStream = 
Cc[NS_LOCALFILEOUTPUTSTREAM_CONTRACTID].createInstance(Ci.nsIFileOutputStream);
         fileStream.init(picFile, flags, DEFAULT_FILE_PERMS, 0);
         if (fileStream.write(pictureData, pictureData.length) !== 
pictureData.length) {
+          fileStream.close();
           throw Components.results.NS_ERROR_FAILURE;
         }
 
         fileStream.flush();
         fileStream.close();
-        return picFile;
 
+        // delete picFile upon exit
+        let extAppLauncher = 
Cc["@mozilla.org/mime;1"].getService(Ci.nsPIExternalAppLauncher);
+        extAppLauncher.deleteTemporaryFileOnExit(picFile);
+        return picFile;
       }
       catch (ex) {
         exitCodeObj.value = -1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/mimeDecrypt.jsm 
new/enigmail/package/mimeDecrypt.jsm
--- old/enigmail/package/mimeDecrypt.jsm        2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/package/mimeDecrypt.jsm        2018-04-02 13:33:37.000000000 
+0200
@@ -424,7 +424,8 @@
         EnigmailConstants.UI_PGP_MIME,
         this.returnStatus);
 
-      if (this.returnStatus.statusFlags & EnigmailConstants.DECRYPTION_FAILED) 
{
+      if ((this.returnStatus.statusFlags & 
EnigmailConstants.DECRYPTION_FAILED) ||
+        !(this.returnStatus.statusFlags & EnigmailConstants.DECRYPTION_OKAY)) {
         this.decryptedData = "";
       }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/mimeEncrypt.jsm 
new/enigmail/package/mimeEncrypt.jsm
--- old/enigmail/package/mimeEncrypt.jsm        2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/package/mimeEncrypt.jsm        2018-04-02 13:33:37.000000000 
+0200
@@ -214,8 +214,13 @@
               hashAlgoObj) === 0) {
             this.hashAlgorithm = hashAlgoObj.value;
           }
-          else
+          else {
+            if ("statusFlags" in hashAlgoObj && hashAlgoObj.statusFlags !== 0 
&& hashAlgoObj.errorMsg) {
+              EnigmailDialog.alert(this.win, hashAlgoObj.errorMsg);
+            }
+
             throw Cr.NS_ERROR_FAILURE;
+          }
         }
       }
       else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/pEpDecrypt.jsm 
new/enigmail/package/pEpDecrypt.jsm
--- old/enigmail/package/pEpDecrypt.jsm 2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/pEpDecrypt.jsm 2018-04-02 13:33:37.000000000 +0200
@@ -24,6 +24,7 @@
 Cu.import("resource://enigmail/mimeVerify.jsm"); /*global EnigmailVerify: 
false */
 Cu.import("resource://enigmail/uris.jsm"); /*global EnigmailURIs: false */
 Cu.import("resource://enigmail/streams.jsm"); /*global EnigmailStreams: false 
*/
+Cu.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */
 Cu.import("resource:///modules/jsmime.jsm"); /*global jsmime: false*/
 Cu.import("resource://enigmail/singletons.jsm"); /*global EnigmailSingletons: 
false */
 
@@ -244,8 +245,9 @@
     this.decryptedData = 'Content-Type: multipart/mixed; boundary="' + wrapper 
+ '"\r\n' +
       'Content-Disposition: inline\r\n\r\n' +
       '--' + wrapper + '\r\n' +
-      "Content-Type: text/plain\r\n\r\n" + 
EnigmailLocale.getString("pEpDecrypt.cannotDecrypt") + '\r\n' +
-      '--' + wrapper + '--\r\n';
+      'Content-Type: text/plain; charset="UTF-8"\r\n\r\n' +
+      
EnigmailData.convertFromUnicode(EnigmailLocale.getString("pEpDecrypt.cannotDecrypt"),
 "UTF-8") +
+      '\r\n--' + wrapper + '--\r\n';
 
     this.sourceData = "Content-Type: " + this.contentType + "\r\n\r\n" + 
this.sourceData;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/protocolHandler.jsm 
new/enigmail/package/protocolHandler.jsm
--- old/enigmail/package/protocolHandler.jsm    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/package/protocolHandler.jsm    2018-04-02 13:33:37.000000000 
+0200
@@ -53,7 +53,7 @@
   QueryInterface: XPCOMUtils.generateQI([nsIProtocolHandler]),
 
   newURI: function(aSpec, originCharset, aBaseURI) {
-    EnigmailLog.DEBUG("enigmail.js: EnigmailProtocolHandler.newURI: aSpec='" + 
aSpec + "'\n");
+    EnigmailLog.DEBUG("protocolHandler.jsm: EnigmailProtocolHandler.newURI: 
aSpec='" + aSpec + "'\n");
 
     // cut of any parameters potentially added to the URI; these cannot be 
handled
     if (aSpec.substr(0, 14) == "enigmail:dummy") aSpec = "enigmail:dummy";
@@ -94,7 +94,7 @@
   },
 
   newChannel: function(aURI) {
-    EnigmailLog.DEBUG("enigmail.js: EnigmailProtocolHandler.newChannel: URI='" 
+ aURI.spec + "'\n");
+    EnigmailLog.DEBUG("protocolHandler.jsm: 
EnigmailProtocolHandler.newChannel: URI='" + aURI.spec + "'\n");
 
     var messageId = EnigmailData.extractMessageId(aURI.spec);
     var mimeMessageId = EnigmailData.extractMimeMessageId(aURI.spec);
@@ -114,7 +114,7 @@
         contentCharset = messageUriObj.contentCharset;
         contentData = messageUriObj.contentData;
 
-        EnigmailLog.DEBUG("enigmail.js: EnigmailProtocolHandler.newChannel: 
messageURL=" + messageUriObj.originalUrl + ", content length=" + 
contentData.length + ", " + contentType + ", " +
+        EnigmailLog.DEBUG("protocolHandler.jsm: 
EnigmailProtocolHandler.newChannel: messageURL=" + messageUriObj.originalUrl + 
", content length=" + contentData.length + ", " + contentType + ", " +
           contentCharset + "\n");
 
         // do NOT delete the messageUriObj now from the list, this will be 
done once the message is unloaded (fix for bug 9730).
@@ -135,22 +135,6 @@
       return channel;
     }
 
-    if (aURI.spec.indexOf(aURI.scheme + "://photo/") === 0) {
-      // handle photo ID
-      contentType = "image/jpeg";
-      contentCharset = "";
-      let keyId = aURI.spec.substr(17);
-      let exitCodeObj = {};
-      let errorMsgObj = {};
-      let f = EnigmailKeyRing.getPhotoFile(keyId, 0, exitCodeObj, errorMsgObj);
-      if (exitCodeObj.value === 0) {
-        let channel = EnigmailStreams.newFileChannel(aURI, f, "image/jpeg", 
true);
-        return channel;
-      }
-
-      return null;
-    }
-
     if (aURI.spec == aURI.scheme + ":dummy") {
       // Dummy PKCS7 content (to access mimeEncryptedClass)
       return EnigmailStreams.newStringChannel(aURI, "message/rfc822", "", 
gDummyPKCS7);
@@ -207,8 +191,8 @@
   },
 
   handleMimeMessage: function(messageId) {
-    //        EnigmailLog.DEBUG("enigmail.js: 
EnigmailProtocolHandler.handleMimeMessage: 
messageURL="+messageUriObj.originalUrl+", content 
length="+contentData.length+", "+contentType+", "+contentCharset+"\n");
-    EnigmailLog.DEBUG("enigmail.js: EnigmailProtocolHandler.handleMimeMessage: 
messageURL=, content length=, , \n");
+    //        EnigmailLog.DEBUG("protocolHandler.jsm: 
EnigmailProtocolHandler.handleMimeMessage: 
messageURL="+messageUriObj.originalUrl+", content 
length="+contentData.length+", "+contentType+", "+contentCharset+"\n");
+    EnigmailLog.DEBUG("protocolHandler.jsm: 
EnigmailProtocolHandler.handleMimeMessage: messageURL=, content length=, , \n");
   },
 
   allowPort: function(port, scheme) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/package/rules.jsm 
new/enigmail/package/rules.jsm
--- old/enigmail/package/rules.jsm      2018-03-25 14:48:39.000000000 +0200
+++ new/enigmail/package/rules.jsm      2018-04-02 13:33:37.000000000 +0200
@@ -454,6 +454,12 @@
         let addr = openList[openIndex].addr;
         // search with { and } around because these are used a begin and end 
markers in the rules:
         let idx = ('{' + addr + '}').indexOf(ruleEmailElem);
+
+        if (idx < 0) {
+          addr = EnigmailConstants.AC_RULE_PREFIX + addr;
+          idx = ('{' + addr + '}').indexOf(ruleEmailElem);
+        }
+
         if (idx >= 0) {
           if (ruleEmailElem == rule.email) {
             EnigmailLog.DEBUG("rules.jsm: mapRuleToKeys(): for '" + addr + "' 
('" + openList[openIndex].orig +
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ui/content/enigmailKeyManager.js 
new/enigmail/ui/content/enigmailKeyManager.js
--- old/enigmail/ui/content/enigmailKeyManager.js       2018-03-25 
14:48:39.000000000 +0200
+++ new/enigmail/ui/content/enigmailKeyManager.js       2018-04-02 
13:33:37.000000000 +0200
@@ -127,7 +127,17 @@
 }
 
 function reloadKeys() {
-  buildKeyList(false);
+  let i = 0;
+  let c = Components.stack;
+
+  while (c) {
+    if (c.name == "reloadKeys") i++;
+    c = c.caller;
+  }
+
+  // detect recursion and don't continue if too much recursion
+  // this can happen if the key list is empty
+  if (i < 4) buildKeyList(false);
 }
 
 function buildKeyList(refresh) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ui/content/enigmailMessengerOverlay.xul 
new/enigmail/ui/content/enigmailMessengerOverlay.xul
--- old/enigmail/ui/content/enigmailMessengerOverlay.xul        2018-03-25 
14:48:39.000000000 +0200
+++ new/enigmail/ui/content/enigmailMessengerOverlay.xul        2018-04-02 
13:33:37.000000000 +0200
@@ -214,7 +214,7 @@
   <menupopup id="mailContext">
     <menu
         id="enigmailContext-decryptToFolder"
-        insertafter="mailContext-copyMenu"
+        noinsertafter="mailContext-copyMenu"
         label="&enigmail.decryptToFolder.label;"
         accesskey="&enigmail.decryptToFolder.accesskey;"
         oncommand="Enigmail.msg.decryptToFolder(event.target._folder)">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ui/content/enigmailMsgComposeOverlay.js 
new/enigmail/ui/content/enigmailMsgComposeOverlay.js
--- old/enigmail/ui/content/enigmailMsgComposeOverlay.js        2018-03-25 
14:48:39.000000000 +0200
+++ new/enigmail/ui/content/enigmailMsgComposeOverlay.js        2018-04-02 
13:33:37.000000000 +0200
@@ -29,7 +29,6 @@
 Components.utils.import("resource://enigmail/dialog.jsm"); /*global 
EnigmailDialog: false */
 Components.utils.import("resource://enigmail/timer.jsm"); /*global 
EnigmailTimer: false */
 Components.utils.import("resource://enigmail/windows.jsm"); /* global 
EnigmailWindows: false */
-Components.utils.import("resource://enigmail/events.jsm"); /*global 
EnigmailEvents: false */
 Components.utils.import("resource://enigmail/keyRing.jsm"); /*global 
EnigmailKeyRing: false */
 Components.utils.import("resource://enigmail/uris.jsm"); /*global 
EnigmailURIs: false */
 Components.utils.import("resource://enigmail/constants.jsm"); /*global 
EnigmailConstants: false */
@@ -272,15 +271,15 @@
    */
   getAccDefault: function(key) {
     //EnigmailLog.DEBUG("enigmailMsgComposeOverlay.js: 
Enigmail.msg.getAccDefault: 
identity="+this.identity.key+"("+this.identity.email+") key="+key+"\n");
+    let res = null;
 
     if (this.isEnigmailEnabled()) {
-      var res = null;
       switch (key) {
         case 'sign':
-          res = (this.identity.getIntAttribute("defaultSigningPolicy") > 0); 
// converts int property to bool property
+          res = this.identity.getBoolAttribute("sign_mail");
           break;
         case 'encrypt':
-          res = (this.identity.getIntAttribute("defaultEncryptionPolicy") > 
0); // converts int property to bool property
+          res = (this.identity.getIntAttribute("encryptionpolicy") > 0);
           break;
         case 'pgpMimeMode':
           res = this.identity.getBoolAttribute(key);
@@ -298,6 +297,19 @@
       //EnigmailLog.DEBUG("enigmailMsgComposeOverlay.js: 
Enigmail.msg.getAccDefault:   "+key+"="+res+"\n");
       return res;
     }
+    else if (this.isSmimeEnabled()) {
+      switch (key) {
+        case 'sign':
+          res = this.identity.getBoolAttribute("sign_mail") > 0;
+          break;
+        case 'encrypt':
+          res = (this.identity.getIntAttribute("encryptionpolicy") > 0);
+          break;
+        default:
+          res = false;
+      }
+      return res;
+    }
     else {
       // every detail is disabled if OpenPGP in general is disabled:
       switch (key) {
@@ -328,6 +340,13 @@
       this.isEnigmailEnabled());
   },
 
+  isSmimeEnabled: function() {
+    let id = getCurrentIdentity();
+
+    return ((id.getUnicharAttribute("signing_cert_name") !== "") ||
+      (id.getUnicharAttribute("encryption_cert_name") !== ""));
+  },
+
   /**
    * Determine if any of Enigmail (OpenPGP) or S/MIME signing is enabled for 
the account
    */
@@ -347,8 +366,7 @@
 
     if (!id.getUnicharAttribute("signing_cert_name")) return false;
 
-    return id.getBoolPref("sign_mail");
-
+    return id.getBoolAttribute("sign_mail");
   },
 
   setIdentityDefaults: function() {
@@ -393,6 +411,12 @@
     const ENCRYPT = EnigmailConstants.SEND_ENCRYPTED;
 
     this.sendMode = 0;
+
+    if (this.getSmimeSigningEnabled()) {
+      this.sendMode |= SIGN;
+      this.reasonSigned = EnigmailLocale.getString("reasonEnabledByDefault");
+    }
+
     if (!this.isEnigmailEnabled()) {
       return;
     }
@@ -1540,6 +1564,8 @@
     let signFinally = null;
     let signReason = "";
     let pgpmimeFinally = null;
+    let pgpEnabled = this.isEnigmailEnabled();
+    let smimeEnabled = this.isSmimeEnabled();
 
     // ------ 1. process OpenPGP status ------
 
@@ -1560,7 +1586,7 @@
       case EnigmailConstants.ENIG_UNDEF:
         if (this.sendMode & ENCRYPT) {
           encFinally = EnigmailConstants.ENIG_FINAL_YES;
-          if (this.getAccDefault("encrypt")) {
+          if (pgpEnabled && this.getAccDefault("encrypt")) {
             encReason = EnigmailLocale.getString("reasonEnabledByDefault");
           }
         }
@@ -1601,7 +1627,7 @@
       case EnigmailConstants.ENIG_UNDEF:
         if (this.sendMode & SIGN) {
           signFinally = EnigmailConstants.ENIG_FINAL_YES;
-          if (this.getAccDefault("sign")) {
+          if (pgpEnabled && this.getAccDefault("sign")) {
             signReason = EnigmailLocale.getString("reasonEnabledByDefault");
           }
         }
@@ -1623,8 +1649,8 @@
 
     // process option to finally sign if encrypted/unencrypted
     // (unless rules force not to sign)
-    //var derivedFromEncMode = false;
-    if (this.finalSignDependsOnEncrypt) {
+
+    if (this.finalSignDependsOnEncrypt && pgpEnabled) {
       if (this.signByRules == EnigmailConstants.ENIG_UNDEF) { // if final sign 
mode not clear yet
         //derivedFromEncMode = true;
         switch (encFinally) {
@@ -1657,12 +1683,23 @@
       }
     }
 
-    this.statusPGPMime = EnigmailConstants.ENIG_FINAL_UNDEF;
+    if (pgpEnabled) {
+      this.statusPGPMime = EnigmailConstants.ENIG_FINAL_UNDEF;
+    }
+    else if (smimeEnabled) {
+      this.statusPGPMime = EnigmailConstants.ENIG_FINAL_SMIME;
+    }
 
     // ------ 2. Process S/MIME status  ------
     if (gSMFields) {
 
       let r = this.tryEnablingSMime(encFinally, signFinally);
+      if (this.statusPGPMime === EnigmailConstants.ENIG_FINAL_SMIME &&
+        r.encFinally === EnigmailConstants.ENIG_FINAL_NO &&
+        (this.identity.getIntAttribute("encryptionpolicy") > 0)) {
+
+        r.encFinally = EnigmailConstants.ENIG_FINAL_YES;
+      }
 
       encFinally = r.encFinally;
       signFinally = r.signFinally;
@@ -2126,15 +2163,15 @@
       this.identity = getCurrentIdentity();
     }
 
-    if (this.isEnigmailEnabled()) {
-      var compFields = gMsgCompose.compFields;
+    var compFields = gMsgCompose.compFields;
 
-      if (!Enigmail.msg.composeBodyReady) {
-        compFields = 
Components.classes["@mozilla.org/messengercompose/composefields;1"].createInstance(Components.interfaces.nsIMsgCompFields);
-      }
-      Recipients2CompFields(compFields);
-      gMsgCompose.expandMailingLists();
+    if (!Enigmail.msg.composeBodyReady) {
+      compFields = 
Components.classes["@mozilla.org/messengercompose/composefields;1"].createInstance(Components.interfaces.nsIMsgCompFields);
+    }
+    Recipients2CompFields(compFields);
+    gMsgCompose.expandMailingLists();
 
+    if (this.isEnigmailEnabled()) {
       // process list of to/cc email addresses
       // - bcc email addresses are ignored, when processing whether to 
sign/encrypt
       var toAddrList = [];
@@ -2185,14 +2222,15 @@
       }
     }
     else {
-      this.encryptByRules = EnigmailConstants.ENIG_AUTO_NEVER;
+      this.encryptByRules = EnigmailConstants.ENIG_UNDEF;
+      this.signByRules = EnigmailConstants.ENIG_UNDEF;
+      this.pgpmimeByRules = EnigmailConstants.ENIG_UNDEF;
       this.autoPgpEncryption = false;
     }
 
     // process and signal new resulting state
     this.processFinalState();
     this.updateStatusBar();
-    this.determineSendFlagId = null;
 
     return detailsObj;
   },
@@ -2211,6 +2249,9 @@
   setMenuSettings: function(postfix) {
     EnigmailLog.DEBUG("enigmailMsgComposeOverlay.js: 
Enigmail.msg.setMenuSettings: postfix=" + postfix + "\n");
 
+    let enigmailEnabled = this.isEnigmailEnabled();
+    let smimeEnabled = this.isSmimeEnabled();
+
     const SIGN = EnigmailConstants.SEND_SIGNED;
     const ENCRYPT = EnigmailConstants.SEND_ENCRYPTED;
 
@@ -2243,6 +2284,12 @@
     elem = document.getElementById("enigmail_compose_pgpmime_item" + postfix);
     if (elem) {
       elem.setAttribute("label", this.statusPGPMimeStr);
+      if (enigmailEnabled) {
+        elem.removeAttribute("disabled");
+      }
+      else {
+        elem.setAttribute("disabled", "true");
+      }
 
       switch (this.statusPGPMime) {
         case EnigmailConstants.ENIG_FINAL_YES:
@@ -2256,6 +2303,12 @@
       elem = document.getElementById("enigmail_compose_inline_item" + postfix);
       if (elem) {
         elem.setAttribute("label", this.statusInlinePGPStr);
+        if (enigmailEnabled) {
+          elem.removeAttribute("disabled");
+        }
+        else {
+          elem.setAttribute("disabled", "true");
+        }
 
         switch (this.statusPGPMime) {
           case EnigmailConstants.ENIG_FINAL_NO:
@@ -2272,6 +2325,13 @@
       elem = document.getElementById("enigmail_compose_smime_item" + postfix);
       if (elem) {
         elem.setAttribute("label", this.statusSMimeStr);
+        if (smimeEnabled) {
+          elem.removeAttribute("disabled");
+        }
+        else {
+          elem.setAttribute("disabled", "true");
+        }
+
         switch (this.statusPGPMime) {
           case EnigmailConstants.ENIG_FINAL_SMIME:
           case EnigmailConstants.ENIG_FINAL_FORCESMIME:
@@ -2726,7 +2786,6 @@
    * @return: Boolean - true: keys for all recipients are available
    */
   isSmimeEncryptionPossible: function() {
-    let ret = false;
     let id = getCurrentIdentity();
 
     if (id.getUnicharAttribute("encryption_cert_name") === "") return false;
@@ -2737,6 +2796,7 @@
     let emailAddresses = {};
 
     try {
+      if (!gMsgCompose.compFields.hasRecipients) return false;
       Components.classes["@mozilla.org/messenger-smime/smimejshelper;1"]
         .createInstance(Components.interfaces.nsISMimeJSHelper)
         .getNoCertAddresses(gMsgCompose.compFields,
@@ -3592,6 +3652,17 @@
       this.statusPGPMime == EnigmailConstants.ENIG_FINAL_FORCESMIME) {
 
       // use S/MIME and return
+      switch (msgSendType) {
+        case CiMsgCompDeliverMode.SaveAsDraft:
+        case CiMsgCompDeliverMode.SaveAsTemplate:
+        case CiMsgCompDeliverMode.AutoSaveAsDraft:
+          break;
+        default:
+          if (this.attachOwnKeyObj.appendAttachment) {
+            this.attachOwnKey();
+            Attachments2CompFields(gMsgCompose.compFields); // update list of 
attachments
+          }
+      }
 
       let si = 
gMsgCompose.compFields.securityInfo.QueryInterface(Components.interfaces.nsIMsgSMIMECompFields);
 
@@ -3602,7 +3673,7 @@
 
       if (conf === null) return false;
       if (conf) {
-
+        // confirm before send requested
         msgCompFields = gMsgCompose.compFields;
         splitRecipients = msgCompFields.splitRecipients;
 
@@ -3848,14 +3919,18 @@
       toAddrStr = result.toAddrStr;
       bccAddrStr = result.bccAddrStr;
 
+      if (this.attachOwnKeyObj.appendAttachment) {
+        this.attachOwnKey();
+      }
+
+
       if (this.preferPgpOverSmime(sendFlags) === 0) {
         // use S/MIME
+        Attachments2CompFields(gMsgCompose.compFields); // update list of 
attachments
         sendFlags = 0;
         return true;
       }
 
-      if (this.attachOwnKeyObj.appendAttachment) this.attachOwnKey();
-
       var bucketList = document.getElementById("attachmentBucket");
       var hasAttachments = ((bucketList && bucketList.hasChildNodes()) || 
gMsgCompose.compFields.attachVCard);
 
@@ -5209,10 +5284,15 @@
     try {
       EnigmailLog.DEBUG("enigmailMsgComposeOverlay.js: 
Enigmail.msg.fireSendFlags\n");
       if (!this.determineSendFlagId) {
-        this.determineSendFlagId = EnigmailEvents.dispatchEvent(
+        let self = this;
+        this.determineSendFlagId = EnigmailTimer.setTimeout(
           function _sendFlagWrapper() {
-            Enigmail.msg.determineSendFlags();
-            Enigmail.msg.fireSearchKeys();
+            try {
+              self.determineSendFlags();
+              self.fireSearchKeys();
+            }
+            catch (x) {}
+            self.determineSendFlagId = null;
           },
           0);
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ui/content/keyDetailsDlg.js 
new/enigmail/ui/content/keyDetailsDlg.js
--- old/enigmail/ui/content/keyDetailsDlg.js    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/ui/content/keyDetailsDlg.js    2018-04-02 13:33:37.000000000 
+0200
@@ -12,7 +12,7 @@
 /* global GetEnigmailSvc: false, EnigAlert: false, EnigConvertGpgToUnicode: 
false */
 /* global EnigCleanGuiList: false, EnigGetTrustLabel: false, EnigShowPhoto: 
false, EnigSignKey: false */
 /* global EnigEditKeyExpiry: false, EnigEditKeyTrust: false, EnigChangeKeyPwd: 
false, EnigRevokeKey: false */
-/* global EnigCreateRevokeCert: false */
+/* global EnigCreateRevokeCert: false, EnigmailTimer: false */
 
 // from enigmailKeyManager.js:
 /* global keyMgrAddPhoto: false */
@@ -85,8 +85,15 @@
     }
 
     if (keyObj.photoAvailable === true) {
-      photoImg.setAttribute("src", "enigmail://photo/0x" + gKeyId);
-      photoImg.removeAttribute("hidden");
+      let pFile = EnigmailKeyRing.getPhotoFile("0x" + gKeyId, 0, {}, {});
+
+      if (pFile && pFile.isFile() && pFile.isReadable()) {
+        const photoUri = Cc["@mozilla.org/network/io-service;1"].
+        getService(Ci.nsIIOService).newFileURI(pFile).spec;
+
+        photoImg.setAttribute("src", photoUri);
+        photoImg.removeAttribute("hidden");
+      }
     }
     else {
       photoImg.setAttribute("hidden", "true");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ui/content/pref-enigmail.js 
new/enigmail/ui/content/pref-enigmail.js
--- old/enigmail/ui/content/pref-enigmail.js    2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/ui/content/pref-enigmail.js    2018-04-02 13:33:37.000000000 
+0200
@@ -138,6 +138,7 @@
   displayPrefs(false, true, false);
 
   document.getElementById("enigmail_agentPath").value = 
EnigConvertToUnicode(EnigGetPref("agentPath"), "utf-8");
+  document.getElementById("protectedSubjectText").value = 
EnigConvertToUnicode(EnigGetPref("protectedSubjectText"), "utf-8");
 
   var maxIdle = -1;
   if (!gEnigmailSvc) {
@@ -432,9 +433,12 @@
     document.getElementById("enigmail_agentPath").value = "";
   }
   var newAgentPath = document.getElementById("enigmail_agentPath").value;
+  var protectedSubjectText = 
document.getElementById("protectedSubjectText").value;
 
   displayPrefs(false, false, true);
   EnigSetPref("agentPath", EnigConvertFromUnicode(newAgentPath, "utf-8"));
+  EnigSetPref("protectedSubjectText", 
EnigConvertFromUnicode(protectedSubjectText, "utf-8"));
+
 
   if (gMimePartsElement &&
     (gMimePartsElement.checked != gMimePartsValue)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ui/content/pref-enigmail.xul 
new/enigmail/ui/content/pref-enigmail.xul
--- old/enigmail/ui/content/pref-enigmail.xul   2018-03-25 14:48:39.000000000 
+0200
+++ new/enigmail/ui/content/pref-enigmail.xul   2018-04-02 13:33:37.000000000 
+0200
@@ -385,12 +385,12 @@
 
             <hbox>
               <hbox align="center">
-                <label control="enigmail_protectedSubjectText"
+                <label control="protectedSubjectText"
                        tooltip="protectedSubjectText.tooltip"
                        value="&enigmail.protectedSubjectText.label;"/>
               </hbox>
               <hbox>
-                <textbox id="enigmail_protectedSubjectText"
+                <textbox id="protectedSubjectText"
                          tooltip="protectedSubjectText.tooltip"
                          placeholder=""
                          size="40"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/enigmail/ui/locale/en-US/enigmail.properties 
new/enigmail/ui/locale/en-US/enigmail.properties
--- old/enigmail/ui/locale/en-US/enigmail.properties    2018-03-25 
14:48:39.000000000 +0200
+++ new/enigmail/ui/locale/en-US/enigmail.properties    2018-04-02 
13:33:37.000000000 +0200
@@ -709,6 +709,7 @@
 gpghomedir.notwritable=The directory '%S' containing your OpenPGP keys is not 
writable.
 gpghomedir.notdirectory=The directory '%S' containing your OpenPGP keys is a 
file instead of a directory.
 gpghomedir.notusable=Please fix the directory permissions or change the 
location of your GnuPG "home" directory. GnuPG cannot work correctly otherwise.
+gpgAgent.noAutostart=You are using GnuPG version %S. This version requires 
that you pre-start gpg-agent before Thunderdbird is started, and that the 
environment variable "GPG_AGENT_INFO" is pre-loaded.\n\nThese preconditions are 
not met - you cannot use Enigmail until you resolve this issue.
 
 #strings in pepTrustWords.js
 pepTrustWords.cannotVerifyOwnId=Cannot verify p≡p Trustwords for own account.
@@ -785,7 +786,7 @@
 upgradeInfo.autocrypt.title=Support for Autocrypt
 upgradeInfo.autocrypt.desc=Enigmail now supports <a 
href="https://autocrypt.org/";>Autocrypt</a>, a new standard to distribute keys 
as part of sent messages. Enigmail automatically imports keys from 
Autocrypt-compliant messages, such that over time more and more emails can be 
encrypted.
 upgradeInfo.pEp.title=New p≡p Junior Mode (Pretty Easy Privacy)
-upgradeInfo.pEp.desc=Enigmail now contains a <a 
href="https://pep-project.org/";>p≡p</a> Junior Mode. You currently need to 
manually install p≡p for this purpose; this will change in a future release. 
The p≡p Junior Mode allows you to use OpenPGP encryption as transparently as 
possible; you don't need to care for key management and synchronization of keys 
between devices anymore.
+upgradeInfo.pEp.desc=Enigmail now contains a <a 
href="https://pep-project.org/";>p≡p</a> Junior Mode. The p≡p Junior Mode allows 
you to use OpenPGP encryption as transparently as possible; you don't need to 
care for key management and synchronization of keys between devices anymore.
 upgradeInfo.bottom.desc=Please visit <a 
href="https://enigmail.net/home/docu.php";>our documentation</a> for help on 
using Enigmail.
 
 #strings in pEpAdapter.jsm



Reply via email to