Skip to content

Commit 55c8138

Browse files
test: fix test_certauthority_root.py (#10762)
it does not work with python3 ``` 2025-04-18T10:43:58.5235913Z 2025-04-18 10:32:20,503 - CRITICAL - EXCEPTION: Failure:: ['Traceback (most recent call last):\n', ' File "/opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/unittest/case.py", line 59, in testPartExecutor\n yield\n', ' File "/opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/unittest/case.py", line 591, in run\n self._callTestMethod(testMethod)\n', ' File "/opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/unittest/case.py", line 549, in _callTestMethod\n method()\n', ' File "/home/runner/.local/lib/python3.10/site-packages/nose/failure.py", line 35, in runTest\n raise self.exc_val.with_traceback(self.tb)\n', ' File "/home/runner/.local/lib/python3.10/site-packages/nose/loader.py", line 335, in loadTestsFromName\n module = self.importer.importFromPath(\n', ' File "/home/runner/.local/lib/python3.10/site-packages/nose/importer.py", line 162, in importFromPath\n return self.importFromDir(dir_path, fqname)\n', ' File "/home/runner/.local/lib/python3.10/site-packages/nose/importer.py", line 198, in importFromDir\n mod = load_module(part_fqname, fh, filename, desc)\n', ' File "/home/runner/.local/lib/python3.10/site-packages/nose/importer.py", line 128, in load_module\n spec.loader.exec_module(mod)\n', ' File "<frozen importlib._bootstrap_external>", line 883, in exec_module\n', ' File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed\n', ' File "/home/runner/work/cloudstack/cloudstack/test/integration/smoke/test_certauthority_root.py", line 27, in <module>\n from OpenSSL.crypto import FILETYPE_PEM, verify, X509\n', "ImportError: cannot import name 'verify' from 'OpenSSL.crypto' (unknown location)\n"] ```
1 parent 422264f commit 55c8138

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

test/integration/smoke/test_certauthority_root.py

+17-19
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,7 @@
2424
from cryptography import x509
2525
from cryptography.hazmat.backends import default_backend
2626
from cryptography.hazmat.primitives import serialization
27-
from OpenSSL.crypto import FILETYPE_PEM, verify, X509
28-
29-
PUBKEY_VERIFY=True
30-
try:
31-
from OpenSSL.crypto import load_publickey
32-
except ImportError:
33-
PUBKEY_VERIFY=False
27+
from cryptography.hazmat.primitives.asymmetric import padding
3428

3529

3630
class TestCARootProvider(cloudstackTestCase):
@@ -52,6 +46,20 @@ def tearDownClass(cls):
5246
raise Exception("Warning: Exception during cleanup : %s" % e)
5347

5448

49+
def verifySignature(self, caCert, cert):
50+
print("Verifying Certificate")
51+
caPublicKey = caCert.public_key()
52+
try:
53+
caPublicKey.verify(
54+
cert.signature,
55+
cert.tbs_certificate_bytes,
56+
padding.PKCS1v15(),
57+
cert.signature_hash_algorithm,
58+
)
59+
print("Certificate is valid!")
60+
except Exception as e:
61+
print(f"Certificate verification failed: {e}")
62+
5563
def setUp(self):
5664
self.apiclient = self.testClient.getApiClient()
5765
self.dbclient = self.testClient.getDbConnection()
@@ -136,13 +144,8 @@ def test_issue_certificate_without_csr(self):
136144
self.assertTrue(address in [str(x) for x in altNames.value.get_values_for_type(x509.IPAddress)])
137145

138146
# Validate certificate against CA public key
139-
global PUBKEY_VERIFY
140-
if not PUBKEY_VERIFY:
141-
return
142147
caCert = x509.load_pem_x509_certificate(self.getCaCertificate().encode(), default_backend())
143-
x = X509()
144-
x.set_pubkey(load_publickey(FILETYPE_PEM, caCert.public_key().public_bytes(serialization.Encoding.PEM, serialization.PublicFormat.SubjectPublicKeyInfo)))
145-
verify(x, cert.signature, cert.tbs_certificate_bytes, cert.signature_hash_algorithm.name)
148+
self.verifySignature(caCert, cert)
146149

147150

148151
@attr(tags=['advanced', 'simulator', 'basic', 'sg'], required_hardware=False)
@@ -165,13 +168,8 @@ def test_issue_certificate_with_csr(self):
165168
self.assertEqual(cert.subject.get_attributes_for_oid(x509.oid.NameOID.COMMON_NAME)[0].value, 'v-1-VM')
166169

167170
# Validate certificate against CA public key
168-
global PUBKEY_VERIFY
169-
if not PUBKEY_VERIFY:
170-
return
171171
caCert = x509.load_pem_x509_certificate(self.getCaCertificate().encode(), default_backend())
172-
x = X509()
173-
x.set_pubkey(load_publickey(FILETYPE_PEM, caCert.public_key().public_bytes(serialization.Encoding.PEM, serialization.PublicFormat.SubjectPublicKeyInfo)))
174-
verify(x, cert.signature, cert.tbs_certificate_bytes, cert.signature_hash_algorithm.name)
172+
self.verifySignature(caCert, cert)
175173

176174

177175
@attr(tags=['advanced', 'simulator', 'basic', 'sg'], required_hardware=False)

0 commit comments

Comments
 (0)