Hello David,

David Bremner <da...@tethera.net> writes:

> [...]
> I'm not sure it's less effort, 
> [...]

Neither am I... ;-))

It might perhaps seem easier to run the tests I have added to the
attached, updated patch in your complete environment?

  --alexander



>From ba6f00bbd1803f5cccfafdb262f17b79b6c95252 Mon Sep 17 00:00:00 2001
From: Alexander Adolf <alexander.ad...@condition-alpha.com>
Date: Fri, 25 Mar 2022 14:13:28 +0100
Subject: [PATCH] emacs/smime: render decrypted MIME entities in notmuch-show

When processing encrypted S/MIME messages, after decryption the "last
resort" handler notmuch-show-insert-part-*/* was called, because there
was no application/pkcs7-mime handler, resulting in the decrypted
contents not being displayed.

This commit adds a new function
notmuch-show-insert-part-application/pkcs7-mime (and an alias
notmuch-show-insert-part-application/x-pkcs7-mime for the legacy MIME
type) to render the S/MIME protected part after decryption.
---
 emacs/notmuch-show.el                         | 17 +++++++
 test/T450-emacs-show.sh                       | 11 +++-
 .../crypto/smime-encrypted-signed-multipart   | 51 +++++++++++++++++++
 ...much-show-smime-encrypted-signed-multipart | 15 ++++++
 4 files changed, 93 insertions(+), 1 deletion(-)
 create mode 100644 test/corpora/crypto/smime-encrypted-signed-multipart
 create mode 100644 test/emacs-show.expected-output/notmuch-show-smime-encrypted-signed-multipart

diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 7c1f02c9..b7edfc98 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -712,6 +712,23 @@ will return nil if the CID is unknown or cannot be retrieved."
 (defun notmuch-show-insert-part-application/pgp-encrypted (_msg _part _content-type _nth _depth _button)
   t)
 
+(defun notmuch-show-insert-part-application/pkcs7-mime (msg part _content-type _nth depth _button)
+  "Render S/MIME protected content after decryption.
+
+An alias for this function is also defined to handle entities
+using the legacy application/x-pkcs7-mime MIME type."
+  (let* ((encstatus (car (plist-get part :encstatus)))
+	 (inner-part (car (plist-get part :content))))
+    ;; Insert a button detailing the encryption status.
+    (notmuch-crypto-insert-encstatus-button encstatus)
+    (if (not (string= (plist-get encstatus :status) "bad"))
+        ;; Show all decrypted parts.
+        (notmuch-show-insert-bodypart msg inner-part depth))))
+
+;; Support for the legacy "x-" type.
+(fset 'notmuch-show-insert-part-application/x-pkcs7-mime
+  'notmuch-show-insert-part-application/pkcs7-mime)
+
 (defun notmuch-show-insert-part-multipart/* (msg part _content-type _nth depth _button)
   (let ((inner-parts (plist-get part :content))
 	(start (point)))
diff --git a/test/T450-emacs-show.sh b/test/T450-emacs-show.sh
index 057ad37e..5c4bdd7e 100755
--- a/test/T450-emacs-show.sh
+++ b/test/T450-emacs-show.sh
@@ -49,7 +49,7 @@ test_emacs '(let ((notmuch-crypto-process-mime nil))
 	(test-visible-output))'
 test_expect_equal_file $EXPECTED/notmuch-show-process-crypto-mime-parts-off OUTPUT
 
-test_begin_subtest "process cryptographic MIME parts"
+test_begin_subtest "process cryptographic MIME parts (PGP)"
 test_emacs '(let ((notmuch-crypto-process-mime t))
 	(notmuch-show "id:20091117203301.gv3...@dottiness.seas.harvard.edu")
 	(test-visible-output))'
@@ -245,4 +245,13 @@ test_emacs "(test-log-error
 	        (notmuch-show \"$tid\")))"
 test_expect_equal "$(cat MESSAGES)" "COMPLETE"
 
+# more crypto tests, using S/MIME from here on:
+add_gpgsm_home
+
+test_begin_subtest "process cryptographic MIME parts (S/MIME)"
+test_emacs '(let ((notmuch-crypto-process-mime t))
+	(notmuch-show "id:575ddaaf0b234fd85e077cfb4d44d...@notmuchmail.org")
+	(test-visible-output))'
+test_expect_equal_file $EXPECTED/notmuch-show-smime-encrypted-signed-multipart OUTPUT
+
 test_done
diff --git a/test/corpora/crypto/smime-encrypted-signed-multipart b/test/corpora/crypto/smime-encrypted-signed-multipart
new file mode 100644
index 00000000..f0bd6c51
--- /dev/null
+++ b/test/corpora/crypto/smime-encrypted-signed-multipart
@@ -0,0 +1,51 @@
+Message-Id: <575ddaaf0b234fd85e077cfb4d44d...@notmuchmail.org>
+From: test_su...@notmuchmail.org
+To: test_su...@notmuchmail.org
+Subject: notmuch-show S/MIME test
+Date: Tue, 12 Apr 2022 16:57:30 +0200
+MIME-Version: 1.0
+Content-Type: application/pkcs7-mime;
+ smime-type=enveloped-data;
+ name=smime.p7m
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename=smime.p7m
+
+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
\ No newline at end of file
diff --git a/test/emacs-show.expected-output/notmuch-show-smime-encrypted-signed-multipart b/test/emacs-show.expected-output/notmuch-show-smime-encrypted-signed-multipart
new file mode 100644
index 00000000..556bd937
--- /dev/null
+++ b/test/emacs-show.expected-output/notmuch-show-smime-encrypted-signed-multipart
@@ -0,0 +1,15 @@
+test_su...@notmuchmail.org (0 mins. ago) (encrypted inbox)
+Subject: notmuch-show S/MIME test
+To: test_su...@notmuchmail.org
+Date: Tue, 12 Apr 2022 16:57:30 +0200
+
+[ smime.p7m: application/pkcs7-mime ]
+[ Decryption successful ]
+[ multipart/signed ]
+[ Good signature by: <test_su...@notmuchmail.org> ]
+[ multipart/mixed ]
+[ multipart/mixed ]
+[ text/plain ]
+The password is "12345678". But don't tell anyone!
+[ test.dtd: application/octet-stream ]
+[ smime.p7s: application/pkcs7-signature ]
-- 
2.35.1

_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org

Reply via email to