Source code for commands.create_test_cross_signed
"""Command for generating test cross-signed CA certificates."""
from __future__ import annotations
from typing import Any
from django.core.management.base import BaseCommand
from pki.models import CertificateModel
from .base_commands import CertificateCreationCommandMixin
[docs]
class Command(CertificateCreationCommandMixin, BaseCommand):
"""Django management command for adding issuing CA test data."""
[docs]
help = 'Generates two cross-signed certificate chains.'
[docs]
def handle(self, *_args: Any, **_kwargs: Any) -> None:
"""Executes the command."""
root_1, root_1_key = self.create_root_ca('Root CA A')
root_2, root_2_key = self.create_root_ca('Root CA B')
issuing_1, issuing_1_key = self.create_issuing_ca(root_1_key, 'Root CA A', 'Issuing CA')
issuing_2, issuing_2_key = self.create_issuing_ca(root_2_key, 'Root CA B', 'Issuing CA', issuing_1_key)
ee_1, _ = self.create_ee(issuing_1_key, issuing_1.subject, 'EE A1')
ee_2, _ = self.create_ee(issuing_1_key, issuing_1.subject, 'EE A2')
ee_3, _ = self.create_ee(issuing_2_key, issuing_2.subject, 'EE B1')
ee_4, _ = self.create_ee(issuing_2_key, issuing_2.subject, 'EE B2')
CertificateModel.save_certificate(root_1)
CertificateModel.save_certificate(root_2)
CertificateModel.save_certificate(issuing_1)
CertificateModel.save_certificate(issuing_2)
CertificateModel.save_certificate(ee_1)
CertificateModel.save_certificate(ee_2)
CertificateModel.save_certificate(ee_3)
CertificateModel.save_certificate(ee_4)