From ad13aa6f309f49dfeafaa541ca68f83adf392908 Mon Sep 17 00:00:00 2001 From: ueno Date: Thu, 4 Jan 2007 05:09:41 +0000 Subject: [PATCH] * epg.el (epg-sign-string): If the GnuPG version is earlier than 1.4.3, fallback to use a temp file as an input. (epg-encrypt-string): Ditto. --- ChangeLog | 1 + epg.el | 114 +++++++++++++++++++++++++++++++++++-------------------------- 2 files changed, 67 insertions(+), 48 deletions(-) diff --git a/ChangeLog b/ChangeLog index 39c3b06..bd29f29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ pubkey-algorithm. (epg-sign-string): If the GnuPG version is earlier than 1.4.3, fallback to use a temp file as an input. + (epg-encrypt-string): Ditto. 2006-12-31 Daiki Ueno diff --git a/epg.el b/epg.el index 9e87006..5263632 100644 --- a/epg.el +++ b/epg.el @@ -2090,36 +2090,37 @@ Otherwise, it makes a cleartext signature." If optional 3rd argument MODE is t or 'detached, it makes a detached signature. If it is nil or 'normal, it makes a normal signature. Otherwise, it makes a cleartext signature." - (let ((input-file (if (or (eq (epg-context-protocol context) 'CMS) - (condition-case nil - (progn - (epg-check-configuration (epg-configuration)) - t) - (error))) - (epg--make-temp-file "epg-input"))) + (let ((input-file + (unless (or (eq (epg-context-protocol context) 'CMS) + (condition-case nil + (progn + (epg-check-configuration (epg-configuration)) + t) + (error))) + (epg--make-temp-file "epg-input"))) (coding-system-for-write 'binary)) - (unwind-protect - (progn - (epg-context-set-output-file context - (epg--make-temp-file "epg-output")) - (if input-file - (write-region plain nil input-file nil 'quiet)) - (epg-start-sign context - (if input-file - (epg-make-data-from-file input-file) - (epg-make-data-from-string plain)) - mode) - (epg-wait-for-completion context) - (unless (epg-context-result-for context 'sign) - (if (epg-context-result-for context 'error) - (error "Sign failed: %S" - (epg-context-result-for context 'error)) - (error "Sign failed"))) - (epg-read-output context)) - (epg-delete-output-file context) - (if input-file - (delete-file input-file)) - (epg-reset context)))) + (unwind-protect + (progn + (epg-context-set-output-file context + (epg--make-temp-file "epg-output")) + (if input-file + (write-region plain nil input-file nil 'quiet)) + (epg-start-sign context + (if input-file + (epg-make-data-from-file input-file) + (epg-make-data-from-string plain)) + mode) + (epg-wait-for-completion context) + (unless (epg-context-result-for context 'sign) + (if (epg-context-result-for context 'error) + (error "Sign failed: %S" + (epg-context-result-for context 'error)) + (error "Sign failed"))) + (epg-read-output context)) + (epg-delete-output-file context) + (if input-file + (delete-file input-file)) + (epg-reset context)))) ;;;###autoload (defun epg-start-encrypt (context plain recipients @@ -2207,25 +2208,42 @@ If RECIPIENTS is nil, it performs symmetric encryption." &optional sign always-trust) "Encrypt a string PLAIN. If RECIPIENTS is nil, it performs symmetric encryption." - (unwind-protect - (progn - (epg-context-set-output-file context - (epg--make-temp-file "epg-output")) - (epg-start-encrypt context (epg-make-data-from-string plain) - recipients sign always-trust) - (epg-wait-for-completion context) - (if (and sign - (not (epg-context-result-for context 'sign))) - (if (epg-context-result-for context 'error) - (error "Sign failed: %S" - (epg-context-result-for context 'error)) - (error "Sign failed"))) - (if (epg-context-result-for context 'error) - (error "Encrypt failed: %S" - (epg-context-result-for context 'error))) - (epg-read-output context)) - (epg-delete-output-file context) - (epg-reset context))) + (let ((input-file + (unless (or (not sign) + (eq (epg-context-protocol context) 'CMS) + (condition-case nil + (progn + (epg-check-configuration (epg-configuration)) + t) + (error))) + (epg--make-temp-file "epg-input"))) + (coding-system-for-write 'binary)) + (unwind-protect + (progn + (epg-context-set-output-file context + (epg--make-temp-file "epg-output")) + (if input-file + (write-region plain nil input-file nil 'quiet)) + (epg-start-encrypt context + (if input-file + (epg-make-data-from-file input-file) + (epg-make-data-from-string plain)) + recipients sign always-trust) + (epg-wait-for-completion context) + (if (and sign + (not (epg-context-result-for context 'sign))) + (if (epg-context-result-for context 'error) + (error "Sign failed: %S" + (epg-context-result-for context 'error)) + (error "Sign failed"))) + (if (epg-context-result-for context 'error) + (error "Encrypt failed: %S" + (epg-context-result-for context 'error))) + (epg-read-output context)) + (epg-delete-output-file context) + (if input-file + (delete-file input-file)) + (epg-reset context)))) ;;;###autoload (defun epg-start-export-keys (context keys) -- 1.7.10.4