Пример #1
0
 def test_00_create_token(self):
     otpkey = "1234567890"
     t1 = Token(serial="serial1",
                otpkey=otpkey,
                tokentype="hmac")
     t1.set_description("myfirsttoken")
     t1.set_hashed_pin("1234")
     t1.otplen = 6
     tid = t1.save()
     
     userpin = "HalloDuda"
     t1.set_user_pin(userpin)
     t1.save()
     
     pin_object = t1.get_user_pin()
     self.assertTrue(pin_object.getPin() == userpin)
     
     t = Token.query.filter_by(id=tid).first()
     self.assertTrue(len(t.pin_hash) > 0)
     self.assertTrue(len(t.user_pin) > 0)
     
     otpObj = t.get_otpkey()
     self.assertTrue(otpObj.getKey() == otpkey)
     count = t.count
     self.assertTrue(count == 0)
     
     up = t.get_user_pin()
     self.assertTrue(up.getPin() == userpin)
     
     self.assertTrue(t.check_hashed_pin("1234"))
     
     # Delete the token
     t1.delete()
     t = Token.query.filter_by(id=tid).first()
     self.assertTrue(t is None)
Пример #2
0
 def test_00_create_token(self):
     otpkey = "1234567890"
     t1 = Token(serial="serial1",
                otpkey=otpkey,
                tokentype="hmac")
     t1.set_description("myfirsttoken")
     t1.set_hashed_pin("1234")
     t1.otplen = 6
     tid = t1.save()
     
     userpin = "HalloDuda"
     t1.set_user_pin(userpin)
     t1.save()
     
     pin_object = t1.get_user_pin()
     self.assertTrue(pin_object.getPin() == userpin)
     
     t = Token.query.filter_by(id=tid).first()
     self.assertTrue(len(t.pin_hash) > 0)
     self.assertTrue(len(t.user_pin) > 0)
     
     otpObj = t.get_otpkey()
     self.assertTrue(otpObj.getKey() == otpkey)
     count = t.count
     self.assertTrue(count == 0)
     
     up = t.get_user_pin()
     self.assertTrue(up.getPin() == userpin)
     
     self.assertTrue(t.check_hashed_pin("1234"))
     
     # Delete the token
     t1.delete()
     t = Token.query.filter_by(id=tid).first()
     self.assertTrue(t is None)
Пример #3
0
    def test_01_create_token(self):
        for serial in self.serials:
            db_token = Token(serial, tokentype="totp")
            db_token.update_otpkey(self.otpkey)
            db_token.save()
            token = TotpTokenClass(db_token)
            self.assertTrue(token.token.serial == serial, token)
            self.assertTrue(token.token.tokentype == "totp",
                            token.token.tokentype)
            self.assertTrue(token.type == "totp", token)
            class_prefix = token.get_class_prefix()
            self.assertTrue(class_prefix == "TOTP", class_prefix)
            self.assertTrue(token.get_class_type() == "totp", token)

            # Now we create a tokenclass, without knowing, that it is TOTP
            token_object = create_tokenclass_object(db_token)
            # Do some tests, that we have a TotpTokenClass
            self.assertTrue(token_object.type == "totp", token_object.type)
            self.assertTrue(token_object.mode[0] == "authenticate",
                            token_object.mode)
            self.assertTrue(token_object.mode[1] == "challenge",
                            token_object.mode)

        # Test wrong type or old entry in database
        # a wrong token type will create None
        db_token = Token("asdf", tokentype="remnant")
        db_token.update_otpkey(self.otpkey)
        db_token.save()
        token_object = create_tokenclass_object(db_token)
        self.assertTrue(token_object is None, token_object)
        # delete the token, so that we do not get confused, later
        db_token.delete()
