def test_domain1(self): """Verify we can generate new keys in a given domain""" dsa_key_1 = DSA.generate(1024) domain_params = dsa_key_1.domain() dsa_key_2 = DSA.generate(1024, domain=domain_params) self.assertEqual(dsa_key_1.p, dsa_key_2.p) self.assertEqual(dsa_key_1.q, dsa_key_2.q) self.assertEqual(dsa_key_1.g, dsa_key_2.g) self.assertEqual(dsa_key_1.domain(), dsa_key_2.domain())
def generate_keys(bits, private, public): key = DSA.generate(bits=bits) with open(private, "wb") as input_file_pr: input_file_pr.write(key.exportKey()) with open(public, "wb") as input_file_pb: input_file_pb.write(key.publickey().exportKey()) return key, key.publickey()
from crypto.PublicKey import DSA from crypto.Signature import DSS from crypto.Hash import SHA256 key = DSA.generate(2048) f = open("public_key.pem", "w") f.write(key.publickey().export_key()) f.close() message = b"Hello" hash_obj = SHA256.new(message) signer = DSS.new(key, 'fips-186-3') signature = signer.sign(hash_obj) f = open("public_key.pem", "r") hash_obj = SHA256.new(message) pub_key = DSA.import_key(f.read()) verifier = DSS.new(pub_key, 'fips-186-3') try: verifier.verify(hash_obj, signature) print("The message is authentic.") except ValueError: print("The message is not authentic.")