* mime-pgp.el: Add autoload for `pgg-decrypt-region',
authorueno <ueno>
Fri, 5 Nov 1999 13:40:08 +0000 (13:40 +0000)
committerueno <ueno>
Fri, 5 Nov 1999 13:40:08 +0000 (13:40 +0000)
`pgg-verify-region', `pgg-snarf-keys-region'.
(mime-view-application/pgp): Don't use `pgp-function'.
(mime-verify-application/pgp-signature): Ditto.
(mime-add-application/pgp-keys): Ditto.
(mime-pgp-command): Abolish.
(mime-pgp-default-language): Abolish.
(mime-pgp-good-signature-regexp-alist): Abolish.
(mime-pgp-key-expected-regexp-alist): Abolish
(mime-pgp-check-signature): Abolish.

* semi-def.el (pgp-function-alist): Abolish.
(pgp-function): Abolish.

* mime-edit.el: Add autoload for `pgg-encrypt-region',
`pgg-sign-region', `pgg-insert-key'.
(mime-edit-sign-pgp-mime): Throw an error when
`pgg-sign-region' returns nil; don't use `pgp-function'.
(mime-edit-encrypt-pgp-mime): Throw an error when
`pgg-encrypt-region' returns nil; don't use `pgp-function'.
(mime-edit-sign-pgp-kazu): Don't use `pgp-function'.
(mime-edit-encrypt-pgp-mime): Ditto.

mime-edit.el
mime-pgp.el
semi-def.el

