;; 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-raw-play-entity
+ (nth 1 (mime-entity-children entity)) ; entity-info of signature
+ (cdr (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 (start end cal)
- (let* ((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 mime-preview-buffer)
(get-largest-window)))
- (new-name (format "%s-%s" (buffer-name) entity-number))
+ (new-name
+ (format "%s-%s" (buffer-name) (mime-entity-number entity)))
(the-buf (current-buffer))
(mother mime-preview-buffer)
- (mode major-mode)
representation-type)
(set-buffer (get-buffer-create new-name))
(erase-buffer)
- (insert-buffer-substring the-buf start end)
+ (insert-buffer-substring
+ the-buf (mime-entity-point-min entity) (mime-entity-point-max 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 (start end cal)
- "Internal method to verify multipart/signed."
- (mime-raw-play-entity
- ;; entity-info of signature
- (mime-raw-find-entity-from-node-id
- ;; entity-node-id of signature
- (cons 1 (mime-raw-point-to-entity-node-id start)))
- (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 (start end cal)
+(defun mime-verify-application/pgp-signature (entity situation)
"Internal method to check PGP/MIME signature."
- (let* ((encoding (cdr (assq 'encoding cal)))
+ (let* ((start (mime-entity-point-min entity))
+ (end (mime-entity-point-max entity))
+ (encoding (cdr (assq 'encoding situation)))
(entity-node-id (mime-raw-point-to-entity-node-id start))
- (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))
- (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)
;;;
;;; It is based on RFC 2015 (PGP/MIME).
-(defun mime-method-to-decrypt-application/pgp-encrypted (start end cal)
- (let* ((entity-node-id (mime-raw-point-to-entity-node-id start))
- (mother-node-id (cdr entity-node-id))
+(defun mime-decrypt-application/pgp-encrypted (entity situation)
+ (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))
- (obeg (mime-entity-point-min oinfo))
- (oend (mime-entity-point-max oinfo))
- )
- (mime-method-for-application/pgp obeg oend 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 (start end cal)
- (let* ((entity-number (mime-raw-point-to-entity-number start))
+(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)