Source code for commands.import_idevid_truststores
"""Imports Truststores from specific PEM files in tests/data/idevid_hierarchies."""from__future__importannotationsfrompathlibimportPathfromtypesimportMappingProxyTypefromcryptographyimportx509fromcryptography.hazmat.primitivesimporthashesfromdjango.core.management.baseimportBaseCommandfrompki.modelsimportCertificateModel,TruststoreModel,TruststoreOrderModel
[docs]classCommand(BaseCommand):"""Imports Truststores from specific PEM files in tests/data/idevid_hierarchies."""
[docs]help='Imports Truststores from specific PEM files in tests/data/idevid_hierarchies'
[docs]defhandle(self,*_args:tuple[str],**_kwargs:dict[str,str])->None:"""Execute the command."""base_path=Path(__file__).resolve().parent.joinpath('../../../../tests/data/idevid_hierarchies').resolve()forrelative_path,unique_nameinself.TRUSTSTORE_RELATIVE_PATHS.items():pem_path=Path(base_path/relative_path)ifnotPath.exists(pem_path):self.stderr.write(self.style.ERROR(f'File not found: {pem_path}'))continuetry:withpem_path.open('rb')asf:pem_content=f.read()certificates=x509.load_pem_x509_certificates(pem_content)self._save_trust_store(unique_name=f'idevid-truststore-{unique_name}',intended_usage=TruststoreModel.IntendedUsage.IDEVID,certificates=certificates,)self.stdout.write(self.style.SUCCESS(f'Imported Truststore: {unique_name}'))exceptExceptionase:# noqa: BLE001self.stderr.write(self.style.ERROR(f'Failed to import {pem_path}: {e}'))