Skip to content

Commit 24e1abd

Browse files
committed
adds tpp retire by thumbprint and tests for tpp and vaas
1 parent 5b87d1b commit 24e1abd

4 files changed

Lines changed: 56 additions & 4 deletions

File tree

tests/test_tpp_token.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from assets import TEST_KEY_ECDSA, TEST_KEY_RSA_4096, TEST_KEY_RSA_2048_ENCRYPTED
2727
from test_env import TPP_ZONE, TPP_ZONE_ECDSA, TPP_USER, TPP_PASSWORD, TPP_TOKEN_URL
2828
from test_utils import (random_word, enroll, renew, renew_by_thumbprint, renew_without_key_reuse,
29-
enroll_with_zone_update, simple_enroll)
29+
enroll_with_zone_update, simple_enroll, retire_by_id, retire_by_thumbprint)
3030
from vcert import (CustomField, KeyType, RevocationRequest, CertificateRequest, IssuerHint, logger, TPPTokenConnection)
3131
from vcert.errors import ClientBadData, ServerUnexptedBehavior
3232

@@ -267,3 +267,22 @@ def test_revoke_access_token(self):
267267
cn = f"{random_word(10)}.venafi.example.com"
268268
with self.assertRaises(Exception):
269269
enroll(self.tpp_conn, self.tpp_zone, cn)
270+
271+
def test_tpp_token_retire_cert_id(self):
272+
cn = f"{random_word(10)}.venafi.example.com"
273+
try:
274+
req, cert = simple_enroll(self.tpp_conn, self.tpp_zone)
275+
ret_data = retire_by_id(id=req.id)
276+
assert ret_data['Success'] is True
277+
except Exception as err:
278+
self.fail(f"Error in tpp retire by id test: {err.message}")
279+
280+
def test_tpp_token_retire_cert_thumbprint(self):
281+
cn = f"{random_word(10)}.venafi.example.com"
282+
try:
283+
req, cert = simple_enroll(self.tpp_conn, self.tpp_zone)
284+
cert = x509.load_pem_x509_certificate(cert.cert.encode(), default_backend())
285+
ret_data = retire_by_thumbprint(prev_cert=cert)
286+
assert ret_data['Success'] is True
287+
except Exception as err:
288+
self.fail(f"Error in tpp retire by thumbprint test: {err.message}")

tests/test_utils.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
from test_env import RANDOM_DOMAIN
3030
from vcert import CertificateRequest, FakeConnection, TPPConnection, TPPTokenConnection, CSR_ORIGIN_SERVICE
31+
from vcert.common import RetireRequest
3132

3233

3334
def random_word(length):
@@ -209,3 +210,18 @@ def renew_by_thumbprint(conn, prev_cert):
209210
print(prev_cert.subject.get_attributes_for_oid(NameOID.COMMON_NAME))
210211
assert cert.subject.get_attributes_for_oid(NameOID.COMMON_NAME) == prev_cert.subject.get_attributes_for_oid(
211212
NameOID.COMMON_NAME)
213+
214+
215+
def retire_by_id(conn, prev_cert_id):
216+
print("trying to retire by id")
217+
ret_request = RetireRequest(req_id=prev_cert_id)
218+
retire_data = conn.retire_cert(ret_request)
219+
return retire_data
220+
221+
222+
def retire_by_thumbprint(conn, prev_cert):
223+
print("Trying to retire by thumbprint")
224+
thumbprint = binascii.hexlify(prev_cert.fingerprint(hashes.SHA1())).decode()
225+
ret_request = RetireRequest(thumbprint=thumbprint)
226+
retire_data = conn.retire_cert(ret_request)
227+
return retire_data

tests/test_vaas.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
get_vaas_zone
3232
from vcert import CloudConnection, KeyType, CertificateRequest, CustomField, logger, CSR_ORIGIN_SERVICE
3333
from vcert.policy import KeyPair, DefaultKeyPair, PolicySpecification
34+
from vcert.common import RetireRequest
3435

3536
log = logger.get_child("test-vaas")
3637

@@ -214,3 +215,15 @@ def test_enroll_ec_key_certificate(self):
214215
if p_key:
215216
self.assertIsInstance(p_key, EllipticCurvePrivateKey, "returned private key is not of type Elliptic Curve")
216217
self.assertEqual(p_key.curve.key_size, 384, f"Private Key expected curve: 384. Got: {p_key.curve.key_size}")
218+
219+
def test_cloud_retire_by_thumbprint(self):
220+
try:
221+
req, cert = simple_enroll(self.cloud_conn, self.cloud_zone)
222+
cert = x509.load_pem_x509_certificate(cert.cert.encode(), default_backend())
223+
fingerprint = binascii.hexlify(cert.fingerprint(hashes.SHA1())).decode()
224+
time.sleep(1)
225+
ret_request = RetireRequest(thumbprint=fingerprint)
226+
ret_data = self.cloud_conn.retire_cert(fingerprint)
227+
assert ret_data is True
228+
except Exception as e:
229+
log.error(msg=f"Error retiring certificate by thumbprint: {e.message}")

vcert/connection_tpp_abstract.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -362,10 +362,14 @@ def retire_cert(self, request):
362362
}
363363
]
364364
}
365-
if request.id:
366-
cert_guid = self.get_certificate_guid_from_dn(request.id)
367-
elif request.guid:
365+
366+
if request.guid:
368367
cert_guid = request.guid
368+
elif request.id:
369+
cert_guid = self.get_certificate_guid_from_dn(request.id)
370+
elif request.thumbprint:
371+
req_id = self.search_by_thumbprint(request.thumbprint)
372+
cert_guid = self.get_certificate_guid_from_dn(req_id)
369373
else:
370374
raise ClientBadData
371375

0 commit comments

Comments
 (0)