class TestDH(unittest.TestCase): # create a DH object and # set a fixed prvsecret instead of a random number def setUp(self): self.alice = DH(321, 2203) self.alice.prvsecret = 12 self.bob = DH(321, 2203) self.bob.prvsecret = 19 def test_gen_pubkey(self): self.assertEqual(self.alice.gen_pubkey(), 486) self.assertEqual(self.bob.gen_pubkey(), 1876) def test_gen_shared_secret(self): self.assertEqual(self.alice.gen_shared_secret(1876), 956) self.assertEqual(self.bob.gen_shared_secret(486), 956) def test_set_shared_secret(self): self.alice.set_shared_secret(1876) self.bob.set_shared_secret(486) self.assertEqual(self.alice.sharedsecret, self.bob.sharedsecret) def test_DH_init(self): self.assertRaises(ValueError, DH, 2, 2)
#!/usr/bin/env python """ example diffie-hellman keyexchange for more information about DH see: http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange """ from DH import DH PRIMITIVE_ROOT = 42 PRIME = 44318 ALICE = DH(PRIMITIVE_ROOT, PRIME) print "ALICE: g=%i, p=%i" % (ALICE.in_g, ALICE.in_p) print "ALICE: secret: %i" % ALICE.prvsecret print "ALICE: pubkey: %s\n" % ALICE.gen_pubkey() BOB = DH(PRIMITIVE_ROOT, PRIME) print "BOB: g=%i, p=%i" % (BOB.in_g, BOB.in_p) print "BOB: secret: %i" % BOB.prvsecret print "BOB: pubkey: %s\n" % BOB.gen_pubkey() print "keyexchange..." ALICE.set_shared_secret(BOB.gen_pubkey()) BOB.set_shared_secret(ALICE.gen_pubkey()) print "ALICE shared: %s" % ALICE.sharedsecret print "BOB shared: %s" % BOB.sharedsecret