Function: mml2015-epg-decrypt
mml2015-epg-decrypt is a byte-compiled function defined in
mml2015.el.gz.
Signature
(mml2015-epg-decrypt HANDLE CTL)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/mml2015.el.gz
(defun mml2015-epg-decrypt (handle _ctl)
(catch 'error
(let (context plain child handles) ;; decrypt-status result
(unless (setq child (mm-find-part-by-type
(cdr handle)
"application/octet-stream" nil t))
(mm-sec-error 'gnus-info "Corrupted")
(throw 'error handle))
(setq context (epg-make-context))
(if (or mml2015-cache-passphrase mml-secure-cache-passphrase)
(epg-context-set-passphrase-callback
context
(cons 'mml-secure-passphrase-callback 'OpenPGP)))
(condition-case error
(setq plain (epg-decrypt-string context (mm-get-part child))
mml-secure-secret-key-id-list nil)
(error
(mml-secure-clear-secret-key-id-list)
(mm-sec-error 'gnus-info "Failed")
(if (eq (car error) 'quit)
(mm-sec-status 'gnus-details "Quit.")
(mm-sec-status 'gnus-details (mml2015-format-error error)))
(throw 'error handle)))
(with-temp-buffer
(insert plain)
(goto-char (point-min))
(while (search-forward "\r\n" nil t)
(replace-match "\n" t t))
(setq handles (mm-dissect-buffer t))
(mm-destroy-parts handle)
(if (epg-context-result-for context 'verify)
(mm-sec-status
'gnus-info
(concat "OK\n"
(mml2015-epg-verify-result-to-string
(epg-context-result-for context 'verify))))
(mm-sec-status 'gnus-info "OK"))
(if (stringp (car handles))
(mm-sec-status
'gnus-details
(mm-handle-multipart-ctl-parameter handles 'gnus-details))))
(if (listp (car handles))
handles
(list handles)))))