def testC06PrimaryRevocation(self): "crypto.signature: verify_DSA() primary key revocation by hand" d = read_test_file(['pgpfiles','key','DSAELG1.pub.revoked.gpg']) keypkt, revocpkt = list_pkts(d)[:2] context = sha.new(keypkt.rawstr()+revocpkt.body.hashed_data).digest() sigtup = (revocpkt.body.DSA_r.value, revocpkt.body.DSA_s.value) keytup = (keypkt.body.DSA_y.value, keypkt.body.DSA_g.value, keypkt.body.DSA_p.value, keypkt.body.DSA_q.value) self.assertEqual(1, verify_DSA(context, sigtup, keytup))
def testC06PrimaryRevocation(self): "crypto.signature: verify_DSA() primary key revocation by hand" d = read_test_file(['pgpfiles', 'key', 'DSAELG1.pub.revoked.gpg']) keypkt, revocpkt = list_pkts(d)[:2] context = sha.new(keypkt.rawstr() + revocpkt.body.hashed_data).digest() sigtup = (revocpkt.body.DSA_r.value, revocpkt.body.DSA_s.value) keytup = (keypkt.body.DSA_y.value, keypkt.body.DSA_g.value, keypkt.body.DSA_p.value, keypkt.body.DSA_q.value) self.assertEqual(1, verify_DSA(context, sigtup, keytup))
def testC01DSAPGPSignature(self): "crypto.signature: verify_DSA() One-Pass v3 by hand" dsakey = list_pkts(dsapubkey_d)[0].body onepass, lit, sig = [x.body for x in list_pkts(dsasig_d)] # we know that this was signed using SHA1, ignoring onepass packet msg = sha.new(lit.data + sig.hashed_data).digest() sigtup = (sig.DSA_r.value, sig.DSA_s.value) keytup = (dsakey.DSA_y.value, dsakey.DSA_g.value, dsakey.DSA_p.value, dsakey.DSA_q.value) self.assertEqual(1, verify_DSA(msg, sigtup, keytup))
def testC04DSAv4UID(self): "crypto.signature: verify_DSA() v4 user ID by hand" keypkt, uidpkt, sigpkt = list_pkts(dsapubkey_d)[:3] # two octet primary key length (packet body) keylen = int2quadoct(keypkt.length.size)[-2:] # four octet user ID length (packet body) uidlen = int2quadoct(uidpkt.length.size) context = sha.new('\x99'+keylen+keypkt.body._d+'\xb4'+uidlen+uidpkt.body._d+sigpkt.body.hashed_data).digest() sigtup = (sigpkt.body.DSA_r.value, sigpkt.body.DSA_s.value) keytup = (keypkt.body.DSA_y.value, keypkt.body.DSA_g.value, keypkt.body.DSA_p.value, keypkt.body.DSA_q.value) self.assertEqual(1, verify_DSA(context, sigtup, keytup))
def testC05DSAv4Subkey(self): "crypto.signature: verify_DSA() v4 subkey by hand" pkts = list_pkts(dsapubkey_d) keypkt, subkeypkt, sigpkt = pkts[0], pkts[3], pkts[4] # two octet primary key length (packet body) keylen = int2quadoct(keypkt.length.size)[-2:] # two octet subkey length (packet body) subkeylen = int2quadoct(subkeypkt.length.size)[-2:] context = sha.new('\x99'+keylen+keypkt.body._d+'\x99'+subkeylen+subkeypkt.body._d+sigpkt.body.hashed_data).digest() sigtup = (sigpkt.body.DSA_r.value, sigpkt.body.DSA_s.value) keytup = (keypkt.body.DSA_y.value, keypkt.body.DSA_g.value, keypkt.body.DSA_p.value, keypkt.body.DSA_q.value) self.assertEqual(1, verify_DSA(context, sigtup, keytup))
def testC04DSAv4UID(self): "crypto.signature: verify_DSA() v4 user ID by hand" keypkt, uidpkt, sigpkt = list_pkts(dsapubkey_d)[:3] # two octet primary key length (packet body) keylen = int2quadoct(keypkt.length.size)[-2:] # four octet user ID length (packet body) uidlen = int2quadoct(uidpkt.length.size) context = sha.new('\x99' + keylen + keypkt.body._d + '\xb4' + uidlen + uidpkt.body._d + sigpkt.body.hashed_data).digest() sigtup = (sigpkt.body.DSA_r.value, sigpkt.body.DSA_s.value) keytup = (keypkt.body.DSA_y.value, keypkt.body.DSA_g.value, keypkt.body.DSA_p.value, keypkt.body.DSA_q.value) self.assertEqual(1, verify_DSA(context, sigtup, keytup))
def testC07SubkeyRevocation(self): "crypto.signature: verify_DSA() subkey revocation by hand" d = read_test_file(['pgpfiles','key','DSAELG2.subkeyrevoc.gpg']) keymsg = list_msgs(list_pkts(d))[0] revblock = keymsg._b_subkeys['90AFB828686B6E9A'] # known revoked block key = keymsg._b_primary.leader sig = revblock.local_bindings[0] subkey = revblock.leader l1 = int2quadoct(len(key.body._d))[-2:] l2 = int2quadoct(len(subkey.body._d))[-2:] context = sha.new('\x99'+l1+key.body._d+'\x99'+l2+subkey.body._d+sig.body.hashed_data).digest() sigtup = (sig.body.DSA_r.value, sig.body.DSA_s.value) keytup = (key.body.DSA_y.value, key.body.DSA_g.value, key.body.DSA_p.value, key.body.DSA_q.value) self.assertEqual(1, verify_DSA(context, sigtup, keytup))
def testC05DSAv4Subkey(self): "crypto.signature: verify_DSA() v4 subkey by hand" pkts = list_pkts(dsapubkey_d) keypkt, subkeypkt, sigpkt = pkts[0], pkts[3], pkts[4] # two octet primary key length (packet body) keylen = int2quadoct(keypkt.length.size)[-2:] # two octet subkey length (packet body) subkeylen = int2quadoct(subkeypkt.length.size)[-2:] context = sha.new('\x99' + keylen + keypkt.body._d + '\x99' + subkeylen + subkeypkt.body._d + sigpkt.body.hashed_data).digest() sigtup = (sigpkt.body.DSA_r.value, sigpkt.body.DSA_s.value) keytup = (keypkt.body.DSA_y.value, keypkt.body.DSA_g.value, keypkt.body.DSA_p.value, keypkt.body.DSA_q.value) self.assertEqual(1, verify_DSA(context, sigtup, keytup))
def testC07SubkeyRevocation(self): "crypto.signature: verify_DSA() subkey revocation by hand" d = read_test_file(['pgpfiles', 'key', 'DSAELG2.subkeyrevoc.gpg']) keymsg = list_msgs(list_pkts(d))[0] revblock = keymsg._b_subkeys['90AFB828686B6E9A'] # known revoked block key = keymsg._b_primary.leader sig = revblock.local_bindings[0] subkey = revblock.leader l1 = int2quadoct(len(key.body._d))[-2:] l2 = int2quadoct(len(subkey.body._d))[-2:] context = sha.new('\x99' + l1 + key.body._d + '\x99' + l2 + subkey.body._d + sig.body.hashed_data).digest() sigtup = (sig.body.DSA_r.value, sig.body.DSA_s.value) keytup = (key.body.DSA_y.value, key.body.DSA_g.value, key.body.DSA_p.value, key.body.DSA_q.value) self.assertEqual(1, verify_DSA(context, sigtup, keytup))
def testB01DSASignature(self): "crypto.signature: sign_DSA()/verify_DSA() sanity" sig = sign_DSA(txt, (dsakey.y, dsakey.g, dsakey.p, dsakey.q, dsakey.x)) ret = verify_DSA(txt, sig, (dsakey.y, dsakey.g, dsakey.p, dsakey.q)) self.assertEqual(ret, 1)