(self, private_cls, key_size=None)
| 46 | @unittest.skipUnless(dns.dnssec._have_pyca, "Python Cryptography cannot be imported") |
| 47 | class DNSSECAlgorithm(unittest.TestCase): |
| 48 | def _test_dnssec_alg(self, private_cls, key_size=None): |
| 49 | public_cls = private_cls.public_cls |
| 50 | |
| 51 | private_key = ( |
| 52 | private_cls.generate(key_size) if key_size else private_cls.generate() |
| 53 | ) |
| 54 | |
| 55 | # sign random data |
| 56 | data = os.urandom(1024) |
| 57 | signature = private_key.sign(data, verify=True) |
| 58 | |
| 59 | # validate signature using public key |
| 60 | public_key = private_key.public_key() |
| 61 | public_key.verify(signature, data) |
| 62 | |
| 63 | # create DNSKEY |
| 64 | dnskey = public_key.to_dnskey() |
| 65 | dnskey2 = public_cls.from_dnskey(dnskey).to_dnskey() |
| 66 | self.assertEqual(dnskey, dnskey2) |
| 67 | |
| 68 | # test cryptography keys |
| 69 | _ = private_cls(key=private_key.key) |
| 70 | _ = public_cls(key=public_key.key) |
| 71 | |
| 72 | # to/from PEM |
| 73 | password = b"mekmitasdigoat" |
| 74 | private_pem = private_key.to_pem() |
| 75 | private_pem_encrypted = private_key.to_pem(password=password) |
| 76 | public_pem = public_key.to_pem() |
| 77 | _ = private_cls.from_pem(private_pem) |
| 78 | _ = private_cls.from_pem(private_pem_encrypted, password) |
| 79 | _ = public_cls.from_pem(public_pem) |
| 80 | |
| 81 | def test_rsa(self): |
| 82 | self._test_dnssec_alg(PrivateRSAMD5, 2048) |
no test coverage detected