Skip to content

Commit bd6d6cc

Browse files
authored
Merge pull request #75 from Venafi/pkcs12_support
PKCS12 support
2 parents 060600c + 44cedce commit bd6d6cc

5 files changed

Lines changed: 462 additions & 175 deletions

File tree

tests/test_e2e.py

Lines changed: 0 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -627,178 +627,3 @@ def renew_by_thumbprint(conn, prev_cert):
627627
print(prev_cert.subject.get_attributes_for_oid(NameOID.COMMON_NAME))
628628
assert cert.subject.get_attributes_for_oid(NameOID.COMMON_NAME) == prev_cert.subject.get_attributes_for_oid(
629629
NameOID.COMMON_NAME)
630-
631-
632-
class TestLocalMethods(unittest.TestCase):
633-
634-
def test_parse_cloud_zone1(self):
635-
conn = CloudConnection(token="")
636-
p = conn._parse_policy_response_to_object(json.loads(POLICY_CLOUD1))
637-
self.assertEqual(p.id, "3da4ba30-c370-11e9-9e69-99559a9ae32a")
638-
self.assertEqual(p.SubjectCNRegexes[-1], ".*.test")
639-
self.assertTrue(
640-
p.SubjectCRegexes == p.SubjectLRegexes == p.SubjectORegexes == p.SubjectOURegexes == p.SubjectSTRegexes == [
641-
".*"])
642-
self.assertEqual(p.key_types[0].key_type, KeyType.RSA)
643-
self.assertEqual(p.key_types[0].option, 2048)
644-
self.assertEqual(p.key_types[1].key_type, KeyType.RSA)
645-
self.assertEqual(p.key_types[1].option, 4096)
646-
self.assertTrue(len(p.key_types) == 2)
647-
648-
# cloud doesnt support ecdsa yet. may be can be enabled in the future
649-
# def test_parse_cloud_zone2(self):
650-
# conn = CloudConnection(token="")
651-
# p = conn._parse_policy_responce_to_object(json.loads(POLICY_CLOUD2))
652-
# self.assertTrue(len(p.key_types) == 2)
653-
# self.assertEqual(p.key_types[1].key_type, KeyType.RSA)
654-
# self.assertEqual(p.key_types[0].key_type, KeyType.ECDSA)
655-
# self.assertEqual(p.key_types[0].key_curves, ["p521"])
656-
657-
def test_parse_tpp_zone1(self):
658-
conn = TPPConnection(url="http://example.com/", user="", password="")
659-
z = conn._parse_zone_data_to_object(json.loads(POLICY_TPP1))
660-
self.assertEqual(z.country.value, "US")
661-
self.assertEqual(z.locality.value, "Salt Lake")
662-
self.assertEqual(z.province.value, "Utah")
663-
self.assertEqual(z.organization.value, "Venafi Inc.")
664-
665-
def test_parse_tpp_policy1(self):
666-
conn = TPPConnection(url="http://example.com/", user="", password="")
667-
raw_data = json.loads(POLICY_TPP1)
668-
p = conn._parse_zone_config_to_policy(raw_data)
669-
self.assertEqual(len(p.key_types), 7)
670-
raw_data['Policy']['KeyPair']['KeySize']['Locked'] = True
671-
p = conn._parse_zone_config_to_policy(raw_data)
672-
self.assertEqual(len(p.key_types), 4)
673-
raw_data['Policy']['KeyPair']['KeyAlgorithm']['Locked'] = True
674-
p = conn._parse_zone_config_to_policy(raw_data)
675-
self.assertEqual(len(p.key_types), 1)
676-
677-
def test_update_request_with_zone_config(self):
678-
r = CertificateRequest()
679-
z = ZoneConfig(
680-
organization=CertField("Venafi"),
681-
organizational_unit=CertField(""),
682-
country=CertField(""),
683-
province=CertField(""),
684-
locality=CertField(""),
685-
policy=None,
686-
key_type=None
687-
)
688-
r.update_from_zone_config(z)
689-
self.assertEqual(r.organization, "Venafi")
690-
r = CertificateRequest(organization="Test")
691-
r.update_from_zone_config(z)
692-
self.assertEqual(r.organization, "Test")
693-
z = ZoneConfig(
694-
organization=CertField("Venafi", locked=True),
695-
organizational_unit=CertField(""),
696-
country=CertField(""),
697-
province=CertField(""),
698-
locality=CertField(""),
699-
policy=None,
700-
key_type=None
701-
)
702-
r.update_from_zone_config(z)
703-
self.assertEqual(r.organization, "Venafi")
704-
705-
def test_request_with_csr(self):
706-
req = CertificateRequest(common_name="test.example.com", csr=EXAMPLE_CSR)
707-
self.assertEqual(req.common_name, "test.example.com")
708-
with self.assertRaises(Exception):
709-
CertificateRequest(common_name="test2.example.com", csr=EXAMPLE_CSR)
710-
req = CertificateRequest(csr=EXAMPLE_CSR)
711-
self.assertEqual(req.common_name, None)
712-
713-
def test_generate_rsa_csr(self):
714-
req = CertificateRequest(common_name="test.example.com", key_type=KeyType("rsa", 2048))
715-
req.build_csr()
716-
req = x509.load_pem_x509_csr(req.csr.encode(), default_backend())
717-
self.assertEqual(req.public_key().key_size, 2048)
718-
719-
def test_generate_ecdsa_csr(self):
720-
req = CertificateRequest(common_name="test.exampe.com", key_type=KeyType("ecdsa", "p384"))
721-
req.build_csr()
722-
req = x509.load_pem_x509_csr(req.csr.encode(), default_backend())
723-
self.assertEqual(req.public_key().curve.name, "secp384r1")
724-
725-
def test_generate_rsa_key(self):
726-
req = CertificateRequest(common_name="test.example.com", key_type=KeyType("rsa", 2048))
727-
req._gen_key()
728-
self.assertEqual(req.public_key.key_size, 2048)
729-
730-
def test_generate_ecdsa_key(self):
731-
req = CertificateRequest(common_name="test.exampe.com", key_type=KeyType("ecdsa", "p384"))
732-
req._gen_key()
733-
self.assertEqual(req.public_key.curve.name, "secp384r1")
734-
735-
def test_parse_key_arguments(self):
736-
k = KeyType("rsa", 2048)
737-
self.assertEqual(k.key_type, k.RSA)
738-
self.assertEqual(k.option, 2048)
739-
k = KeyType("Rsa", 4096)
740-
self.assertEqual(k.key_type, k.RSA)
741-
self.assertEqual(k.option, 4096)
742-
k = KeyType("ecdsa", "secp256r1")
743-
self.assertEqual(k.key_type, k.ECDSA)
744-
self.assertEqual(k.option, "p256")
745-
with self.assertRaises(Exception):
746-
k = KeyType("ololo", 2048)
747-
with self.assertRaises(Exception):
748-
k = KeyType("ecdsa", 2048)
749-
with self.assertRaises(Exception):
750-
k = KeyType("ecdsa", "secp256k1")
751-
with self.assertRaises(Exception):
752-
k = KeyType("rsa", "")
753-
with self.assertRaises(Exception):
754-
k = KeyType("rsa", 1024)
755-
with self.assertRaises(Exception):
756-
k = KeyType("rsa", None)
757-
758-
def test_pass_invalid_key_type_to_request(self):
759-
with self.assertRaises(Exception):
760-
req = CertificateRequest(common_name="test.example.com", key_type="rsa")
761-
762-
def test_return_pem_private_key(self):
763-
req = CertificateRequest(common_name="test.example.com", key_password="ololo")
764-
req.build_csr()
765-
self.assertIn("ENCRYPTED", req.private_key_pem)
766-
req = CertificateRequest(common_name="test.example.com")
767-
req.build_csr()
768-
self.assertNotIn("ENCRYPTED", req.private_key_pem)
769-
770-
def test_return_pem_csr(self):
771-
req = CertificateRequest(common_name="test.example.com")
772-
req.build_csr()
773-
self.assertIn("CERTIFICATE REQUEST", req.csr)
774-
775-
def test_return_pem_cert(self):
776-
conn = FakeConnection()
777-
req = CertificateRequest(common_name="test.example.com")
778-
conn.request_cert(req, "")
779-
cert = conn.retrieve_cert(req)
780-
self.assertIn("BEGIN CERTIFICATE", cert.cert)
781-
782-
def test_tpp_url_normalization(self):
783-
conn = TPPConnection(url="localhost", user="user", password="password")
784-
self.assertEqual(conn._base_url, "https://localhost/")
785-
conn._base_url = "http://localhost:8080"
786-
self.assertEqual(conn._base_url, "https://localhost:8080/")
787-
conn._base_url = "http://localhost:8080/vedsdk"
788-
self.assertEqual(conn._base_url, "https://localhost:8080/")
789-
with self.assertRaises(Exception):
790-
conn._base_url = "ftp://example.com"
791-
with self.assertRaises(Exception):
792-
conn._base_url = ""
793-
with self.assertRaises(Exception):
794-
conn._base_url = "https://"
795-
796-
def test_parse_pem_chain(self):
797-
cert = parse_pem(EXAMPLE_CHAIN, "last")
798-
self.assertEqual(len(cert.chain), 2)
799-
self.assertIn("PRIVATE", cert.key)
800-
c = x509.load_pem_x509_certificate(cert.cert.encode(), default_backend())
801-
for a in c.subject:
802-
if a.oid == x509.NameOID.COMMON_NAME:
803-
subject = a.value
804-
self.assertEqual(subject, "test2.example.com")

0 commit comments

Comments
 (0)