]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix SCRAM-SHA-1 SASL mechanism
authorMagnus Henoch <magnus.henoch@gmail.com>
Mon, 23 Feb 2015 09:09:46 +0000 (09:09 +0000)
committerMagnus Henoch <magnus.henoch@gmail.com>
Mon, 23 Feb 2015 09:09:46 +0000 (09:09 +0000)
The symbol used in sasl-mechanism-alist needs to match the name that
can be required.  Move sasl-make-mechanism call to end of file, to
ensure that it can refer to the specified step functions.

* net/sasl.el (sasl-mechanism-alist): Refer to sasl-scram-rfc
instead of sasl-scram-sha-1, as the former is the name that can be
required.

* net/sasl-scram-rfc.el (sasl-scram-sha-1-steps)
(sasl-scram-sha-1-client-final-message)
(sasl-scram-sha-1-authenticate-server): Move to end of file.

lisp/ChangeLog
lisp/net/sasl-scram-rfc.el
lisp/net/sasl.el

index c1fb8697707f1875132a6b788fa16db89f80a093..af8845bfb45579b0dafa62cac66721a3038af5ae 100644 (file)
@@ -1,3 +1,13 @@
+2015-02-23  Magnus Henoch  <magnus.henoch@gmail.com>
+
+       * net/sasl.el (sasl-mechanism-alist): Refer to sasl-scram-rfc
+       instead of sasl-scram-sha-1, as the former is the name that can be
+       required.
+
+       * net/sasl-scram-rfc.el (sasl-scram-sha-1-steps)
+       (sasl-scram-sha-1-client-final-message)
+       (sasl-scram-sha-1-authenticate-server): Move to end of file.
+
 2015-02-23  Paul Eggert  <eggert@cs.ucla.edu>
 
        Fix the desired binding for comment-line
index 6c8c00959b14147fc7d170214d603e6feeb5ea08..18d7a6bfa18a4845128950b1b4d2c04d0efa9048 100644 (file)
 
 (require 'cl-lib)
 (require 'sasl)
-
-;;; SCRAM-SHA-1
-
 (require 'hex-util)
 (require 'rfc2104)
 
-(defconst sasl-scram-sha-1-steps
-  '(sasl-scram-client-first-message
-    sasl-scram-sha-1-client-final-message
-    sasl-scram-sha-1-authenticate-server))
-
-(defun sasl-scram-sha-1-client-final-message (client step)
-  (sasl-scram--client-final-message
-   ;; HMAC-SHA1 uses block length 64 and hash length 20; see RFC 2104.
-   'sha1 64 20 client step))
-
-(defun sasl-scram-sha-1-authenticate-server (client step)
-  (sasl-scram--authenticate-server
-   'sha1 64 20 client step))
-
-(put 'sasl-scram-sha-1 'sasl-mechanism
-     (sasl-make-mechanism "SCRAM-SHA-1" sasl-scram-sha-1-steps))
-
-(provide 'sasl-scram-sha-1)
-
 ;;; Generic for SCRAM-*
 
 (defun sasl-scram-client-first-message (client _step)
    (t
     (sasl-error "Invalid response from server"))))
 
+;;; SCRAM-SHA-1
+
+(defconst sasl-scram-sha-1-steps
+  '(sasl-scram-client-first-message
+    sasl-scram-sha-1-client-final-message
+    sasl-scram-sha-1-authenticate-server))
+
+(defun sasl-scram-sha-1-client-final-message (client step)
+  (sasl-scram--client-final-message
+   ;; HMAC-SHA1 uses block length 64 and hash length 20; see RFC 2104.
+   'sha1 64 20 client step))
+
+(defun sasl-scram-sha-1-authenticate-server (client step)
+  (sasl-scram--authenticate-server
+   'sha1 64 20 client step))
+
+;; This needs to be at the end, because of how `sasl-make-mechanism'
+;; handles step function names.
+(put 'sasl-scram-sha-1 'sasl-mechanism
+     (sasl-make-mechanism "SCRAM-SHA-1" sasl-scram-sha-1-steps))
+
+(put 'sasl-scram-rfc 'sasl-mechanism (get 'sasl-scram-sha-1 'sasl-mechanism))
+
+(provide 'sasl-scram-sha-1)
+
 (provide 'sasl-scram-rfc)
 ;;; sasl-scram-rfc.el ends here
index e59ed5d43aac105f4d001ce084c7c477b17cfd35..9321efdfda823894603f23716f9b787f376830cb 100644 (file)
@@ -45,7 +45,7 @@
     ("LOGIN" sasl-login)
     ("ANONYMOUS" sasl-anonymous)
     ("NTLM" sasl-ntlm)
-    ("SCRAM-SHA-1" sasl-scram-sha-1)))
+    ("SCRAM-SHA-1" sasl-scram-rfc)))
 
 (defvar sasl-unique-id-function #'sasl-unique-id-function)