sasl: Steps

 
 3.3 Steps
 =========
 
 A step (‘sasl-step’ object) is an abstraction of authentication “step”
 which holds the response value and the next entry point for the
 authentication process (the latter is not accessible).
 
  -- Function: sasl-step-data step
      Return the data which STEP holds, a string.
 
  -- Function: sasl-step-set-data step data
      Store DATA string to STEP.
 
    To get the initial response, you should call the function
 ‘sasl-next-step’ with the second argument ‘nil’.
 
      (setq name (sasl-mechanism-name mechanism))
 
    At this point we could send the command which starts a SASL
 authentication protocol exchange.  For example,
 
      (process-send-string
       process
       (if (sasl-step-data step)              ;initial response
           (format "AUTH %s %s\r\n" name (base64-encode-string (sasl-step-data step) t))
         (format "AUTH %s\r\n" name)))
 
    To go on with the authentication process, all you have to do is call
 ‘sasl-next-step’ consecutively.
 
  -- Function: sasl-next-step client step
      Perform the authentication step.  At the first time STEP should be
      set to ‘nil’.