`mime/temp-buffer-name' -> `mime-temp-buffer-name'.
[elisp/semi.git] / mime-pgp.el
index 523fc83..da89dac 100644 (file)
@@ -5,8 +5,8 @@
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/12/7
 ;;     Renamed: 1997/2/27 from tm-pgp.el
-;; Version: $Id: mime-pgp.el,v 0.2 1997-03-04 13:07:54 morioka Exp $
-;; Keywords: mail, news, MIME, multimedia, PGP, security
+;; Version: $Id: mime-pgp.el,v 0.20 1997-07-02 16:28:49 morioka Exp $
+;; Keywords: PGP, security, MIME, multimedia, mail, news
 
 ;; This file is part of SEMI (SEMI is Emacs MIME Interfaces).
 
 
 (defun mime-article/view-application/pgp (beg end cal)
   (let* ((cnum (mime-article/point-content-number beg))
-        (cur-buf (current-buffer))
-        (p-win (or (get-buffer-window mime::article/preview-buffer)
+        (p-win (or (get-buffer-window mime-view-buffer)
                    (get-largest-window)))
         (new-name (format "%s-%s" (buffer-name) cnum))
-        (mother mime::article/preview-buffer)
+        (the-buf (current-buffer))
+        (mother mime-view-buffer)
         (mode major-mode)
-        code-converter
-        (str (buffer-substring beg end))
-        )
+        text-decoder)
     (set-buffer (get-buffer-create new-name))
     (erase-buffer)
-    (insert str)
+    (insert-buffer-substring the-buf beg end)
     (cond ((progn
             (goto-char (point-min))
             (re-search-forward "^-+BEGIN PGP SIGNED MESSAGE-+$" nil t)
           (while (re-search-forward "^- -" nil t)
             (replace-match "-")
             )
-          (setq code-converter
-                (or
-                 (cdr (assq mode mime-viewer/code-converter-alist))
-                 (function mime-viewer/default-code-convert-region)))
+          (setq text-decoder
+                (cdr (or (assq mode mime-text-decoder-alist)
+                         (assq t    mime-text-decoder-alist))))
           )
          ((progn
             (goto-char (point-min))
                          (and
                           (search-forward "\n\n")
                           (match-end 0)))
-          (setq code-converter (function mime-charset/decode-buffer))
+          (setq text-decoder (function mime-text-decode-buffer))
           ))
-    (setq major-mode 'mime/show-message-mode)
-    (setq mime::article/code-converter code-converter)
-    (save-window-excursion (mime/viewer-mode mother))
-    (set-window-buffer p-win mime::article/preview-buffer)
+    (setq major-mode 'mime-show-message-mode)
+    (setq mime-text-decoder text-decoder)
+    (save-window-excursion (mime-view-mode mother))
+    (set-window-buffer p-win mime-view-buffer)
     ))
 
-(set-atype 'mime/content-decoding-condition
+(set-atype 'mime-acting-condition
           '((type . "application/pgp")
             (method . mime-article/view-application/pgp)
             ))
 
-(set-atype 'mime/content-decoding-condition
+(set-atype 'mime-acting-condition
           '((type . "text/x-pgp")
             (method . mime-article/view-application/pgp)
             ))
 ;;;
 ;;; It is based on RFC 2015.
 
+(defvar mime-pgp-command "pgp"
+  "*Name of the PGP command.")
+
 (defvar mime-pgp-default-language 'en
   "*Symbol of language for pgp.
 It should be ISO 639 2 letter language code such as en, ja, ...")
@@ -139,11 +139,10 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
     (erase-buffer)
     )
   (let* ((lang (or mime-pgp-default-language 'en))
-        (status
-         (call-process-region (point-min)(point-max)
-                              "pgp" nil output-buffer nil orig-file
-                              (format "+language=%s" lang)
-                              ))
+        (status (call-process-region (point-min)(point-max)
+                                     mime-pgp-command
+                                     nil output-buffer nil
+                                     orig-file (format "+language=%s" lang)))
         (regexp (cdr (assq lang mime-pgp-good-signature-regexp-alist)))
         )
     (if (= status 0)
@@ -157,11 +156,11 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
                  (buffer-substring (match-beginning 0) (match-end 0))
                  )
                 (t
-                 "Bad signature"
-                 )))
+                 "Bad signature")))
          ))))
 
 (defun mime-article/check-pgp-signature (beg end cal)
+  "Internal method to check PGP/MIME signature."
   (let* ((encoding (cdr (assq 'encoding cal)))
         (cnum (mime-article/point-content-number beg))
         (rcnum (reverse cnum))
@@ -170,20 +169,21 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
         (onum (if (> knum 0)
                   (1- knum)
                 (1+ knum)))
+        (raw-buf (current-buffer))
         (oinfo (mime-article/rcnum-to-cinfo (cons onum rmcnum)
                                             mime::article/content-info))
-        status str kbuf
+        kbuf
         (basename (expand-file-name "tm" mime-temp-directory))
         (orig-file (make-temp-name basename))
         (sig-file (concat orig-file ".sig"))
         )
     (save-excursion
-      (setq str (buffer-substring
-                (mime::content-info/point-min oinfo)
-                (mime::content-info/point-max oinfo)
-                ))
-      (set-buffer (get-buffer-create mime/temp-buffer-name))
-      (insert str)
+      (let ((p-min (mime::content-info/point-min oinfo))
+           (p-max (mime::content-info/point-max oinfo))
+           )
+       (set-buffer (get-buffer-create mime-temp-buffer-name))
+       (insert-buffer-substring raw-buf p-min p-max)
+       )
       (goto-char (point-min))
       (while (re-search-forward "\n" nil t)
        (replace-match "\r\n")
@@ -191,25 +191,23 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
       (as-binary-output-file (write-file orig-file))
       (kill-buffer (current-buffer))
       )
+    (save-excursion (mime-show-echo-buffer))
     (save-excursion
-      (mime-article/show-output-buffer)
-      )
-    (save-excursion
-      (setq str (buffer-substring
-                (save-excursion
-                  (goto-char beg)
-                  (and (search-forward "\n\n")
-                       (match-end 0)))
-                end))
-      (set-buffer (setq kbuf (get-buffer-create mime/temp-buffer-name)))
-      (insert str)
+      (let ((p-min (save-excursion
+                    (goto-char beg)
+                    (and (search-forward "\n\n")
+                         (match-end 0))
+                    )))
+       (set-buffer (setq kbuf (get-buffer-create mime-temp-buffer-name)))
+       (insert-buffer-substring raw-buf p-min end)
+       )
       (mime-decode-region (point-min)(point-max) encoding)
       (as-binary-output-file (write-file sig-file))
       (or (mime::article/call-pgp-to-check-signature
-          mime/output-buffer-name orig-file)
+          mime-echo-buffer-name orig-file)
          (let (pgp-id)
            (save-excursion
-             (set-buffer mime/output-buffer-name)
+             (set-buffer mime-echo-buffer-name)
              (goto-char (point-min))
              (let ((regexp (cdr (assq (or mime-pgp-default-language 'en)
                                       mime-pgp-key-expected-regexp-alist))))
@@ -230,10 +228,10 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
                (progn
                  (funcall (pgp-function 'fetch-key) (cons nil pgp-id))
                  (mime::article/call-pgp-to-check-signature
-                  mime/output-buffer-name orig-file)
+                  mime-echo-buffer-name orig-file)
                  ))
            ))
-      (let ((other-window-scroll-buffer mime/output-buffer-name))
+      (let ((other-window-scroll-buffer mime-echo-buffer-name))
        (scroll-other-window 8)
        )
       (kill-buffer kbuf)
@@ -241,7 +239,7 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
       (delete-file sig-file)
       )))
 
-(set-atype 'mime/content-decoding-condition
+(set-atype 'mime-acting-condition
           '((type . "application/pgp-signature")
             (method . mime-article/check-pgp-signature)
             ))
@@ -267,7 +265,7 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
     (mime-article/view-application/pgp obeg oend cal)
     ))
 
-(set-atype 'mime/content-decoding-condition
+(set-atype 'mime-acting-condition
           '((type . "application/pgp-encrypted")
             (method . mime-article/decrypt-pgp)
             ))
@@ -279,12 +277,8 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
 
 (defun mime-article/add-pgp-keys (beg end cal)
   (let* ((cnum (mime-article/point-content-number beg))
-        (cur-buf (current-buffer))
         (new-name (format "%s-%s" (buffer-name) cnum))
-        (mother mime::article/preview-buffer)
-        (charset (cdr (assoc "charset" cal)))
         (encoding (cdr (assq 'encoding cal)))
-        (mode major-mode)
         str)
     (setq str (buffer-substring beg end))
     (switch-to-buffer new-name)
@@ -300,7 +294,7 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
     (kill-buffer (current-buffer))
     ))
 
-(set-atype 'mime/content-decoding-condition
+(set-atype 'mime-acting-condition
           '((type . "application/pgp-keys")
             (method . mime-article/add-pgp-keys)
             ))