Fixed.
[elisp/epg.git] / epa.el
diff --git a/epa.el b/epa.el
index 12b5740..4d16a3c 100644 (file)
--- a/epa.el
+++ b/epa.el
@@ -527,8 +527,8 @@ If no one is selected, default secret key is used.  "
        (context (epg-make-context)))
     (epg-context-set-armor context epa-armor)
     (epg-context-set-textmode context epa-textmode)
-    (message "Signing %s..." (file-name-nondirectory file))
     (epg-context-set-signers context signers)
+    (message "Signing %s..." (file-name-nondirectory file))
     (epg-sign-file context file signature mode)
     (message "Signing %s...done" (file-name-nondirectory file))))
 
@@ -548,6 +548,24 @@ If no one is selected, symmetric encryption will be performed.  ")))
     (message "Encrypting %s...done" (file-name-nondirectory file))))
 
 ;;;###autoload
+(defun epa-decrypt-region (start end)
+  "Decrypt the current region between START and END."
+  (interactive "r")
+  (save-excursion
+    (let ((context (epg-make-context))
+         charset plain coding-system)
+      (message "Decrypting...")
+      (setq plain (epg-decrypt-string context (buffer-substring start end)))
+      (message "Decrypting...done")
+      (delete-region start end)
+      (goto-char start)
+      (insert (decode-coding-string plain coding-system-for-read))
+      (if (epg-context-result-for context 'verify)
+         (message "%s"
+                  (epg-verify-result-to-string
+                   (epg-context-result-for context 'verify)))))))
+
+;;;###autoload
 (defun epa-decrypt-armor-in-region (start end)
   "Decrypt OpenPGP armors in the current region between START and END."
   (interactive "r")
@@ -565,23 +583,26 @@ If no one is selected, symmetric encryption will be performed.  ")))
          (goto-char armor-start)
          (if (re-search-forward "^Charset: \\(.*\\)" armor-end t)
              (setq charset (match-string 1)))
-         (message "Decrypting...")
-         (setq plain (epg-decrypt-string
-                      (epg-make-context)
-                      (buffer-substring armor-start armor-end)))
-         (message "Decrypting...done")
-         (delete-region armor-start armor-end)
-         (goto-char armor-start)
          (if coding-system-for-read
              (setq coding-system coding-system-for-read)
            (if charset
                (setq coding-system (intern (downcase charset)))
              (setq coding-system 'utf-8)))
-         (insert (decode-coding-string plain coding-system))
-         (if (epg-context-result-for context 'verify)
-             (message "%s"
-                      (epg-verify-result-to-string
-                       (epg-context-result-for context 'verify)))))))))
+         (let ((coding-system-for-read coding-system))
+           (epa-decrypt-region start end)))))))
+
+;;;###autoload
+(defun epa-verify-region (start end)
+  "Verify the current region between START and END."
+  (interactive "r")
+  (let ((context (epg-make-context)))
+    (epg-verify-string context
+                      (encode-coding-string
+                       (buffer-substring start end)
+                       coding-system-for-write))
+    (message "%s"
+            (epg-verify-result-to-string
+             (epg-context-result-for context 'verify)))))
 
 ;;;###autoload
 (defun epa-verify-armor-in-region (start end)
@@ -608,13 +629,7 @@ If no one is selected, symmetric encryption will be performed.  ")))
                             nil t)))
          (unless armor-end
            (error "No armor tail"))
-         (epg-verify-string (epg-make-context)
-                            (encode-coding-string
-                             (buffer-substring armor-start armor-end)
-                             coding-system-for-write))
-         (message "%s"
-                  (epg-verify-result-to-string
-                   (epg-context-result-for context 'verify))))))))
+         (epa-verify-region armor-start armor-end))))))
 
 ;;;###autoload
 (defun epa-sign-region (start end signers mode)
@@ -633,8 +648,8 @@ If no one is selected, default secret key is used.  "
          signature)
       (epg-context-set-armor context epa-armor)
       (epg-context-set-textmode context epa-textmode)
-      (message "Signing...")
       (epg-context-set-signers context signers)
+      (message "Signing...")
       (setq signature (epg-sign-string context
                                       (encode-coding-string
                                        (buffer-substring start end)
@@ -678,8 +693,8 @@ If no one is selected, symmetric encryption will be performed.  ")))
   (let ((context (epg-make-context)))
     (message "Deleting...")
     (epg-delete-keys context keys allow-secret)
-    (apply #'epa-list-keys epa-list-keys-arguments)
-    (message "Deleting...done")))
+    (message "Deleting...done")
+    (apply #'epa-list-keys epa-list-keys-arguments)))
 
 ;;;###autoload
 (defun epa-import-keys (file)
@@ -688,8 +703,8 @@ If no one is selected, symmetric encryption will be performed.  ")))
   (let ((context (epg-make-context)))
     (message "Importing %s..." (file-name-nondirectory file))
     (epg-import-keys-from-file context (expand-file-name file))
-    (apply #'epa-list-keys epa-list-keys-arguments)
-    (message "Importing %s...done" (file-name-nondirectory file))))
+    (message "Importing %s...done" (file-name-nondirectory file))
+    (apply #'epa-list-keys epa-list-keys-arguments)))
 
 ;;;###autoload
 (defun epa-export-keys (keys file)