x11-plugins/enigmail: Fix incorrect newline treat of PGP/MIME
authorJory Pratt <anarchy@gentoo.org>
Thu, 31 Oct 2019 14:46:07 +0000 (09:46 -0500)
committerJory Pratt <anarchy@gentoo.org>
Thu, 31 Oct 2019 14:46:07 +0000 (09:46 -0500)
Closes: https://bugs.gentoo.org/698926
Package-Manager: Portage-2.3.78, Repoman-2.3.17
Signed-off-by: Jory Pratt <anarchy@gentoo.org>
x11-plugins/enigmail/enigmail-2.1.2-r1.ebuild [new file with mode: 0644]
x11-plugins/enigmail/files/enigmail-2.1.2-mimeverify.patch [new file with mode: 0644]

diff --git a/x11-plugins/enigmail/enigmail-2.1.2-r1.ebuild b/x11-plugins/enigmail/enigmail-2.1.2-r1.ebuild
new file mode 100644 (file)
index 0000000..596a085
--- /dev/null
@@ -0,0 +1,85 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python2_7 )
+
+inherit python-any-r1
+
+DESCRIPTION="Mozilla extension to provide GPG support in mail clients"
+HOMEPAGE="https://www.enigmail.net/"
+
+SLOT="0"
+LICENSE="MPL-2.0 GPL-3"
+IUSE=""
+if [[ ${PV} == *9999 ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://git.code.sf.net/p/enigmail/source"
+       S="${WORKDIR}/${P}"
+else
+       if [[ ${PV} = *_beta* ]] ; then
+               SRC_URI="https://www.enigmail.net/download/beta/${P/_/-}.tar.gz"
+       else
+               SRC_URI="https://www.enigmail.net/download/source/${P}.tar.gz"
+               KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+       fi
+       S="${WORKDIR}/${PN}"
+fi
+
+RDEPEND="
+       ( >=app-crypt/gnupg-2.0
+               || (
+                       app-crypt/pinentry[gtk(-)]
+                       app-crypt/pinentry[qt5(-)]
+               )
+       )
+       !<mail-client/thunderbird-52.5.0
+"
+DEPEND="${RDEPEND}
+       ${PYTHON_DEPS}
+       app-arch/zip
+       dev-lang/perl
+       "
+
+PATCHES=( "${FILESDIR}/enigmail-no_pEp_auto_download.patch"
+       "${FILESDIR}/${PN}-2.1.2-mimeverify.patch" )
+
+src_compile() {
+       # Required or parallel make fails
+       emake -C stdlib createlib
+
+       emake ipc public ui package lang stdlib
+       emake xpi
+
+}
+
+src_install() {
+       local emid=$(sed -n '/"id":/!d; s/.*\({.*}\).*/\1/; p; q' build/dist/manifest.json)
+       [[ -n ${emid} ]] || die "Could not scrape EM:ID from install.rdf"
+
+       mv build/enigmail*.xpi build/"${emid}.xpi" || die 'Could not rename XPI to match EM:ID'
+
+       # thunderbird
+       insinto "/usr/share/mozilla/extensions/{3550f703-e582-4d05-9a08-453d09bdfdc6}"
+       doins build/"${emid}.xpi"
+
+       # seamonkey
+       insinto "/usr/share/mozilla/extensions/{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}"
+       doins build/"${emid}.xpi"
+}
+
+pkg_postinst() {
+       local peimpl=$(eselect --brief --colour=no pinentry show)
+       case "${peimpl}" in
+       *gtk*|*qt*) ;;
+       *)      ewarn "The pinentry front-end currently selected is not one supported by thunderbird."
+               ewarn "You may be prompted for your password in an inaccessible shell!!"
+               ewarn "Please use 'eselect pinentry' to select either the gtk or qt front-end"
+               ;;
+       esac
+       if [[ -n ${REPLACING_VERSIONS} ]]; then
+               elog
+               elog "Please restart thunderbird and/or seamonkey in order for them to use"
+               elog "the newly installed version of enigmail."
+       fi
+}
diff --git a/x11-plugins/enigmail/files/enigmail-2.1.2-mimeverify.patch b/x11-plugins/enigmail/files/enigmail-2.1.2-mimeverify.patch
new file mode 100644 (file)
index 0000000..8d3830c
--- /dev/null
@@ -0,0 +1,44 @@
+From 745d8a0e6929e61a66b0e6c1474175d4b0a84cd6 Mon Sep 17 00:00:00 2001
+From: Jonas Witschel <diabonas@gmx.de>
+Date: Sun, 29 Sep 2019 22:07:52 +0200
+Subject: [PATCH] mimeVerify: fix incorrect newline treatment in PGP/MIME
+ messages
+
+RFC 3156 specifies:
+
+Upon receipt of a signed message, an application MUST:
+
+(1)   Convert line endings to the canonical <CR><LF> sequence before
+      the signature can be verified.  This is necessary since the
+      local MTA may have converted to a local end of line convention.
+
+The code in this commit was originally added in
+ab1b9a2d1c023c5bdf9c058681b93da99ee95465 to fix SourceForge bugs #209
+and #4, but was later accidentally removed during refactoring. This
+commit restores the previous state so that signed messages created by
+MUAs such as alot or NeoMutt can be verified successfully.
+
+Fixes: c36bef32a70ee9f2eac1b839cb8644e2fddb32ca
+Closes: #1020 (SourceForge)
+---
+ package/mimeVerify.jsm | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/package/mimeVerify.jsm b/package/mimeVerify.jsm
+index 7cc1b228..a6e01d86 100644
+--- a/package/mimeVerify.jsm
++++ b/package/mimeVerify.jsm
+@@ -497,6 +497,10 @@ MimeVerify.prototype = {
+         mimeSignatureFile: sigFileName
+       };
+       const cApi = EnigmailCryptoAPI();
++
++      // ensure all lines end with CRLF as specified in RFC 3156, section 5
++      this.signedData = this.signedData.replace(/\r\n/g, "\n").replace(/\n/g, "\r\n");
++
+       this.returnStatus = cApi.sync(cApi.verifyMime(this.signedData, options));
+       this.exitCode = this.returnStatus.exitCode;
+-- 
+2.22.0
+