3636 RANDOM_DOMAIN , CLOUD_ZONE , \
3737 TPP_ZONE , TPP_ZONE_ECDSA
3838from vcert import CloudConnection , CertificateRequest , TPPConnection , FakeConnection , ZoneConfig , RevocationRequest , \
39- TPPTokenConnection , CertField , KeyType , CustomField
39+ TPPTokenConnection , CertField , KeyType , CustomField , CSR_ORIGIN_SERVICE
4040from vcert .errors import ClientBadData , ServerUnexptedBehavior
4141from vcert .pem import parse_pem
4242
@@ -287,6 +287,15 @@ def test_tpp_token_enroll(self):
287287 except Exception as err :
288288 self .fail ("Error in test: %s" % err .message )
289289
290+ def test_tpp_token_enroll_with_service_generated_csr (self ):
291+ cn = random_word (10 ) + ".venafi.example.com"
292+ try :
293+ _ , _ , _ , _ , cert_guid = enroll (self .tpp_conn , self .tpp_zone , cn = cn , service_generated_csr = True )
294+ cert_config = self .tpp_conn ._get_certificate_details (cert_guid )
295+ self .assertEqual (cert_config ["Origin" ], "Venafi VCert-Python" )
296+ except Exception as err :
297+ self .fail ("Error in test: %s" % err .message )
298+
290299 def test_tpp_token_enroll_with_custom_fields (self ):
291300 cn = random_word (10 ) + ".venafi.example.com"
292301 custom_fields = [
@@ -496,7 +505,8 @@ def enroll_with_zone_update(conn, zone, cn=None):
496505 return cert , request .cert_guid
497506
498507
499- def enroll (conn , zone , cn = None , private_key = None , public_key = None , password = None , csr = None , custom_fields = None ):
508+ def enroll (conn , zone , cn = None , private_key = None , public_key = None , password = None , csr = None , custom_fields = None ,
509+ service_generated_csr = False ):
500510 request = CertificateRequest (
501511 common_name = cn ,
502512 private_key = private_key ,
@@ -515,6 +525,8 @@ def enroll(conn, zone, cn=None, private_key=None, public_key=None, password=None
515525
516526 if csr :
517527 request .csr = csr
528+ elif service_generated_csr :
529+ request .csr_origin = CSR_ORIGIN_SERVICE
518530
519531 conn .request_cert (request , zone )
520532 cert = conn .retrieve_cert (request )
@@ -523,9 +535,10 @@ def enroll(conn, zone, cn=None, private_key=None, public_key=None, password=None
523535 # and save into file
524536 f = open ("./cert.pem" , "w" )
525537 f .write (cert .full_chain )
526- f = open ("./cert.key" , "w" )
527- f .write (request .private_key_pem )
528- f .close ()
538+ if not service_generated_csr :
539+ f = open ("./cert.key" , "w" )
540+ f .write (request .private_key_pem )
541+ f .close ()
529542
530543 cert = x509 .load_pem_x509_certificate (cert .cert .encode (), default_backend ())
531544 assert isinstance (cert , x509 .Certificate )
@@ -551,11 +564,15 @@ def enroll(conn, zone, cn=None, private_key=None, public_key=None, password=None
551564 format = serialization .PublicFormat .SubjectPublicKeyInfo
552565 ).decode ()
553566 else :
554- source_public_key_pem = request .public_key_pem
567+ source_public_key_pem = request .public_key_pem if not service_generated_csr else None
555568 print (source_public_key_pem )
556569 print (cert_public_key_pem )
557- assert source_public_key_pem == cert_public_key_pem
558- return request .id , request .private_key_pem , cert , cert_public_key_pem , request .cert_guid
570+
571+ if not service_generated_csr :
572+ assert source_public_key_pem == cert_public_key_pem
573+ private_key_pem = request .private_key_pem if not service_generated_csr else None
574+
575+ return request .id , private_key_pem , cert , cert_public_key_pem , request .cert_guid
559576
560577
561578def renew (conn , cert_id , pkey , sn , cn ):
0 commit comments