X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=epg.el;h=241ee927f4da1aa064615485292c7d32b5a724b3;hb=a1e7cd13bfc9fa14fb80be961892d727ed4bd347;hp=cf6cdd442f139dd99d95fe24f52830cc008c239a;hpb=ba07aba5851c289d7d6107d7f0c540d4e71451c5;p=elisp%2Fepg.git diff --git a/epg.el b/epg.el index cf6cdd4..241ee92 100644 --- a/epg.el +++ b/epg.el @@ -262,9 +262,9 @@ This function is for internal use only." (with-temp-buffer (set-buffer-multibyte nil) (if (file-exists-p (epg-context-output-file context)) - (let ((coding-system-for-read (if (epg-context-output-file context) + (let ((coding-system-for-read (if (epg-context-textmode context) 'raw-text - 'binary))) + 'binary))) (insert-file-contents (epg-context-output-file context)) (buffer-string))))) @@ -488,6 +488,8 @@ This function is for internal use only." (setq alist (cdr alist))) (nreverse result))) +(defalias 'epg-make-temp-file 'make-temp-file) + ;;;###autoload (defun epg-decrypt-start (context input-file) "Initiate a decrypt operation on INPUT-FILE. @@ -503,6 +505,19 @@ If you are unsure, use synchronous version of this function (epg-wait-for-status context '("BEGIN_DECRYPTION"))) ;;;###autoload +(defun epg-decrypt-file (context input-file) + "Decrypt INPUT-FILE and return the plain text." + (unwind-protect + (progn + (epg-decrypt-start context input-file) + (epg-wait-for-completion context) + (unless (epg-context-result-for context 'decrypt) + (epg-read-output context))) + (epg-reset context) + (if (file-exists-p input-file) + (delete-file input-file)))) + +;;;###autoload (defun epg-decrypt-string (context string) "Decrypt STRING and return the plain text." (let ((input-file (epg-make-temp-file "epg-input")) @@ -510,11 +525,7 @@ If you are unsure, use synchronous version of this function (unwind-protect (progn (write-region string nil input-file) - (epg-decrypt-start context input-file) - (epg-wait-for-completion context) - (unless (epg-context-result-for context 'decrypt) - (epg-read-output context))) - (epg-reset context) + (epg-decrypt-file context input-file)) (if (file-exists-p input-file) (delete-file input-file))))) @@ -540,8 +551,7 @@ If you are unsure, use synchronous version of this function (if (eq (process-status (epg-context-process context)) 'run) (process-send-string (epg-context-process context) string))) ;; Normal (or cleartext) signature. - (epg-start context - (list "--verify")) + (epg-start context (list "--verify")) (if (eq (process-status (epg-context-process context)) 'run) (process-send-string (epg-context-process context) signature)))) @@ -631,7 +641,9 @@ If you are unsure, use synchronous version of this function (list "-r" recipient)) recipients)))) (if sign - (epg-wait-for-status context '("BEGIN_SIGNING"))) + (epg-wait-for-status context '("BEGIN_SIGNING")) + (if (null recipients) + (epg-wait-for-status context '("BEGIN_ENCRYPTION")))) (if (eq (process-status (epg-context-process context)) 'run) (process-send-string (epg-context-process context) string)))