"""Command to create a test Issuing CA and some example end-entity certificates."""from__future__importannotationsimportrandomfromcryptographyimportx509fromdjango.core.management.baseimportBaseCommandfrom.base_commandsimportCertificateCreationCommandMixin
[docs]classCommand(CertificateCreationCommandMixin,BaseCommand):"""Django management command for adding issuing CA test data."""
[docs]help='Removes all migrations, deletes db and runs makemigrations and migrate afterwards.'
[docs]defhandle(self,*_args:tuple[str],**_kwargs:dict[str,str])->None:"""Executes the command."""key_usage_extension=x509.KeyUsage(digital_signature=True,content_commitment=False,key_encipherment=False,data_encipherment=False,key_agreement=False,key_cert_sign=False,crl_sign=False,decipher_only=False,encipher_only=False,)root_1,root_1_key=self.create_root_ca('root_ca')issuing_1,issuing_1_key=self.create_issuing_ca(root_1_key,'root_ca','issuing_ca',validity_days=50)self.store_issuing_ca(issuing_1,[root_1],issuing_1_key,'issuing_ca.p12')self.save_issuing_ca(issuing_1,[root_1],issuing_1_key,'issuing_ca')ee_certs={}ee_keys={}foriinrange(10):random_integer=random.randint(20,80)# noqa: S311sign=random.choice([1,-1])# noqa: S311validity_days=random_integer*signee,key=self.create_ee(issuer_private_key=issuing_1_key,issuer_cn='issuing_ca',subject_name=f'EE {i}',extensions=[(key_usage_extension,False)],validity_days=validity_days,)ee_certs[f'ee{i}']=eeee_keys[f'key{i}']=keyself.store_ee_certs(ee_certs)self.store_ee_keys(ee_keys)self.save_ee_certs(ee_certs)self.create_csr(10)