I am trying to implement SMTP Auth using the twisted mail.esmtp class, but I can't seem to figure out the right methods needed. I've added a challenger to the ESMTP instance as a class:

self.challengers = {'LOGIN': KPLAINCredentials()}

But I can't seem to figure out what methods I need to implement in the KPLAINCredentials class. Does anyone have a snippet of code that implements LOGIN Auth that I could use for a reference or know the methods needed? I am very confused by this call

  chal = self.challengers.get(parts[0].upper(), lambda: None)()

in esmtp.ext_Auth

Thanks in advance for any advice.