This commit was generated by cvs2svn to compensate for changes in r296,
[elisp/tm.git] / tm-pgp.el
index b452eb8..0970200 100644 (file)
--- a/tm-pgp.el
+++ b/tm-pgp.el
@@ -8,7 +8,7 @@
 ;;; Maintainer: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;;; Created: 1995/12/7
 ;;; Version:
-;;;    $Id: tm-pgp.el,v 5.0 1995/12/14 15:41:18 morioka Exp $
+;;;    $Id: tm-pgp.el,v 7.6 1995/12/23 10:16:40 morioka Exp $
 ;;; Keywords: mail, news, MIME, multimedia, PGP, security
 ;;;
 ;;; This file is part of tm (Tools for MIME).
@@ -29,9 +29,9 @@
 ;;;
 ;;; Commentary:
 ;;;    This module is based on 2 drafts about PGP MIME integration:
-;;;    - draft-elkins-pem-pgp-01.txt
+;;;    - draft-elkins-pem-pgp-02.txt
 ;;;            ``MIME Security with Pretty Good Privacy (PGP)''
-;;;            by Michael Elkins <elkins@aero.org> (1995/9)
+;;;            by Michael Elkins <elkins@aero.org> (1995/11)
 ;;;    - draft-kazu-pgp-mime-00.txt
 ;;;            ``PGP MIME Integration''
 ;;;            by Kazuhiko Yamamoto <kazu@is.aist-nara.ac.jp> (1995/10)
             (method . mime-article/view-application/pgp)
             ))
 
+(set-atype 'mime/content-decoding-condition
+          '((type . "text/x-pgp")
+            (method . mime-article/view-application/pgp)
+            ))
+
 
 ;;; @ Internal method for application/pgp-signature
 ;;;
-;;; It is based on draft-elkins-pem-pgp-01.txt
+;;; It is based on draft-elkins-pem-pgp-02.txt
 
 (defun mime-article/check-pgp-signature (beg end cal)
-  (let* ((cnum (mime-article/point-content-number beg))
+  (let* ((encoding (cdr (assq 'encoding cal)))
+        (cnum (mime-article/point-content-number beg))
         (rcnum (reverse cnum))
         (rmcnum (cdr rcnum))
         (knum (car rcnum))
-        (onum (if (>= knum 0)
+        (onum (if (> knum 0)
                   (1- knum)
                 (1+ knum)))
         (oinfo (mime-article/rcnum-to-cinfo (cons onum rmcnum)
       (while (re-search-forward "\n" nil t)
        (replace-match "\r\n")
        )
-      (write-file orig-file)
+      (let ((mc-flag nil)                   ; for Mule
+           (file-coding-system
+            (if (featurep 'mule) *noconv*))
+           kanji-flag                      ; for NEmacs
+           (emx-binary-mode t)             ; for OS/2
+           jka-compr-compression-info-list ; for jka-compr
+           jam-zcat-filename-list          ; for jam-zcat
+           require-final-newline)
+       (write-file orig-file)
+       )
       (kill-buffer (current-buffer))
       )
     (save-excursion
                 end))
       (set-buffer (setq kbuf (get-buffer-create mime/temp-buffer-name)))
       (insert str)
-      (base64-decode-region (point-min)(point-max))
-      (let ((file-coding-system *noconv*)
-           jka-compr-compression-info-list
-           jam-zcat-filename-list)
+      (mime/decode-region encoding (point-min)(point-max))
+      (let ((mc-flag nil)                   ; for Mule
+           (file-coding-system
+            (if (featurep 'mule) *noconv*))
+           kanji-flag                      ; for NEmacs
+           (emx-binary-mode t)             ; for OS/2
+           jka-compr-compression-info-list ; for jka-compr
+           jam-zcat-filename-list          ; for jam-zcat
+           require-final-newline)
        (write-file sig-file)
        )
       ;;(define-program-coding-system (current-buffer) "pgp" *noconv*)
             ))
 
 
+;;; @ Internal method for application/pgp-encrypted
+;;;
+;;; It is based on draft-elkins-pem-pgp-02.txt
+
+(defun mime-article/decrypt-pgp (beg end cal)
+  (let* ((cnum (mime-article/point-content-number beg))
+        (rcnum (reverse cnum))
+        (rmcnum (cdr rcnum))
+        (knum (car rcnum))
+        (onum (if (> knum 0)
+                  (1- knum)
+                (1+ knum)))
+        (oinfo (mime-article/rcnum-to-cinfo (cons onum rmcnum)
+                                            mime::article/content-info))
+        (obeg (mime::content-info/point-min oinfo))
+        (oend (mime::content-info/point-max oinfo))
+        )
+    (mime-article/view-application/pgp obeg oend cal)
+    ))
+
+(set-atype 'mime/content-decoding-condition
+          '((type . "application/pgp-encrypted")
+            (method . mime-article/decrypt-pgp)
+            ))
+
+
 ;;; @ Internal method for application/pgp-keys
 ;;;
-;;; It is based on draft-elkins-pem-pgp-01.txt
+;;; It is based on draft-elkins-pem-pgp-02.txt
+
+(autoload 'mc-snarf-keys "mc-toplev")
 
 (defun mime-article/add-pgp-keys (beg end cal)
   (let* ((cnum (mime-article/point-content-number beg))