index 51763f3..f81bafc 100644 (file)
 (require 'pgg-def)
 (require 'pgg-parse)
 
+(autoload 'pgg-encrypt-region "pgg"
+  "PGP encryption of current region." t)
+(autoload 'pgg-sign-region "pgg"
+  "PGP signature of current region." t)
+(autoload 'pgg-insert-key "pgg"
+  "Insert PGP public key at point." t)
+
 
 ;;; @ version
 ;;;
@@ -1754,8 +1761,9 @@ Parameter must be '(PROMPT CHOICE1 (CHOISE2 ...))."
            (insert (format "Content-Transfer-Encoding: %s\n" encoding))
          )
        (insert "\n")
-       (funcall (pgp-function 'sign)
-                (point-min)(point-max))
+       (or (pgg-sign-region (point-min)(point-max))
+           (throw 'mime-edit-error 'pgp-error)
+           )
        (setq micalg
              (cdr (assq 'hash-algorithm
                         (cdar (with-current-buffer pgg-output-buffer
@@ -1836,9 +1844,10 @@ Content-Transfer-Encoding: 7bit
               (insert (format "Content-Transfer-Encoding: %s\n" encoding))
             )
           (insert "\n")
-         (let ((pgg-default-user-id (or from pgg-default-user-id)))
-           (funcall (pgp-function 'encrypt)
-                    (point-min) (point-max) recipients))
+         (or (let ((pgg-default-user-id (or from pgg-default-user-id)))
+               (pgg-encrypt-region (point-min) (point-max) recipients))
+             (throw 'mime-edit-error 'pgp-error)
+             )
          (delete-region (point-min)(point-max))
          (goto-char beg)
          (insert (format "--[[multipart/encrypted;
@@ -1871,9 +1880,7 @@ Content-Transfer-Encoding: 7bit
            (insert (format "Content-Transfer-Encoding: %s\n" encoding))
          )
        (insert "\n")
-       (or (as-binary-process
-            (funcall (pgp-function 'traditional-sign)
-                     beg (point-max)))
+       (or (pgg-sign-region beg (point-max) 'clearsign)
            (throw 'mime-edit-error 'pgp-error)
            )
        (goto-char beg)
@@ -1902,10 +1909,7 @@ Content-Transfer-Encoding: 7bit
              (insert (format "Content-Transfer-Encoding: %s\n" encoding))
            )
          (insert "\n")
-         (or (as-binary-process
-              (funcall (pgp-function 'encrypt)
-                       recipients beg (point-max) nil 'maybe)
-              )
+         (or (pgg-sign-region beg (point-max) recipients)
              (throw 'mime-edit-error 'pgp-error)
              )
          (goto-char beg)
@@ -2336,7 +2340,7 @@ and insert data encoded as ENCODING."
   (interactive "P")
   (mime-edit-insert-tag "application" "pgp-keys")
   (mime-edit-define-encoding "7bit")
-  (funcall (pgp-function 'insert-key))
+  (pgg-insert-key)
   )
 
 
index a42af5a..c3ef1fd 100644 (file)
 ;;         by Kazuhiko Yamamoto <kazu@is.aist-nara.ac.jp> (1995/10;
 ;;         expired)
 
+;;     [OpenPGP/MIME] draft-yamamoto-openpgp-mime-00.txt: "MIME
+;;         Security with OpenPGP (OpenPGP/MIME)" by Kazuhiko YAMAMOTO
+;;         <kazu@iijlab.net> (1998/1)
+
 ;;; Code:
 
 (require 'mime-play)
 (require 'pgg-def)
 
+(autoload 'pgg-decrypt-region "pgg"
+  "PGP decryption of current region." t)
+(autoload 'pgg-verify-region "pgg"
+  "PGP verification of current region." t)
+(autoload 'pgg-snarf-keys-region "pgg"
+  "Snarf PGP public keys in current region." t)
+
 
 ;;; @ Internal method for multipart/signed
 ;;;
@@ -78,8 +89,7 @@
     (cond ((progn
             (goto-char (point-min))
             (re-search-forward "^-+BEGIN PGP SIGNED MESSAGE-+$" nil t))
-          (funcall (pgp-function 'verify)
-                   (point-min)(point-max))
+          (pgg-verify-region (match-beginning 0)(point-max) nil 'fetch)
           (goto-char (point-min))
           (delete-region
            (point-min)
          ((progn
             (goto-char (point-min))
             (re-search-forward "^-+BEGIN PGP MESSAGE-+$" nil t))
-          (funcall (pgp-function 'decrypt)
-                   (point-min)(point-max))
+          (pgg-decrypt-region (point-min)(point-max))
           (delete-region (point-min)(point-max))
           (insert-buffer pgg-output-buffer)
           (setq representation-type 'binary)
 
 ;;; @ Internal method for application/pgp-signature
 ;;;
-;;; It is based on RFC 2015 (PGP/MIME).
-
-(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, ...")
-
-(defvar mime-pgp-good-signature-regexp-alist
-  '((en . "Good signature from user.*$"))
-  "Alist of language vs regexp to detect ``Good signature''.")
-
-(defvar mime-pgp-key-expected-regexp-alist
-  '((en . "Key matching expected Key ID \\(\\S +\\) not found"))
-  "Alist of language vs regexp to detect ``Key expected''.")
-
-(defun mime-pgp-check-signature (output-buffer sig-file orig-file)
-  (save-excursion
-    (set-buffer output-buffer)
-    (erase-buffer))
-  (let* ((lang (or mime-pgp-default-language 'en))
-        (status (call-process-region (point-min)(point-max)
-                                     mime-pgp-command
-                                     nil output-buffer nil
-                                     sig-file orig-file (format "+language=%s" lang)))
-        (regexp (cdr (assq lang mime-pgp-good-signature-regexp-alist))))
-    (if (= status 0)
-       (save-excursion
-         (set-buffer output-buffer)
-         (goto-char (point-min))
-         (message
-          (cond ((not (stringp regexp))
-                 "Please specify right regexp for specified language")
-                ((re-search-forward regexp nil t)
-                 (buffer-substring (match-beginning 0) (match-end 0)))
-                (t "Bad signature")))
-         ))))
+;;; It is based on RFC 2015 (PGP/MIME) and
+;;; draft-yamamoto-openpgp-mime-00.txt (OpenPGP/MIME).
 
 (defun mime-verify-application/pgp-signature (entity situation)
   "Internal method to check PGP/MIME signature."
@@ -176,15 +149,15 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
            (insert "\r")
            (forward-line 1))
          (let ((pgg-output-buffer mime-echo-buffer-name))
-           (funcall (pgp-function 'verify) 
-                    (point-min)(point-max) sig-file 'fetch)))
+           (pgg-verify-region (point-min)(point-max) sig-file 'fetch)))
       (delete-file sig-file))
     ))
 
 
 ;;; @ Internal method for application/pgp-encrypted
 ;;;
-;;; It is based on RFC 2015 (PGP/MIME).
+;;; It is based on RFC 2015 (PGP/MIME) and
+;;; draft-yamamoto-openpgp-mime-00.txt (OpenPGP/MIME).
 
 (defun mime-decrypt-application/pgp-encrypted (entity situation)
   (let* ((entity-node-id (mime-entity-node-id entity))
@@ -200,7 +173,8 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
 
 ;;; @ Internal method for application/pgp-keys
 ;;;
-;;; It is based on RFC 2015 (PGP/MIME).
+;;; It is based on RFC 2015 (PGP/MIME) and
+;;; draft-yamamoto-openpgp-mime-00.txt (OpenPGP/MIME).
 
 (defun mime-add-application/pgp-keys (entity situation)
   (save-excursion (mime-show-echo-buffer))
@@ -209,8 +183,7 @@ It should be ISO 639 2 letter language code such as en, ja, ...")
     (mime-decode-region (point-min) (point-max)
                         (cdr (assq 'encoding situation)))
     (let ((pgg-output-buffer mime-echo-buffer-name))
-      (funcall (pgp-function 'snarf-keys)
-              (point-min)(point-max)))))
+      (pgg-snarf-keys-region (point-min)(point-max)))))
 
 
 ;;; @ end
index 605256e..f1d4778 100644 (file)
   )
 
 
-;;; @ PGP
-;;;
-
-(defvar pgp-function-alist
-  '(
-    ;; for mime-pgp
-    (verify            pgg-verify-region               "pgg")
-    (decrypt           pgg-decrypt-region              "pgg")
-    (snarf-keys                pgg-snarf-keys-region           "pgg")
-    ;; for mime-edit
-    (sign              pgg-sign-region                 "pgg")
-    (encrypt           pgg-encrypt-region              "pgg")
-    (insert-key                pgg-insert-key                  "pgg")
-    )
-  "Alist of service names vs. corresponding functions and its filenames.
-Each element looks like (SERVICE FUNCTION FILE).
-
-SERVICE is a symbol of PGP processing.  It allows `verify', `decrypt',
-`fetch-key', `snarf-keys', `mime-sign', `traditional-sign', `encrypt'
-or `insert-key'.
-
-Function is a symbol of function to do specified SERVICE.
-
-FILE is string of filename which has definition of corresponding
-FUNCTION.")
-
-(defmacro pgp-function (method)
-  "Return function to do service METHOD."
-  `(cadr (assq ,method (symbol-value 'pgp-function-alist))))
-
-(mapcar (function
-        (lambda (method)
-          (autoload (cadr method)(nth 2 method))
-          ))
-       pgp-function-alist)
-
-
 ;;; @ Other Utility
 ;;;