Fix typo in changelog
[gnus] / lisp / smime.el
index 31545c1..e28c07f 100644 (file)
@@ -1,27 +1,25 @@
 ;;; smime.el --- S/MIME support library
 
 ;;; smime.el --- S/MIME support library
 
-;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+;;   2009, 2010  Free Software Foundation, Inc.
 
 ;; Author: Simon Josefsson <simon@josefsson.org>
 ;; Keywords: SMIME X.509 PEM OpenSSL
 
 ;; This file is part of GNU Emacs.
 
 
 ;; Author: Simon Josefsson <simon@josefsson.org>
 ;; Keywords: SMIME X.509 PEM OpenSSL
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published
-;; by the Free Software Foundation; either version 3, or (at your
-;; option) any later version.
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 
-;; GNU Emacs is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; General Public License for more details.
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 
 ;;; Commentary:
 
@@ -44,7 +42,7 @@
 ;; done on messages encoded in these formats.  The terminology chosen
 ;; reflect this.
 ;;
 ;; done on messages encoded in these formats.  The terminology chosen
 ;; reflect this.
 ;;
-;; The home of this file is in Gnus CVS, but also available from
+;; The home of this file is in Gnus, but also available from
 ;; http://josefsson.org/smime.html.
 
 ;;; Quick introduction:
 ;; http://josefsson.org/smime.html.
 
 ;;; Quick introduction:
@@ -65,7 +63,7 @@
 ;;
 ;; Now you should be able to sign messages!  Create a buffer and write
 ;; something and run M-x smime-sign-buffer RET RET and you should see
 ;;
 ;; Now you should be able to sign messages!  Create a buffer and write
 ;; something and run M-x smime-sign-buffer RET RET and you should see
-;; your message MIME armoured and a signature.  Encryption, M-x
+;; your message MIME armored and a signature.  Encryption, M-x
 ;; smime-encrypt-buffer, should also work.
 ;;
 ;; To be able to verify messages you need to build up trust with
 ;; smime-encrypt-buffer, should also work.
 ;;
 ;; To be able to verify messages you need to build up trust with
 
 ;;; Code:
 
 
 ;;; Code:
 
