From 5d011badaf6a7e78802cb944a50bde452eaa0c66 Mon Sep 17 00:00:00 2001 From: Simon Josefsson Date: Wed, 1 Aug 2001 22:24:54 +0000 Subject: [PATCH] 2001-08-02 Simon Josefsson * smime.el (smime-sign-region): Handle stderr. (smime-encrypt-region): Ditto. --- lisp/ChangeLog | 3 +++ lisp/smime.el | 35 +++++++++++++++++++++++------------ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ab2abc28b..b1fa09a7d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2001-08-02 Simon Josefsson + * smime.el (smime-sign-region): Handle stderr. + (smime-encrypt-region): Ditto. + * mm-view.el (mm-pkcs7-signed-magic): Make it a regexp. Don't match the ASN.1 length bytes. (mm-pkcs7-enveloped-magic): Ditto. diff --git a/lisp/smime.el b/lisp/smime.el index 2d47307fe..f7442de01 100644 --- a/lisp/smime.el +++ b/lisp/smime.el @@ -233,23 +233,28 @@ to include in its caar." (let ((keyfile (car keyfiles)) (certfiles (and (cdr keyfiles) (cadr keyfiles))) (buffer (generate-new-buffer (generate-new-buffer-name " *smime*"))) - (passphrase (smime-ask-passphrase))) + (passphrase (smime-ask-passphrase)) + (tmpfile (make-temp-file "smime"))) (if passphrase (setenv "GNUS_SMIME_PASSPHRASE" passphrase)) (prog1 - (when (apply 'smime-call-openssl-region b e buffer "smime" "-sign" - "-signer" (expand-file-name keyfile) - (append - (smime-make-certfiles certfiles) - (if passphrase - (list "-passin" "env:GNUS_SMIME_PASSPHRASE")))) + (when (prog1 + (apply 'smime-call-openssl-region b e (list buffer tmpfile) + "smime" "-sign" "-signer" (expand-file-name keyfile) + (append + (smime-make-certfiles certfiles) + (if passphrase + (list "-passin" "env:GNUS_SMIME_PASSPHRASE")))) + (if passphrase + (setenv "GNUS_SMIME_PASSPHRASE" "" t)) + (with-current-buffer smime-details-buffer + (insert-file-contents tmpfile) + (delete-file tmpfile))) (delete-region b e) (insert-buffer-substring buffer) (when (looking-at "^MIME-Version: 1.0$") (delete-region (point) (progn (forward-line 1) (point)))) t) - (if passphrase - (setenv "GNUS_SMIME_PASSPHRASE" "" t)) (with-current-buffer (get-buffer-create smime-details-buffer) (goto-char (point-max)) (insert-buffer-substring buffer)) @@ -260,10 +265,16 @@ to include in its caar." If encryption fails, the buffer is not modified. Region is assumed to have proper MIME tags. CERTFILES is a list of filenames, each file is expected to contain of a PEM encoded certificate." - (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))) + (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*"))) + (tmpfile (make-temp-file "smime"))) (prog1 - (when (apply 'smime-call-openssl-region b e buffer "smime" "-encrypt" - smime-encrypt-cipher (mapcar 'expand-file-name certfiles)) + (when (prog1 + (apply 'smime-call-openssl-region b e (list buffer tmpfile) + "smime" "-encrypt" smime-encrypt-cipher + (mapcar 'expand-file-name certfiles)) + (with-current-buffer smime-details-buffer + (insert-file-contents tmpfile) + (delete-file tmpfile))) (delete-region b e) (insert-buffer-substring buffer) (when (looking-at "^MIME-Version: 1.0$") -- 2.25.1