Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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)
Exemplo n.º 10
0
 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)
Exemplo n.º 11
0
 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)
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
def make_password():
    return ' '.join(otp.OTP().reformat(binascii.hexlify(os.urandom(8)),
                                       format='words').lower().split()[:3])