def test_change_seed(self): o = otp.OTP() for i in range(100): seed = o.generate_seed(length=(i % 15) + 1) newseed = o.change_seed(seed) o.validate(seed=newseed) self.assertNotEqual(newseed, seed)
def test_check_with_passwd_challenge(self): o = otp.OTP() for d in self.walk_data(): challenge = " foo otp-%s %d\t%s bar " % \ (d.hash, d.seq, d.seed) valid = o.check_with_passwd(d.passwd, d.key, challenge=challenge) self.assertEqual(valid, d.rawkey)
def test_validate(self): o = otp.OTP() for d in self.walk_error_data(): self.assertRaises(d.error, o.generate, d.passwd, d.seq, d.seed, hash=d.hash)
def test_parse_challenge(self): o = otp.OTP() for d in self.walk_data(): challenge = " foo otp-%s %d\t%s bar " % \ (d.hash, d.seq, d.seed) dict = o.parse_challenge(challenge) self.assertEqual(dict["hash"], d.hash) self.assertEqual(dict["sequence"], d.seq) self.assertEqual(dict["seed"], d.seed)
def test_check_with_passwd_info(self): o = otp.OTP() for d in self.walk_data(): valid = o.check_with_passwd(d.passwd, d.key, sequence=d.seq, seed=d.seed, hash=d.hash) self.assertEqual(valid, d.rawkey)
def test_generate(self): o = otp.OTP() for d in self.walk_data(): if not d.reverse: continue key = o.generate(d.passwd, d.seq, d.seed, hash=d.hash, format=d.format)[0] self.assertEqual(key, d.key)
def test_check_with_nexthash(self): o = otp.OTP() nextlasttuple = None nextlastd = None for d in self.walk_data(): tuple = (d.hash, d.passwd, d.seed) lastd, nextlastd = nextlastd, d lasttuple, nextlasttuple = nextlasttuple, tuple if tuple != lasttuple or lastd.seq != d.seq - 1: continue valid = o.check_with_nexthash(d.rawkey, lastd.key, hash=d.hash) self.assertEqual(valid, lastd.rawkey)
def test_generate_many(self): o = otp.OTP() for d in self.walk_data(): if not d.reverse: continue keylist = o.generate(d.passwd, 0, d.seed, hash=d.hash, format=d.format, length=d.seq + 10) self.assertEqual(keylist[d.seq], d.key)
def test_compare(self): o = otp.OTP() nextlasttuple = None nextlastd = None for d in self.walk_data(): tuple = (d.hash, d.passwd, d.seed, d.seq) lastd, nextlastd = nextlastd, d lasttuple, nextlasttuple = nextlasttuple, tuple id = "%s/%d" % (d.key, d.rawkey) self.assertEqual(o.compare(d.key, d.rawkey, hash=d.hash), 1, id) if tuple != lasttuple: continue id = "%s/%s" % (d.key, lastd.key) self.assertEqual(o.compare(d.key, lastd.key, hash=d.hash), 1, id)
def test_generate_validate_seed(self): o = otp.OTP() for i in range(1000): seed = o.generate_seed(length=(i % 15) + 1) o.validate(seed=seed)
def test_detect_format(self): o = otp.OTP() for d in self.walk_data(): format = o.detect_format(d.key, hash=d.hash) self.assertEqual(format, d.format)
def test_reformat(self): o = otp.OTP() for d in self.walk_data(): self.assertEqual(o.reformat(d.key, format="long", hash=d.hash), d.rawkey)
def make_password(): return ' '.join(otp.OTP().reformat(binascii.hexlify(os.urandom(8)), format='words').lower().split()[:3])