X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=epa-dired.el;h=aa4e40645cc7ab3a4c85c59f6c9c69e8c5d77d76;hb=9c4b50c1650d0f1c9d0c6189d721de83d57d8ce6;hp=9b2dc447400a0d8252ba855515eb8a48263eb66e;hpb=f4a0e4453626050f816bce237441b2c5bd511386;p=elisp%2Fepg.git diff --git a/epa-dired.el b/epa-dired.el index 9b2dc44..aa4e406 100644 --- a/epa-dired.el +++ b/epa-dired.el @@ -1,3 +1,28 @@ +;;; epa-dired.el --- the EasyPG Assistant, dired extension +;; Copyright (C) 2006 Daiki Ueno + +;; Author: Daiki Ueno +;; 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) @@ -11,83 +36,51 @@ (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* ((default-name (file-name-sans-extension file)) - (plain (read-file-name - (concat "To file (default " - (file-name-nondirectory default-name) - ") ") - (file-name-directory default-name) - default-name)) - (context (epg-make-context))) - (message "Decrypting %s..." (file-name-nondirectory file)) - (epg-decrypt-file context file plain) - (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 (file) - (let ((cipher (concat file ".gpg")) - (context (epg-make-context)) - (keys (epa-select-keys "Select recipents for encryption. -If no one is selected, symmetric encryption will be performed. "))) - (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-dired-encrypt-file (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)