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