(require 'sasl)
(require 'hmac-md5)
-(defvar sasl-cram-md5-authenticator nil)
-
-(defconst sasl-cram-md5-continuations
+(defconst sasl-cram-md5-steps
'(ignore ;no initial response
sasl-cram-md5-response))
-(defun sasl-cram-md5-response (principal challenge)
+(defun sasl-cram-md5-response (client step)
(let ((passphrase
(sasl-read-passphrase
- (format "CRAM-MD5 passphrase for %s: " (sasl-principal-name principal)))))
+ (format "CRAM-MD5 passphrase for %s: "
+ (sasl-client-name client)))))
(unwind-protect
- (concat (sasl-principal-name principal) " "
+ (concat (sasl-client-name client) " "
(encode-hex-string
- (hmac-md5 (nth 1 challenge) passphrase)))
+ (hmac-md5 (sasl-step-data step) passphrase)))
(fillarray passphrase 0))))
-(put 'sasl-cram 'sasl-authenticator
- (sasl-make-authenticator "CRAM-MD5" sasl-cram-md5-continuations))
+(put 'sasl-cram 'sasl-mechanism
+ (sasl-make-mechanism "CRAM-MD5" sasl-cram-md5-steps))
(provide 'sasl-cram)