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)
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()
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)
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()
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()
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()