Ejemplo n.º 1
0
 def testHashedCredentials(self):
     hashedCreds = [credentials.UsernameHashedPassword(
         u, self.hash(None, p, u[:2])) for u, p in self.users]
     d = defer.DeferredList([self.port.login(c, None, ITestable)
                             for c in hashedCreds], consumeErrors=True)
     d.addCallback(self._assertFailures, error.UnhandledCredentials)
     return d
Ejemplo n.º 2
0
 def tryLogin(self, username, password):
     import hashlib
     def hash(password):
         return hashlib.md5(password).hexdigest()
     self.portal.login(credentials.UsernameHashedPassword(username, hash(password)),
                       None,
                       IProtocolAvatar).addCallbacks(self._cbLogin,
                                                     self._ebLogin)
Ejemplo n.º 3
0
 def testRequestAvatarId_hashed(self):
     self.db = checkers.FilePasswordDB(self.dbfile)
     creds = [credentials.UsernameHashedPassword(u, p)
              for u, p in self.users]
     d = defer.gatherResults(
         [defer.maybeDeferred(self.db.requestAvatarId, c) for c in creds])
     d.addCallback(self.assertEqual, [u for u, p in self.users])
     return d
Ejemplo n.º 4
0
 def testRequestAvatarId_hashed(self):
     dbfile = self.mktemp()
     db = checkers.FilePasswordDB(dbfile, caseSensitive=0)
     f = file(dbfile, 'w')
     for (u, p) in self.users:
         f.write('%s:%s\n' % (u, p))
     f.close()
     creds = [credentials.UsernameHashedPassword(u, p) for u, p in self.users]
     d = defer.gatherResults(
         [defer.maybeDeferred(db.requestAvatarId, c) for c in creds])
     d.addCallback(self.assertEquals, [u for u, p in self.users])
     return d
Ejemplo n.º 5
0
 def tryLogin(self, data):
     params = data.split(' ')
     username = params[0]
     password = params[1]
     #loginPortal.login(credentials.UsernameHashedPassword(username, hash(password)), None, IProtocalAvatar).addCallback(self._cbLogin, self._ebLogin)
     if globalName.debug:
         print username, password
     # TODO: to support multiple clients, check whether a username's client is logined.
     self.name = username
     self.loginPortal.login(
         credentials.UsernameHashedPassword(username, hash(password)), None,
         IProtocolAvatar).addCallbacks(self._cbLogin, self._ebLogin)
Ejemplo n.º 6
0
 def _cbRegister(self, data):
     #register success, tell client
     (username, password) = data
     msg = self.factory.commands[
         "register"] + globalName.space + globalName.success + globalName.space + globalName.eol + globalName.space
     # do something to user, such as create user's friends table.
     dataManager.createUserFriendsTable(username)  # TODO: handle errors
     self.name = username
     self.sendLine(msg)
     self.loginPortal.login(
         credentials.UsernameHashedPassword(username, password), None,
         IProtocolAvatar).addCallbacks(self._cbLogin, self._ebLogin)
Ejemplo n.º 7
0
 def test_requestAvatarIdNoUser(self):
     """
     Calling requestAvatarId with credentials for an unknown user
     raises an UnauthorizedLogin error.
     """
     def fakeRunqueryMissingUser(query, username):
         d = Deferred()
         reactor.callLater(0, d.callback, ())
         return d
     creds = credentials.UsernameHashedPassword("user", "pass")
     checker = DBCredentialsChecker(fakeRunqueryMissingUser, "fake query")
     d = checker.requestAvatarId(creds)
     def checkError(result):
         self.assertEqual(result.message, "User not in database")
     return self.assertFailure(d, UnauthorizedLogin).addCallback(checkError)
Ejemplo n.º 8
0
 def test_requestAvatarIdBadCredentials(self):
         """
         Calling requestAvatarId with invalid credentials raises an
         UnauthorizedLogin error.
         """
         def fakeRunqueryBadPassword(query, username):
             d = Deferred()
             reactor.callLater(0, d.callback, (("user", "badpass"),))
             return d
         creds = credentials.UsernameHashedPassword("user", "pass")
         checker = DBCredentialsChecker(fakeRunqueryBadPassword, "fake query")
         d = checker.requestAvatarId(creds)
         def checkError(result):
             self.assertEqual(result.message, "Password mismatch")
         return self.assertFailure(d, UnauthorizedLogin).addCallback(checkError)
Ejemplo n.º 9
0
    def test_password_auth_user_with_correct_hashed_password(self):
        """
        AccountFileChecker.requestAvatarId returns a Deferred that fires with
        the user if the correct password is given in hashed form.
        """
        key_credentials = credentials.UsernameHashedPassword(
            b"alice", b"herpassword")
        d = self.checker.requestAvatarId(key_credentials)

        def authenticated(avatarId):
            self.assertEqual((
                b"alice",
                b"URI:DIR2:aaaaaaaaaaaaaaaaaaaaaaaaaa:1111111111111111111111111111111111111111111111111111"
            ), (avatarId.username, avatarId.rootcap))

        return d
Ejemplo n.º 10
0
 def test_requestAvatarIdGoodCredentials(self):
     """
     Calling requestAvatarId with correct credentials returns the
     username.
     """
     def fakeRunqueryMatchingPassword(query, username):
         d = Deferred()
         reactor.callLater(0, d.callback, (("user", "pass"),))
         return d
     creds = credentials.UsernameHashedPassword("user", "pass")
     checker = DBCredentialsChecker(fakeRunqueryMatchingPassword,
                                    "fake query")
     d = checker.requestAvatarId(creds)
     def checkRequestAvatarCb(result):
         self.assertEqual(result, "user")
     d.addCallback(checkRequestAvatarCb)
     return d