From 56d085d4f1f7fbc4bfa03719cc978dfb5e8d0f16 Mon Sep 17 00:00:00 2001 From: Daniel Borchmann Date: Sun, 27 Jan 2019 13:32:00 +0100 Subject: [PATCH] =?UTF-8?q?[Misc]=20Move=20fix=20for=20=E2=80=98mm-view-pk?= =?UTF-8?q?cs7-verify=E2=80=99=20to=20init.el?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gnus.el | 34 ---------------------------------- init.el | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/gnus.el b/gnus.el index fb84cb0..004cf69 100644 --- a/gnus.el +++ b/gnus.el @@ -412,40 +412,6 @@ METHOD specifies the encrypt method used. Can be either (add-hook 'gnus-message-setup-hook #'db/signencrypt-message-when-possible) -;; Fix: mm-view does not seem to support verifying S/MIME messages using gpgsm, -;; so we add a simple fix here - -(defun mm-view-pkcs7-verify (handle) - (let ((verified nil)) - (with-temp-buffer - (if (eq mml-smime-use 'epg) - ;; Use gpgsm - (progn - (insert-buffer-substring (mm-handle-buffer handle)) - (setq verified (epg-verify-string (epg-make-context 'CMS) - (base64-decode-string (buffer-string))))) - ;; FIXME: insert valid signature - ;; use openssl - (progn - (insert "MIME-Version: 1.0\n") - (mm-insert-headers "application/pkcs7-mime" "base64" "smime.p7m") - (insert-buffer-substring (mm-handle-buffer handle)) - (setq verified (smime-verify-region (point-min) (point-max)))))) - (goto-char (point-min)) - (mm-insert-part handle) - (if (search-forward "Content-Type: " nil t) - (delete-region (point-min) (match-beginning 0))) - (goto-char (point-max)) - (if (re-search-backward "--\r?\n?" nil t) - (delete-region (match-end 0) (point-max))) - (unless verified - (insert-buffer-substring smime-details-buffer))) - (goto-char (point-min)) - (while (search-forward "\r\n" nil t) - (replace-match "\n")) - t) - - ;;; Custom commands diff --git a/init.el b/init.el index 564f372..dee6275 100644 --- a/init.el +++ b/init.el @@ -1224,6 +1224,41 @@ (bbdb-initialize 'gnus 'message) (bbdb-mua-auto-update-init 'message))) +(use-package mm-view + :config (progn + ;; Fix: mm-view does not seem to support verifying S/MIME messages + ;; using gpgsm, so we add a simple fix here + + (defun mm-view-pkcs7-verify (handle) + (let ((verified nil)) + (with-temp-buffer + (if (eq mml-smime-use 'epg) + ;; Use gpgsm + (progn + (insert-buffer-substring (mm-handle-buffer handle)) + (setq verified (epg-verify-string (epg-make-context 'CMS) + (base64-decode-string (buffer-string))))) + ;; FIXME: insert valid signature + ;; use openssl + (progn + (insert "MIME-Version: 1.0\n") + (mm-insert-headers "application/pkcs7-mime" "base64" "smime.p7m") + (insert-buffer-substring (mm-handle-buffer handle)) + (setq verified (smime-verify-region (point-min) (point-max)))))) + (goto-char (point-min)) + (mm-insert-part handle) + (if (search-forward "Content-Type: " nil t) + (delete-region (point-min) (match-beginning 0))) + (goto-char (point-max)) + (if (re-search-backward "--\r?\n?" nil t) + (delete-region (match-end 0) (point-max))) + (unless verified + (insert-buffer-substring smime-details-buffer))) + (goto-char (point-min)) + (while (search-forward "\r\n" nil t) + (replace-match "\n")) + t))) + ;; * Crypto