*** pgg-gpg.el 09 Aug 2005 12:53:45 +0200 1.6 --- pgg-gpg.el 07 Okt 2005 11:47:44 +0200 *************** *** 4,9 **** --- 4,10 ---- ;; 2005 Free Software Foundation, Inc. ;; Author: Daiki Ueno + ;; Symmetric encryption added by: Sascha Wilde ;; Created: 1999/10/28 ;; Keywords: PGP, OpenPGP, GnuPG *************** *** 150,156 **** pgg-gpg-user-id))) (args (append ! (list "--batch" "--armor" "--always-trust" "--encrypt") (if sign (list "--sign" "--local-user" pgg-gpg-user-id)) (if recipients (apply #'nconc --- 151,157 ---- pgg-gpg-user-id))) (args (append ! (list "--batch" "--textmode" "--armor" "--always-trust" "--encrypt") (if sign (list "--sign" "--local-user" pgg-gpg-user-id)) (if recipients (apply #'nconc *************** *** 169,174 **** --- 170,185 ---- (pgg-gpg-possibly-cache-passphrase passphrase))) (pgg-process-when-success))) + (defun pgg-gpg-encrypt-symmetric-region (start end) + "Encrypt the current region between START and END with symmetric cipher." + (let* ((passphrase + (pgg-read-passphrase "GnuPG passphrase for symmetric encryption: ")) + (args + (append (list "--batch" "--textmode" "--armor" "--symmetric" )))) + (pgg-as-lbt start end 'CRLF + (pgg-gpg-process-region start end passphrase pgg-gpg-program args)) + (pgg-process-when-success))) + (defun pgg-gpg-decrypt-region (start end) "Decrypt the current region between START and END." (let* ((current-buffer (current-buffer)) *************** *** 180,186 **** (pgg-gpg-user-id (or key pgg-gpg-user-id pgg-default-user-id)) (passphrase (pgg-read-passphrase ! (format "GnuPG passphrase for %s: " pgg-gpg-user-id) pgg-gpg-user-id)) (args '("--batch" "--decrypt"))) (pgg-gpg-process-region start end passphrase pgg-gpg-program args) --- 191,200 ---- (pgg-gpg-user-id (or key pgg-gpg-user-id pgg-default-user-id)) (passphrase (pgg-read-passphrase ! (format (if (pgg-gpg-symmetric-key-p message-keys) ! "Passphrase for symmetric dencryption: " ! "GnuPG passphrase for %s: ") ! pgg-gpg-user-id) pgg-gpg-user-id)) (args '("--batch" "--decrypt"))) (pgg-gpg-process-region start end passphrase pgg-gpg-program args) *************** *** 189,194 **** --- 203,215 ---- (goto-char (point-min)) (re-search-forward "^\\[GNUPG:] DECRYPTION_OKAY\\>" nil t)))) + (defun pgg-gpg-symmetric-key-p (message-keys) + "Check if MESSAGE-KEYS contains a symmetric encryption indicator." + (dolist (key message-keys result) + (when (and (eq (car key) 3) + (member '(symmetric-key-algorithm) key)) + (setq result key)))) + (defun pgg-gpg-select-matching-key (message-keys secret-keys) "Choose a key from MESSAGE-KEYS that matches one of the keys in SECRET-KEYS." (loop for message-key in message-keys