Пример #4
0
    def test_01_create_token(self):
        for serial in self.serials:
            db_token = Token(serial, tokentype="totp")
            db_token.update_otpkey(self.otpkey)
            db_token.save()
            token = TotpTokenClass(db_token)
            self.assertTrue(token.token.serial == serial, token)
            self.assertTrue(token.token.tokentype == "totp",
                            token.token.tokentype)
            self.assertTrue(token.type == "totp", token)
            class_prefix = token.get_class_prefix()
            self.assertTrue(class_prefix == "TOTP", class_prefix)
            self.assertTrue(token.get_class_type() == "totp", token)

            # Now we create a tokenclass, without knowing, that it is TOTP
            token_object = create_tokenclass_object(db_token)
            # Do some tests, that we have a TotpTokenClass
            self.assertTrue(token_object.type == "totp", token_object.type)
            self.assertTrue(token_object.mode[0] == "authenticate",
                            token_object.mode)
            self.assertTrue(token_object.mode[1] == "challenge",
                            token_object.mode)

        # Test wrong type or old entry in database
        # a wrong token type will create None
        db_token = Token("asdf", tokentype="remnant")
        db_token.update_otpkey(self.otpkey)
        db_token.save()
        token_object = create_tokenclass_object(db_token)
        self.assertTrue(token_object is None, token_object)
        # delete the token, so that we do not get confused, later
        db_token.delete()
Пример #5
0
    def test_00_create_token(self):
        otpkey = "1234567890"
        t1 = Token(serial="serial1", otpkey=otpkey, tokentype="hmac")
        t1.set_description("myfirsttoken")
        t1.set_hashed_pin("1234")
        t1.otplen = 6
        tid = t1.save()

        userpin = "HalloDuda"
        t1.set_user_pin(userpin)
        t1.save()

        pin_object = t1.get_user_pin()
        self.assertTrue(pin_object.getPin() == userpin.encode('utf8'))

        t = Token.query.filter_by(id=tid).first()
        self.assertTrue(len(t.pin_hash) > 0)
        self.assertTrue(len(t.user_pin) > 0)

        otpObj = t.get_otpkey()
        self.assertTrue(otpObj.getKey() == otpkey.encode('utf8'))
        count = t.count
        self.assertTrue(count == 0)

        up = t.get_user_pin()
        self.assertTrue(up.getPin() == userpin.encode('utf8'))

        self.assertTrue(t.check_pin("1234"))

        t.set_user_pin(b'HalloDuDa')
        self.assertTrue(t.get_user_pin().getPin() == b'HalloDuDa')

        t.set_user_pin(u'HelloWörld')
        self.assertTrue(
            t.get_user_pin().getPin().decode('utf8') == u'HelloWörld')

        t.set_hashed_pin(b'1234')
        self.assertTrue(t.check_pin(b'1234'))

        t.set_hashed_pin(u'HelloWörld')
        self.assertTrue(t.check_pin(u'HelloWörld'))

        t.pin_hash = None
        self.assertTrue(t.check_pin(''))
        self.assertFalse(t.check_pin(None))
        self.assertFalse(t.check_pin('1234'))

        t.pin_hash = ''
        self.assertTrue(t.check_pin(''))
        self.assertFalse(t.check_pin('1234'))

        t.set_hashed_pin('')
        self.assertTrue(len(t.pin_hash) > 0)
        self.assertTrue(t.check_pin(''))
        self.assertFalse(t.check_pin('1234'))

        # Delete the token
        t1.delete()
        t = Token.query.filter_by(id=tid).first()
        self.assertTrue(t is None)
Пример #6
0
    def test_12_get_token_by_otp(self):
        tokenobject = get_token_by_otp(get_tokens(), otp="755224")
        self.assertTrue(tokenobject.token.serial == "hotptoken", tokenobject)

        serial = get_serial_by_otp(get_tokens(), otp="287082")
        self.assertTrue(serial == "hotptoken", serial)

        # create a second HOTP token, so that we have two tokens,
        # that generate the same OTP value
        db_token = Token("token2", tokentype="hotp")
        db_token.update_otpkey(self.otpkey)
        db_token.save()
        self.assertRaises(TokenAdminError, get_serial_by_otp, get_tokens(),
                          "287922")
        db_token.delete()
