+;;; 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 (file-name-sans-extension 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 recipents for encryption.
-If no one is 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)