;;; mime-pgp.el --- mime-view internal methods for PGP.
-;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
+;; Copyright (C) 1995,1996,1997,1998,1999 MORIOKA Tomohiko
;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
;; Created: 1995/12/7
;; by Kazuhiko Yamamoto <kazu@is.aist-nara.ac.jp> (1995/10;
;; expired)
-;; PGP/MIME and PGP-kazu may be contrary to each other. You should
-;; decide which you support (Maybe you should not use PGP-kazu).
-
;;; Code:
(require 'mime-play)
+;;; @ Internal method for multipart/signed
+;;;
+;;; It is based on RFC 1847 (security-multipart).
+
+(defun mime-verify-multipart/signed (entity situation)
+ "Internal method to verify multipart/signed."
+ (mime-play-entity
+ (nth 1 (mime-entity-children entity)) ; entity-info of signature
+ (list (assq 'mode situation)) ; play-mode
+ ))
+
+
;;; @ internal method for application/pgp
;;;
;;; It is based on draft-kazu-pgp-mime-00.txt (PGP-kazu).
-(defun mime-method-for-application/pgp (entity cal)
- (let* ((start (mime-entity-point-min entity))
- (end (mime-entity-point-max entity))
- (entity-number (mime-raw-point-to-entity-number start))
- (p-win (or (get-buffer-window mime-preview-buffer)
+(defun mime-view-application/pgp (entity situation)
+ (let* ((p-win (or (get-buffer-window (current-buffer))
(get-largest-window)))
- (new-name (format "%s-%s" (buffer-name) entity-number))
- (the-buf (current-buffer))
- (mother mime-preview-buffer)
- (mode major-mode)
+ (new-name
+ (format "%s-%s" (buffer-name) (mime-entity-number entity)))
+ (mother (current-buffer))
representation-type)
(set-buffer (get-buffer-create new-name))
(erase-buffer)
- (insert-buffer-substring the-buf start end)
+ (mime-insert-entity entity)
(cond ((progn
(goto-char (point-min))
(re-search-forward "^-+BEGIN PGP SIGNED MESSAGE-+$" nil t))
(while (re-search-forward "^- -" nil t)
(replace-match "-")
)
- (setq representation-type
- (cdr (or (assq mode mime-raw-representation-type-alist)
- (assq t mime-raw-representation-type-alist))))
+ (setq representation-type (if (mime-entity-cooked-p entity)
+ 'cooked))
)
((progn
(goto-char (point-min))
(and
(search-forward "\n\n")
(match-end 0)))
- (setq representation-type (function mime-text-decode-buffer))
+ (setq representation-type 'binary)
))
(setq major-mode 'mime-show-message-mode)
- (setq mime-raw-representation-type representation-type)
- (save-window-excursion (mime-view-mode mother))
+ (save-window-excursion (mime-view-buffer nil nil mother
+ nil representation-type))
(set-window-buffer p-win mime-preview-buffer)
))
-;;; @ Internal method for multipart/signed
-;;;
-;;; It is based on RFC 1847 (security-multipart).
-
-(defun mime-method-to-verify-multipart/signed (entity cal)
- "Internal method to verify multipart/signed."
- (mime-raw-play-entity
- (nth 1 (mime-entity-children entity)) ; entity-info of signature
- (cdr (assq 'mode cal)) ; play-mode
- ))
-
-
;;; @ Internal method for application/pgp-signature
;;;
;;; It is based on RFC 2015 (PGP/MIME).
(t "Bad signature")))
))))
-(defun mime-method-to-verify-application/pgp-signature (entity cal)
+(defun mime-verify-application/pgp-signature (entity situation)
"Internal method to check PGP/MIME signature."
- (let* ((start (mime-entity-point-min entity))
- (end (mime-entity-point-max entity))
- (encoding (cdr (assq 'encoding cal)))
- (entity-node-id (mime-raw-point-to-entity-node-id start))
- (mother-node-id (cdr entity-node-id))
+ (let* ((entity-node-id (mime-entity-node-id entity))
+ (mother (mime-entity-parent entity))
(knum (car entity-node-id))
(onum (if (> knum 0)
(1- knum)
(1+ knum)))
- (oinfo (mime-raw-find-entity-from-node-id
- (cons onum mother-node-id) mime-raw-message-info))
- (basename (expand-file-name "tm" mime-temp-directory))
+ (orig-entity (nth onum (mime-entity-children mother)))
+ (basename (expand-file-name "tm" temporary-file-directory))
(orig-file (make-temp-name basename))
(sig-file (concat orig-file ".sig"))
)
- (mime-raw-write-region (mime-entity-point-min oinfo)
- (mime-entity-point-max oinfo)
- orig-file)
+ (mime-write-entity orig-entity orig-file)
(save-excursion (mime-show-echo-buffer))
- (mime-write-decoded-region (save-excursion
- (goto-char start)
- (and (search-forward "\n\n")
- (match-end 0))
- ) end sig-file encoding)
+ (mime-write-entity-content entity sig-file)
(or (mime-pgp-check-signature mime-echo-buffer-name orig-file)
(let (pgp-id)
(save-excursion
;;;
;;; It is based on RFC 2015 (PGP/MIME).
-(defun mime-method-to-decrypt-application/pgp-encrypted (entity cal)
+(defun mime-decrypt-application/pgp-encrypted (entity situation)
(let* ((entity-node-id (mime-entity-node-id entity))
- (mother-node-id (cdr entity-node-id))
+ (mother (mime-entity-parent entity))
(knum (car entity-node-id))
(onum (if (> knum 0)
(1- knum)
(1+ knum)))
- (oinfo (mime-raw-find-entity-from-node-id
- (cons onum mother-node-id) mime-raw-message-info)))
- (mime-method-for-application/pgp oinfo cal)
+ (orig-entity (nth onum (mime-entity-children mother))))
+ (mime-view-application/pgp orig-entity situation)
))
;;;
;;; It is based on RFC 2015 (PGP/MIME).
-(defun mime-method-to-add-application/pgp-keys (entity cal)
+(defun mime-add-application/pgp-keys (entity situation)
(let* ((start (mime-entity-point-min entity))
(end (mime-entity-point-max entity))
(entity-number (mime-raw-point-to-entity-number start))
(new-name (format "%s-%s" (buffer-name) entity-number))
- (encoding (cdr (assq 'encoding cal)))
+ (encoding (cdr (assq 'encoding situation)))
str)
(setq str (buffer-substring start end))
(switch-to-buffer new-name)