Пример #7
0
    def test_12_get_token_by_otp(self):
        tokenobject = get_token_by_otp(get_tokens(), otp="755224")
        self.assertTrue(tokenobject.token.serial == "hotptoken", tokenobject)

        serial = get_serial_by_otp(get_tokens(), otp="287082")
        self.assertTrue(serial == "hotptoken", serial)

        # create a second HOTP token, so that we have two tokens,
        # that generate the same OTP value
        db_token = Token("token2",
                         tokentype="hotp")
        db_token.update_otpkey(self.otpkey)
        db_token.save()
        self.assertRaises(TokenAdminError, get_serial_by_otp,
                          get_tokens(), "287922")
        db_token.delete()
    def test_01_create_token(self):
        my_secret = "mySecretInformation"
        db_token = Token(self.serial1, tokentype="indexedsecret")
        db_token.save()
        token = IndexedSecretTokenClass(db_token)
        token.update({"otpkey": my_secret})
        token.save()
        serial = token.get_serial()
        self.assertTrue(token.token.serial == self.serial1, token)
        self.assertTrue(token.token.tokentype == "indexedsecret", token.token)
        self.assertTrue(token.type == "indexedsecret", token.type)
        class_prefix = token.get_class_prefix()
        self.assertTrue(class_prefix == "PIIX", class_prefix)
        self.assertTrue(token.get_class_type() == "indexedsecret", token)

        # Create a challenge
        r, message, transaction_id, attribute = token.create_challenge()
        self.assertTrue(r)
        self.assertIn("Please enter the position", message)

        password_list = [
            my_secret[x - 1] for x in attribute.get("random_positions")
        ]
        password = "".join(password_list)
        # Wrong transaction_id
        r = token.check_challenge_response(passw=password,
                                           options={"transaction_id": "wrong"})
        self.assertEqual(-1, r)

        # wrong password - wrong length
        r = token.check_challenge_response(
            passw="wrong", options={"transaction_id": transaction_id})
        self.assertEqual(-1, r)

        # wrong password - wrong contents
        r = token.check_challenge_response(
            passw="XX", options={"transaction_id": transaction_id})
        self.assertEqual(-1, r)

        # Successful authentication, we can also pass the transaction_id in the state.
        r = token.check_challenge_response(passw=password,
                                           options={"state": transaction_id})
        self.assertEqual(1, r)

        db_token.delete()
Пример #9
0
    def test_10_get_all_token_users(self):
        tokens = get_all_token_users()
        self.assertTrue("hotptoken" in tokens, tokens)
        self.assertTrue(self.serials[1] not in tokens, tokens)

        # A token with a user, that does not exist in the userstore anymore
        # the uid 1000017 does not exist
        db_token = Token("missinguser",
                         tokentype="hotp",
                         userid=1000017,
                         resolver=self.resolvername1,
                         realm=self.realm1)
        db_token.update_otpkey(self.otpkey)
        db_token.save()
        tokens = get_all_token_users()
        self.assertTrue("missinguser" in tokens, tokens)
        self.assertTrue(tokens.get("missinguser").get("username") == '/:no '
                                                                     'user '
                                                                     'info:/', tokens)
        db_token.delete()
Пример #10
0
    def test_10_get_all_token_users(self):
        tokens = get_all_token_users()
        self.assertTrue("hotptoken" in tokens, tokens)
        self.assertTrue(self.serials[1] not in tokens, tokens)

        # A token with a user, that does not exist in the userstore anymore
        # the uid 1000017 does not exist
        db_token = Token("missinguser",
                         tokentype="hotp",
                         userid=1000017,
                         resolver=self.resolvername1,
                         realm=self.realm1)
        db_token.update_otpkey(self.otpkey)
        db_token.save()
        tokens = get_all_token_users()
        self.assertTrue("missinguser" in tokens, tokens)
        self.assertTrue(
            tokens.get("missinguser").get("username") == '/:no '
            'user '
            'info:/', tokens)
        db_token.delete()