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. * 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.
This commit is contained in:
parent
34871865de
commit
80e50144d8
3 changed files with 36 additions and 23 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -39,31 +39,9 @@
|
|||
|
||||
(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)
|
||||
|
|
@ -156,5 +134,30 @@
|
|||
(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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue