I'm trying to invent my own checkers, with associated credentials, and still use the pbClientFactory's login() function. I saw, however, that the source in pb.py notes that, for now, login() only works with IUsernamePassword: "Currently only credentials implementing IUsernamePassword are supported." (twisted/spread/pb.py, line 1611).
So I started by subclassing the pbClientFactory, making my own login() function, and _cbSendUsername() and _cbResponse(), and then as I realized PB is using its own challenge response mechanism, it just started getting more complicated than I thought it probably should.
So what's my best option -- continue on the path I'm on, or just serialize the data I need into the username and password fields in the standard checkers? Or is there an easier way I'm missing?