Source code for commands.create_test_long_chain_p12
"""Management command for generating a long test PKI chain."""from__future__importannotationsfrompathlibimportPathfromtypingimportAnyfromcryptography.hazmat.primitives.serializationimportBestAvailableEncryption,pkcs12fromdjango.core.management.baseimportBaseCommandfrompki.modelsimportCertificateModelfrom.base_commandsimportCertificateCreationCommandMixin
[docs]classCommand(CertificateCreationCommandMixin,BaseCommand):"""Django management command for generating a long test PKI chain."""
[docs]help='Generate a long certificate chain with 4 Intermediate CAs.'
[docs]defhandle(self,*_args:Any,**_kwargs:Any)->None:"""Executes the command."""root_1,root_1_key=self.create_root_ca('Root CA A')issuing_1,issuing_1_key=self.create_issuing_ca(root_1_key,'Root CA A','Intermediate CA A')issuing_2,issuing_2_key=self.create_issuing_ca(issuing_1_key,'Intermediate CA A','Intermediate CA B')issuing_3,issuing_3_key=self.create_issuing_ca(issuing_2_key,'Intermediate CA B','Intermediate CA C')issuing_4,issuing_4_key=self.create_issuing_ca(issuing_3_key,'Intermediate CA C','Intermediate CA D')issuing_5,issuing_5_key=self.create_issuing_ca(issuing_4_key,'Intermediate CA D','Issuing CA')ee_1,_ee_key=self.create_ee(issuing_5_key,'Issuing CA','EE A1')p12=pkcs12.serialize_key_and_certificates(b'my p12',issuing_5_key,issuing_5,[root_1,issuing_1,issuing_2,issuing_3,issuing_4],encryption_algorithm=BestAvailableEncryption(b'testing321'),)withPath(Path(__file__).parent.parent.parent/'p12.p12').open('wb')asf:f.write(p12)CertificateModel.save_certificate(root_1)CertificateModel.save_certificate(issuing_1)CertificateModel.save_certificate(issuing_2)CertificateModel.save_certificate(issuing_3)CertificateModel.save_certificate(issuing_4)CertificateModel.save_certificate(issuing_5)CertificateModel.save_certificate(ee_1)