Function: mml2015-pgg-decrypt
mml2015-pgg-decrypt is a byte-compiled function defined in
mml2015.el.gz.
Signature
(mml2015-pgg-decrypt HANDLE CTL)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/mml2015.el.gz
(defun mml2015-pgg-decrypt (handle _ctl)
(catch 'error
(let ((pgg-errors-buffer mml2015-result-buffer)
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))
(with-temp-buffer
(mm-insert-part child)
(if (condition-case err
(prog1
(pgg-decrypt-region (point-min) (point-max))
(setq decrypt-status
(with-current-buffer mml2015-result-buffer
(buffer-string)))
(mm-sec-status 'gnus-details decrypt-status))
(error
(mm-sec-error 'gnus-details (mml2015-format-error err))
nil)
(quit
(mm-sec-error 'gnus-details "Quit.")
nil))
(with-current-buffer pgg-output-buffer
(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)
(mm-sec-status 'gnus-info "OK"
'gnus-details
(concat decrypt-status
(when (stringp (car handles))
"\n" (mm-handle-multipart-ctl-parameter
handles 'gnus-details))))
(if (listp (car handles))
handles
(list handles)))
(mm-sec-error 'gnus-info "Failed")
(throw 'error handle))))))