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
