* smtp.el (smtp-sasl-properties): New user option.
[elisp/flim.git] / sasl-cram.el
index b1bfa8a..a9db4a6 100644 (file)
 (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)