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))))))