X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fstarttls.el;h=2d40365053355a1aede65b63d86a08ce6d1c12c8;hb=26eca13465f697cd34c9ce6a4a9321eecc17b15c;hp=bf1982f54dda1e2ffec0a1a0b7f7c595f77d42b2;hpb=a4cc1a7862f0e7e0eba0acadfe8ffad990e4fe41;p=gnus diff --git a/lisp/starttls.el b/lisp/starttls.el index bf1982f54..2d4036505 100644 --- a/lisp/starttls.el +++ b/lisp/starttls.el @@ -1,12 +1,11 @@ ;;; starttls.el --- STARTTLS functions -;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 1999-2012 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Author: Simon Josefsson ;; Created: 1999/11/20 -;; Keywords: TLS, SSL, OpenSSL, GNUTLS, mail, news +;; Keywords: TLS, SSL, OpenSSL, GnuTLS, mail, news ;; This file is part of GNU Emacs. @@ -34,15 +33,15 @@ ;; implementations both called "starttls.el". The first one is Daiki ;; Ueno's starttls.el which uses his own "starttls" command line tool, ;; and the second one is Simon Josefsson's starttls.el which uses -;; "gnutls-cli" from GNUTLS. +;; "gnutls-cli" from GnuTLS. ;; -;; If "starttls" is available, it is prefered by the code over +;; If "starttls" is available, it is preferred by the code over ;; "gnutls-cli", for backwards compatibility. Use ;; `starttls-use-gnutls' to toggle between implementations if you have -;; both tools installed. It is recommended to use GNUTLS, though, as +;; both tools installed. It is recommended to use GnuTLS, though, as ;; it performs more verification of the certificates. -;; The GNUTLS support requires GNUTLS 0.9.90 (released 2003-10-08) or +;; The GnuTLS support requires GnuTLS 0.9.90 (released 2003-10-08) or ;; later, from , or "starttls" ;; from . @@ -122,8 +121,8 @@ :group 'mail) (defcustom starttls-gnutls-program "gnutls-cli" - "Name of GNUTLS command line tool. -This program is used when GNUTLS is used, i.e. when + "Name of GnuTLS command line tool. +This program is used when GnuTLS is used, i.e. when `starttls-use-gnutls' is non-nil." :version "22.1" :type 'string @@ -137,7 +136,7 @@ i.e. when `starttls-use-gnutls' is nil." :group 'starttls) (defcustom starttls-use-gnutls (not (executable-find starttls-program)) - "*Whether to use GNUTLS instead of the `starttls' command." + "*Whether to use GnuTLS instead of the `starttls' command." :version "22.1" :type 'boolean :group 'starttls) @@ -151,7 +150,7 @@ These apply when the `starttls' command is used, i.e. when (defcustom starttls-extra-arguments nil "Extra arguments to `starttls-program'. -These apply when GNUTLS is used, i.e. when `starttls-use-gnutls' is non-nil. +These apply when GnuTLS is used, i.e. when `starttls-use-gnutls' is non-nil. For example, non-TLS compliant servers may require '(\"--protocols\" \"ssl3\"). Invoke \"gnutls-cli --help\" to @@ -168,8 +167,8 @@ find out which parameters are available." (defcustom starttls-connect "- Simple Client Mode:\n\n" "*Regular expression indicating successful connection. -The default is what GNUTLS's \"gnutls-cli\" outputs." - ;; GNUTLS cli.c:main() prints this string when it is starting to run +The default is what GnuTLS's \"gnutls-cli\" outputs." + ;; GnuTLS cli.c:main() prints this string when it is starting to run ;; in the application read/write phase. If the logic, or the string ;; itself, is modified, this must be updated. :version "22.1" @@ -178,8 +177,8 @@ The default is what GNUTLS's \"gnutls-cli\" outputs." (defcustom starttls-failure "\\*\\*\\* Handshake has failed" "*Regular expression indicating failed TLS handshake. -The default is what GNUTLS's \"gnutls-cli\" outputs." - ;; GNUTLS cli.c:do_handshake() prints this string on failure. If the +The default is what GnuTLS's \"gnutls-cli\" outputs." + ;; GnuTLS cli.c:do_handshake() prints this string on failure. If the ;; logic, or the string itself, is modified, this must be updated. :version "22.1" :type 'regexp @@ -187,8 +186,8 @@ The default is what GNUTLS's \"gnutls-cli\" outputs." (defcustom starttls-success "- Compression: " "*Regular expression indicating completed TLS handshakes. -The default is what GNUTLS's \"gnutls-cli\" outputs." - ;; GNUTLS cli.c:do_handshake() calls, on success, +The default is what GnuTLS's \"gnutls-cli\" outputs." + ;; GnuTLS cli.c:do_handshake() calls, on success, ;; common.c:print_info(), that unconditionally print this string ;; last. If that logic, or the string itself, is modified, this ;; must be updated. @@ -269,6 +268,7 @@ handshake, or nil on failure." host port (if done "done" "failed")) process)) +;;;###autoload (defun starttls-open-stream (name buffer host port) "Open a TLS connection for a port to a host. Returns a subprocess object to represent the connection. @@ -283,7 +283,7 @@ BUFFER is the buffer (or `buffer-name') to associate with the process. Third arg is name of the host to connect to, or its IP address. Fourth arg PORT is an integer specifying a port to connect to. If `starttls-use-gnutls' is nil, this may also be a service name, but -GNUTLS requires a port number." +GnuTLS requires a port number." (if starttls-use-gnutls (starttls-open-stream-gnutls name buffer host port) (message "Opening STARTTLS connection to `%s:%s'" host (format "%s" port)) @@ -295,18 +295,16 @@ GNUTLS requires a port number." (starttls-set-process-query-on-exit-flag process nil) process))) -(defun starttls-any-program-available () - (let ((program (if starttls-use-gnutls - starttls-gnutls-program - starttls-program))) - (condition-case () - (progn - (call-process program) - program) - (error (progn - (message "No STARTTLS program was available (tried '%s')" - program) - nil))))) +(defun starttls-available-p () + "Say whether the STARTTLS programs are available." + (and (not (memq system-type '(windows-nt ms-dos))) + (executable-find (if starttls-use-gnutls + starttls-gnutls-program + starttls-program)))) + +(defalias 'starttls-any-program-available 'starttls-available-p) +(make-obsolete 'starttls-any-program-available 'starttls-available-p + "2011-08-02") (provide 'starttls)