def __init__(self, avatar_factory, srp_server, username, A): self.username = username self.srp_server = srp_server self.avatar_factory = avatar_factory s,B = srp_server.step1( (username, A) ) self.challenge = (srp.long_to_bytes(s), srp.long_to_bytes(B))
def result( arg ): if isinstance( arg, failure.Failure ): print 'PB SRP Login FAILURE as "%s":' % username, arg.getErrorMessage() return arg else: print 'PB SRP Login success as "%s".' % username return (arg, srp.long_to_bytes(c.K), disconnect_func)
def remote_validate_user(self, user_M): try: HAMK = self.srp_server.validate_user( user_M ) print 'PB SRP Login succeeded for:', self.username pb_obj = self.avatar_factory( self.username, srp.long_to_bytes(self.srp_server.K) ) return HAMK, pb_obj except Exception,e: traceback.print_exc() print 'PB SRP Login failed for "%s":' % self.username, str(e) return (None,None)
def _pb_srp_connected(login_mgr, username, password, disconnect_func): #print 'PB SRP Login as:', username c = srp.Client( username, password ) I,A = c.step1() d = login_mgr.callRemote('login', I, srp.long_to_bytes(A)) def step2( ((s,B), validator) ): if s is None or B is None or validator is None: raise Exception('User Authentication Failed') s = srp.bytes_to_long(s) B = srp.bytes_to_long(B) M = c.step2( (s,B) ) return validator.callRemote('validate_user', M)