Fixed indent.
[elisp/epg.git] / epa-dired.el
index 4f0a3b7..aa4e406 100644 (file)
@@ -1,3 +1,28 @@
+;;; epa-dired.el --- the EasyPG Assistant, dired extension
+;; Copyright (C) 2006 Daiki Ueno
+
+;; Author: Daiki Ueno <ueno@unixuser.org>
+;; Keywords: PGP, GnuPG
+
+;; This file is part of EasyPG.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Code:
+
 (require 'epa)
 (require 'dired)
 
 
 (fset 'epa-dired-prefix epa-dired-map)
 
-(defun epa-dired-setup ()
-  (add-hook 'dired-mode-hook 'epa-dired-mode-hook))
-
 (defun epa-dired-mode-hook ()
   (define-key dired-mode-map ":" 'epa-dired-prefix))
 
-(defun epa-dired-decrypt-file (file)
-  (let ((context (epg-make-context)))
-    (message "Decrypting %s..." (file-name-nondirectory file))
-    (epg-decrypt-file context file)
-    (message "Decrypting %s...done" (file-name-nondirectory file))))
-
 (defun epa-dired-do-decrypt ()
+  "Decrypt marked files."
   (interactive)
   (let ((file-list (dired-get-marked-files)))
     (while file-list
-      (epa-dired-decrypt-file (car file-list))
-      (setq file-list (cdr file-list)))))
-
-(defun epa-dired-verify-file (file)
-  (let* ((context (epg-make-context))
-        (plain (if (equal (file-name-extension file) "sig")
-                   (file-name-sans-extension file))))
-    (message "Verifying %s..." (file-name-nondirectory file))
-    (epg-verify-file context file plain)
-    (message "Verifying %s...done" (file-name-nondirectory file))))
+      (epa-decrypt-file (expand-file-name (car file-list)))
+      (setq file-list (cdr file-list)))
+    (revert-buffer)))
 
 (defun epa-dired-do-verify ()
+  "Verify marked files."
   (interactive)
   (let ((file-list (dired-get-marked-files)))
     (while file-list
-      (epa-dired-verify-file (car file-list))
+      (epa-verify-file (expand-file-name (car file-list)))
       (setq file-list (cdr file-list)))))
 
-(defun epa-dired-sign-file (file detached)
-  (let ((signature (concat file (if detached ".sig" ".gpg")))
-       (context (epg-make-context)))
-    (message "Signing %s..." (file-name-nondirectory file))
-    (epg-sign-file context file signature)
-    (message "Signing %s...done" (file-name-nondirectory file))))
-
-(defun epa-dired-do-sign (&optional detached)
-  (interactive "p")
+(defun epa-dired-do-sign ()
+  "Sign marked files."
+  (interactive)
   (let ((file-list (dired-get-marked-files)))
     (while file-list
-      (epa-dired-sign-file (expand-file-name (car file-list)) detached)
+      (epa-sign-file
+       (expand-file-name (car file-list))
+       (epa-select-keys (epg-make-context) "Select keys for signing.
+If no one is selected, default secret key is used.  "
+                       nil t)
+       (y-or-n-p "Make a detached signature? "))
       (setq file-list (cdr file-list)))
     (revert-buffer)))
 
-(defun epa-dired-encrypt-file (keys file)
-  (let ((cipher (concat file ".gpg"))
-       (context (epg-make-context)))
-    (message "Encrypting %s..." (file-name-nondirectory file))
-    (epg-encrypt-file context
-                     file
-                     (mapcar (lambda (key)
-                               (epg-sub-key-id
-                                (car (epg-key-sub-key-list key))))
-                             keys)
-                     cipher)
-    (message "Encrypting %s...done" (file-name-nondirectory file))))
-
 (defun epa-dired-do-encrypt ()
+  "Encrypt marked files."
   (interactive)
   (let ((file-list (dired-get-marked-files)))
     (while file-list
-      (epa-ask-keys "Select keys for encryption.  \
-If no keys are selected, symmetric encryption will be performed.  "
-                   #'epa-dired-encrypt-file nil
-                   (expand-file-name (car file-list)))
-      (setq file-list (cdr file-list)))))
+      (epa-encrypt-file
+       (expand-file-name (car file-list))
+       (epa-select-keys (epg-make-context) "Select recipents for encryption.
+If no one is selected, symmetric encryption will be performed.  "))
+      (setq file-list (cdr file-list)))
+    (revert-buffer)))
 
 (provide 'epa-dired)