* epa-file.el
[elisp/epg.git] / epa-file.el
index 2b47373..ff5b65f 100644 (file)
   :type 'regexp
   :group 'epa-file)
 
+(defcustom epa-file-cache-passphrase-for-symmetric-encryption nil
+  "If t, cache passphrase for symmetric encryption."
+  :type 'boolean
+  :group 'epa-file)
+
 (defvar epa-file-handler
   (cons epa-file-name-regexp 'epa-file-handler))
-  
+
 (defvar epa-file-passphrase-alist nil)
 
 (defun epa-file-passphrase-callback-function (context key-id file)
-  (if (eq key-id 'SYM)
+  (if (and epa-file-cache-passphrase-for-symmetric-encryption
+          (eq key-id 'SYM))
       (let ((entry (assoc file epa-file-passphrase-alist))
            passphrase)
        (or (copy-sequence (cdr entry))
                (setq entry (list file)
                      epa-file-passphrase-alist (cons entry
                                                 epa-file-passphrase-alist)))
-             (setq passphrase (epg-passphrase-callback-function context
+             (setq passphrase (epa-passphrase-callback-function context
                                                                 key-id nil))
              (setcdr entry (copy-sequence passphrase))
              passphrase)))
-    (epg-passphrase-callback-function context key-id nil)))
+    (epa-passphrase-callback-function context key-id nil)))
 
 (defun epa-file-handler (operation &rest args)
   (save-match-data
      context
      (cons #'epa-file-passphrase-callback-function
           file))
+    (epg-context-set-progress-callback context
+                                      #'epa-progress-callback-function)
     (unwind-protect
        (progn
          (if replace
      context
      (cons #'epa-file-passphrase-callback-function
           file))
+    (epg-context-set-progress-callback context
+                                      #'epa-progress-callback-function)
     (condition-case error
        (setq string
              (epg-encrypt-string