Function: mml2015-mailcrypt-verify
mml2015-mailcrypt-verify is a byte-compiled function defined in
mml2015.el.gz.
Signature
(mml2015-mailcrypt-verify HANDLE CTL)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/mml2015.el.gz
(defun mml2015-mailcrypt-verify (handle ctl)
(catch 'error
(let (part)
(unless (setq part (mm-find-raw-part-by-type
ctl (or (mm-handle-multipart-ctl-parameter
ctl 'protocol)
"application/pgp-signature")
t))
(mm-sec-error 'gnus-info "Corrupted")
(throw 'error handle))
(with-temp-buffer
(insert "-----BEGIN PGP SIGNED MESSAGE-----\n")
(insert (format "Hash: %s\n\n"
(or (mml2015-fix-micalg
(mm-handle-multipart-ctl-parameter
ctl 'micalg))
"SHA1")))
(save-restriction
(narrow-to-region (point) (point))
(insert part "\n")
(goto-char (point-min))
(while (not (eobp))
(if (looking-at "^-")
(insert "- "))
(forward-line)))
(unless (setq part (mm-find-part-by-type
(cdr handle) "application/pgp-signature" nil t))
(mm-sec-error 'gnus-info "Corrupted")
(throw 'error handle))
(save-restriction
(narrow-to-region (point) (point))
(mm-insert-part part)
(goto-char (point-min))
(if (re-search-forward "^-----BEGIN PGP [^-]+-----\r?$" nil t)
(replace-match "-----BEGIN PGP SIGNATURE-----" t t))
(if (re-search-forward "^-----END PGP [^-]+-----\r?$" nil t)
(replace-match "-----END PGP SIGNATURE-----" t t)))
(let ((mc-gpg-debug-buffer (gnus-get-buffer-create " *gnus gpg debug*")))
(unless (condition-case err
(prog1
(funcall mml2015-verify-function)
(if (get-buffer " *mailcrypt stderr temp")
(mm-sec-error
'gnus-details
(with-current-buffer " *mailcrypt stderr temp"
(buffer-string))))
(if (get-buffer " *mailcrypt stdout temp")
(kill-buffer " *mailcrypt stdout temp"))
(if (get-buffer " *mailcrypt stderr temp")
(kill-buffer " *mailcrypt stderr temp"))
(if (get-buffer " *mailcrypt status temp")
(kill-buffer " *mailcrypt status temp"))
(if (get-buffer mc-gpg-debug-buffer)
(kill-buffer mc-gpg-debug-buffer)))
(error
(mm-sec-error 'gnus-details (mml2015-format-error err))
nil)
(quit
(mm-sec-error 'gnus-details "Quit.")
nil))
(mm-sec-error 'gnus-info "Failed")
(throw 'error handle))))
(mm-sec-status 'gnus-info "OK")
handle)))