summaryrefslogtreecommitdiff
path: root/lisp/gnus/mml-smime.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2019-09-30 08:41:43 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2019-09-30 08:41:43 +0200
commit5d33839c3fc40308cd29dbd0991888ead81fbfa7 (patch)
tree47abda629562e94d15820ee3b74a7e3b4bead5c4 /lisp/gnus/mml-smime.el
parent542b78eddeba3f020349c2d02ba2d21e8613d99d (diff)
downloademacs-5d33839c3fc40308cd29dbd0991888ead81fbfa7.tar.gz
Refactor mm-decode and friends to be explicit about when errors happen
* lisp/gnus/mm-decode.el (mm-sec-status): (mm-sec-error): New functions to handle decryption problems more explicitly (bug#18393). (mm-possibly-verify-or-decrypt): Use the `sec-error' data to determine whether the operation failed or not. * lisp/gnus/mml-smime.el: Ditto. * lisp/gnus/mml2015.el: Used throughout.
Diffstat (limited to 'lisp/gnus/mml-smime.el')
-rw-r--r--lisp/gnus/mml-smime.el42
1 files changed, 18 insertions, 24 deletions
diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el
index b2e9b783522..659f2b95289 100644
--- a/lisp/gnus/mml-smime.el
+++ b/lisp/gnus/mml-smime.el
@@ -274,10 +274,9 @@ Whether the passphrase is cached at all is controlled by
(if (not good-signature)
(progn
;; we couldn't verify message, fail with openssl output as message
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info "Failed")
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-details
+ (mm-sec-error
+ 'gnus-info "Failed"
+ 'gnus-details
(concat "OpenSSL failed to verify message integrity:\n"
"-------------------------------------------\n"
openssl-output)))
@@ -290,19 +289,18 @@ Whether the passphrase is cached at all is controlled by
(while (re-search-forward "-----END CERTIFICATE-----" nil t)
(when (smime-pkcs7-email-region (point-min) (point))
(setq addresses (append (smime-buffer-as-string-region
- (point-min) (point)) addresses)))
+ (point-min) (point))
+ addresses)))
(delete-region (point-min) (point)))
(setq addresses (mapcar 'downcase addresses))))
- (if (not (member (downcase (or (mm-handle-multipart-from ctl) "")) addresses))
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info "Sender address forged")
+ (if (not (member (downcase (or (mm-handle-multipart-from ctl) ""))
+ addresses))
+ (mm-sec-error 'gnus-info "Sender address forged")
(if good-certificate
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info "Ok (sender authenticated)")
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info "Ok (sender not trusted)")))
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-details
+ (mm-sec-status 'gnus-info "Ok (sender authenticated)")
+ (mm-sec-status 'gnus-info "Ok (sender not trusted)")))
+ (mm-sec-status
+ 'gnus-details
(concat "Sender claimed to be: " (mm-handle-multipart-from ctl) "\n"
(if addresses
(concat "Addresses in certificate: "
@@ -411,24 +409,20 @@ Content-Disposition: attachment; filename=smime.p7m
(cdr handle)
"application/x-pkcs7-signature"
nil t)))))
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info "Corrupted")
+ (mm-sec-error 'gnus-info "Corrupted")
(throw 'error handle))
(setq part (replace-regexp-in-string "\n" "\r\n" part)
context (epg-make-context 'CMS))
(condition-case error
(setq plain (epg-verify-string context (mm-get-part signature) part))
(error
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info "Failed")
+ (mm-sec-error 'gnus-info "Failed")
(if (eq (car error) 'quit)
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-details "Quit.")
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-details (format "%S" error)))
+ (mm-sec-status 'gnus-details "Quit.")
+ (mm-sec-status 'gnus-details (format "%S" error)))
(throw 'error handle)))
- (mm-set-handle-multipart-parameter
- mm-security-handle 'gnus-info
+ (mm-sec-status
+ 'gnus-info
(epg-verify-result-to-string (epg-context-result-for context 'verify)))
handle)))