Revision: miles@gnu.org--gnu-2005/gnus--devo--0--patch-37
[gnus] / lisp / mml2015.el
index e3e3c5a..9e0311c 100644 (file)
@@ -1,5 +1,5 @@
 ;;; mml2015.el --- MIME Security with Pretty Good Privacy (PGP)
-;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
 ;; Keywords: PGP MIME MML
 (eval-when-compile (require 'cl))
 (require 'mm-decode)
 (require 'mm-util)
+(require 'mml)
 
 (defvar mml2015-use (or
                     (progn
                       (ignore-errors
-                        (require 'pgg))
+                       ;; Avoid the "Recursive load suspected" error
+                       ;; in Emacs 21.1.
+                       (let ((recursive-load-depth-limit 100))
+                         (require 'pgg)))
                       (and (fboundp 'pgg-sign-region)
                            'pgg))
                     (progn
@@ -49,7 +53,8 @@
                                 (fboundp 'mc-sign-generic)
                                 (fboundp 'mc-cleanup-recipient-headers)
                                 'mailcrypt)))
-  "The package used for PGP/MIME.")
+  "The package used for PGP/MIME.
+Valid packages include `pgg', `gpg' and `mailcrypt'.")
 
 ;; Something is not RFC2015.
 (defvar mml2015-function-alist
@@ -82,6 +87,8 @@
     ("TRUST_FULLY"     . t)
     ("TRUST_ULTIMATE"  . t))
   "Map GnuPG trust output values to a boolean saying if you trust the key."
+  :version "22.1"
+  :group 'mime-security
   :type '(repeat (cons (regexp :tag "GnuPG output regexp")
                       (boolean :tag "Trust key"))))
 
 (defun mml2015-mailcrypt-sign (cont)
   (mc-sign-generic (message-options-get 'message-sender)
                   nil nil nil nil)
-  (let ((boundary
-        (funcall mml-boundary-function (incf mml-multipart-number)))
+  (let ((boundary (mml-compute-boundary cont))
        hash point)
     (goto-char (point-min))
     (unless (re-search-forward "^-----BEGIN PGP SIGNED MESSAGE-----\r?$" nil t)
                        (or (y-or-n-p "Sign the message? ")
                            'not))))
             'never)))
-    (mm-with-unibyte-current-buffer-mule4
+    (mm-with-unibyte-current-buffer
       (mc-encrypt-generic
        (or (message-options-get 'message-recipients)
           (message-options-set 'message-recipients
   (goto-char (point-min))
   (unless (looking-at "-----BEGIN PGP MESSAGE-----")
     (error "Fail to encrypt the message"))
-  (let ((boundary
-        (funcall mml-boundary-function (incf mml-multipart-number))))
+  (let ((boundary (mml-compute-boundary cont)))
     (insert (format "Content-Type: multipart/encrypted; boundary=\"%s\";\n"
                    boundary))
     (insert "\tprotocol=\"application/pgp-encrypted\"\n\n")
      mm-security-handle 'gnus-info "Failed")))
 
 (defun mml2015-gpg-sign (cont)
-  (let ((boundary
-        (funcall mml-boundary-function (incf mml-multipart-number)))
+  (let ((boundary (mml-compute-boundary cont))
        (text (current-buffer)) signature)
     (goto-char (point-max))
     (unless (bolp)
       (goto-char (point-max)))))
 
 (defun mml2015-gpg-encrypt (cont &optional sign)
-  (let ((boundary
-        (funcall mml-boundary-function (incf mml-multipart-number)))
+  (let ((boundary (mml-compute-boundary cont))
        (text (current-buffer))
        cipher)
-    (mm-with-unibyte-current-buffer-mule4
+    (mm-with-unibyte-current-buffer
       (with-temp-buffer
        ;; set up a function to call the correct gpg encrypt routine
        ;; with the right arguments. (FIXME: this should be done
        ;; differently.)
-       (flet ((gpg-encrypt-func 
+       (flet ((gpg-encrypt-func
                 (sign plaintext ciphertext result recipients &optional
                       passphrase sign-with-key armor textmode)
                 (if sign
        (if (condition-case err
                (prog1
                    (pgg-decrypt-region (point-min) (point-max))
-                 (setq decrypt-status 
+                 (setq decrypt-status
                        (with-current-buffer mml2015-result-buffer
                          (buffer-string)))
                  (mm-set-handle-multipart-parameter
          (mm-insert-part signature))
        (if (condition-case err
                (prog1
-                   (pgg-verify-region (point-min) (point-max) 
+                   (pgg-verify-region (point-min) (point-max)
                                       signature-file t)
                  (goto-char (point-min))
                  (while (search-forward "\r\n" nil t)
 
 (defun mml2015-pgg-sign (cont)
   (let ((pgg-errors-buffer mml2015-result-buffer)
-       (boundary (funcall mml-boundary-function (incf mml-multipart-number)))
+       (boundary (mml-compute-boundary cont))
        (pgg-default-user-id (or (message-options-get 'mml-sender)
                                 pgg-default-user-id)))
     (unless (pgg-sign-region (point-min) (point-max))
 
 (defun mml2015-pgg-encrypt (cont &optional sign)
   (let ((pgg-errors-buffer mml2015-result-buffer)
-       (boundary (funcall mml-boundary-function (incf mml-multipart-number))))
+       (boundary (mml-compute-boundary cont)))
     (unless (pgg-encrypt-region (point-min) (point-max)
                                (split-string
                                 (or
 
 (provide 'mml2015)
 
+;;; arch-tag: b04701d5-0b09-44d8-bed8-de901bf435f2
 ;;; mml2015.el ends here