+;; For Emacs <22.2 and XEmacs.
+(eval-and-compile
+  (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
 (require 'dig)
 (require 'dig)
-(or (require 'password-cache nil t)
-    (require 'password))
+
+(if (locate-library "password-cache")
+    (require 'password-cache)
+  (require 'password))
+
 (eval-when-compile (require 'cl))
 
 (eval-and-compile
 (eval-when-compile (require 'cl))
 
 (eval-and-compile
@@ -239,7 +243,7 @@ If nil, use system defaults."
 If needed search base, binddn, passwd, etc. for the LDAP host
 must be set in `ldap-host-parameters-alist'."
   :type '(repeat (string :tag "Host name"))
 If needed search base, binddn, passwd, etc. for the LDAP host
 must be set in `ldap-host-parameters-alist'."
   :type '(repeat (string :tag "Host name"))
-  :version "23.0" ;; No Gnus
+  :version "23.1" ;; No Gnus
   :group 'smime)
 
 (defvar smime-details-buffer "*OpenSSL output*")
   :group 'smime)
 
 (defvar smime-details-buffer "*OpenSSL output*")
@@ -257,6 +261,7 @@ must be set in `ldap-host-parameters-alist'."
           temporary-file-directory))))))
 
 ;; Password dialog function
           temporary-file-directory))))))
 
 ;; Password dialog function
+(declare-function password-read-and-add "password-cache" (prompt &optional key))
 
 (defun smime-ask-passphrase (&optional cache-key)
   "Asks the passphrase to unlock the secret key.
 
 (defun smime-ask-passphrase (&optional cache-key)
   "Asks the passphrase to unlock the secret key.
@@ -298,7 +303,7 @@ key and certificate itself."
   (smime-new-details-buffer)
   (let* ((certfiles (and (cdr-safe keyfile) (cadr keyfile)))
         (keyfile (or (car-safe keyfile) keyfile))
   (smime-new-details-buffer)
   (let* ((certfiles (and (cdr-safe keyfile) (cadr keyfile)))
         (keyfile (or (car-safe keyfile) keyfile))
-        (buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
+        (buffer (generate-new-buffer " *smime*"))
         (passphrase (smime-ask-passphrase (expand-file-name keyfile)))
         (tmpfile (smime-make-temp-file "smime")))
     (if passphrase
         (passphrase (smime-ask-passphrase (expand-file-name keyfile)))
         (tmpfile (smime-make-temp-file "smime")))
     (if passphrase
@@ -333,7 +338,7 @@ If encryption fails, the buffer is not modified.  Region is assumed to
 have proper MIME tags.  CERTFILES is a list of filenames, each file
 is expected to contain of a PEM encoded certificate."
   (smime-new-details-buffer)
 have proper MIME tags.  CERTFILES is a list of filenames, each file
 is expected to contain of a PEM encoded certificate."
   (smime-new-details-buffer)
-  (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
+  (let ((buffer (generate-new-buffer " *smime*"))
        (tmpfile (smime-make-temp-file "smime")))
     (prog1
        (when (prog1
        (tmpfile (smime-make-temp-file "smime")))
     (prog1
        (when (prog1
@@ -366,12 +371,9 @@ KEYFILE should contain a PEM encoded key and certificate."
             (if keyfile
                 keyfile
               (smime-get-key-with-certs-by-email
             (if keyfile
                 keyfile
               (smime-get-key-with-certs-by-email
-               (completing-read
-                (concat "Sign using key"
-                        (if smime-keys
-                            (concat " (default " (caar smime-keys) "): ")
-                          ": "))
-                smime-keys nil nil (car-safe (car-safe smime-keys))))))
+               (gnus-completing-read
+                "Sign using key"
+                smime-keys nil (car-safe (car-safe smime-keys))))))
       (error "Signing failed"))))
 
 (defun smime-encrypt-buffer (&optional certfiles buffer)
       (error "Signing failed"))))
 
 (defun smime-encrypt-buffer (&optional certfiles buffer)
@@ -432,7 +434,7 @@ On success, replaces region with decrypted data and return non-nil.
 Any details (stderr on success, stdout and stderr on error) are left
 in the buffer specified by `smime-details-buffer'."
   (smime-new-details-buffer)
 Any details (stderr on success, stdout and stderr on error) are left
 in the buffer specified by `smime-details-buffer'."
   (smime-new-details-buffer)
-  (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
+  (let ((buffer (generate-new-buffer " *smime*"))
        CAs (passphrase (smime-ask-passphrase (expand-file-name keyfile)))
        (tmpfile (smime-make-temp-file "smime")))
     (if passphrase
        CAs (passphrase (smime-ask-passphrase (expand-file-name keyfile)))
        (tmpfile (smime-make-temp-file "smime")))
     (if passphrase
@@ -497,11 +499,9 @@ in the buffer specified by `smime-details-buffer'."
      (expand-file-name
       (or keyfile
          (smime-get-key-by-email
      (expand-file-name
       (or keyfile
          (smime-get-key-by-email
-          (completing-read
-           (concat "Decipher using key"
-                   (if smime-keys (concat " (default " (caar smime-keys) "): ")
-                     ": "))
-           smime-keys nil nil (car-safe (car-safe smime-keys)))))))))
+          (gnus-completing-read
+           "Decipher using key"
+           smime-keys nil (car-safe (car-safe smime-keys)))))))))
 
 ;; Various operations
 
 
 ;; Various operations
 
@@ -591,9 +591,7 @@ A string or a list of strings is returned."
   "Get cetificate for MAIL from the ldap server at HOST."
   (let ((ldapresult
         (funcall
   "Get cetificate for MAIL from the ldap server at HOST."
   (let ((ldapresult
         (funcall
-         (if (or (featurep 'xemacs)
-                 ;; For Emacs >= 22 we don't need smime-ldap.el
-                 (< emacs-major-version 22))
+         (if (featurep 'xemacs)
              (progn
                (require 'smime-ldap)
                'smime-ldap-search)
              (progn
                (require 'smime-ldap)
                'smime-ldap-search)
@@ -654,6 +652,9 @@ A string or a list of strings is returned."
   (define-key smime-mode-map "q" 'smime-exit)
   (define-key smime-mode-map "f" 'smime-certificate-info))
 
   (define-key smime-mode-map "q" 'smime-exit)
   (define-key smime-mode-map "f" 'smime-certificate-info))
 
+(autoload 'gnus-run-mode-hooks "gnus-util")
+(autoload 'gnus-completing-read "gnus-util")
+
 (defun smime-mode ()
   "Major mode for browsing, viewing and fetching certificates.
 
 (defun smime-mode ()
   "Major mode for browsing, viewing and fetching certificates.
 
@@ -701,8 +702,7 @@ The following commands are available:
   "Go to the SMIME buffer."
   (interactive)
   (unless (get-buffer smime-buffer)
   "Go to the SMIME buffer."
   (interactive)
   (unless (get-buffer smime-buffer)
-    (save-excursion
-      (set-buffer (get-buffer-create smime-buffer))
+    (with-current-buffer (get-buffer-create smime-buffer)
       (smime-mode)))
   (smime-draw-buffer)
   (switch-to-buffer smime-buffer))
       (smime-mode)))
   (smime-draw-buffer)
   (switch-to-buffer smime-buffer))
@@ -722,5 +722,4 @@ The following commands are available:
 
 (provide 'smime)
 
 
 (provide 'smime)
 
-;;; arch-tag: e3f9b938-5085-4510-8a11-6625269c9a9e
 ;;; smime.el ends here
 ;;; smime.el ends here