From: Magnus Henoch Date: Mon, 23 Feb 2015 09:42:10 +0000 (+0000) Subject: Fix SCRAM-SHA-1 SASL mechanism X-Git-Url: http://cgit.sxemacs.org/?a=commitdiff_plain;h=833868ef19ead4fb04728fda3c9071e182ac5f24;p=gnus Fix SCRAM-SHA-1 SASL mechanism 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. * 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. * 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. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1a0a736dd..3123c89c6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -4,6 +4,16 @@ Tools: https://github.com/politza/pdf-tools) for viewing PDF attachments in emacs. +2015-02-23 Magnus Henoch + + * 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. + + * 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 Katsumi Yamaoka * gnus-art.el (gnus-mime-display-single): Avoid "End of buffer" error. diff --git a/lisp/sasl-scram-rfc.el b/lisp/sasl-scram-rfc.el index af571c8cc..193c4e6bf 100644 --- a/lisp/sasl-scram-rfc.el +++ b/lisp/sasl-scram-rfc.el @@ -40,31 +40,9 @@ (ignore-errors (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) @@ -238,5 +216,30 @@ to case differences." (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 diff --git a/lisp/sasl.el b/lisp/sasl.el index e59ed5d43..9321efdfd 100644 --- a/lisp/sasl.el +++ b/lisp/sasl.el @@ -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)