tests/conftest.py
| 1 | """Shared test fixtures for pqc-bootloader.""" |
| 2 | |
| 3 | from __future__ import annotations |
| 4 | |
| 5 | import pytest |
| 6 | from quantumshield.identity.agent import AgentIdentity |
| 7 | |
| 8 | from pqc_bootloader.firmware import FirmwareImage, FirmwareMetadata, TargetDevice |
| 9 | from pqc_bootloader.key_ring import KeyRing |
| 10 | from pqc_bootloader.signer import FirmwareSigner |
| 11 | |
| 12 | |
| 13 | @pytest.fixture |
| 14 | def manufacturer_identity() -> AgentIdentity: |
| 15 | return AgentIdentity.create("acme-appliance-vendor") |
| 16 | |
| 17 | |
| 18 | @pytest.fixture |
| 19 | def rogue_identity() -> AgentIdentity: |
| 20 | return AgentIdentity.create("rogue-attacker") |
| 21 | |
| 22 | |
| 23 | @pytest.fixture |
| 24 | def firmware_signer(manufacturer_identity: AgentIdentity) -> FirmwareSigner: |
| 25 | return FirmwareSigner(manufacturer_identity) |
| 26 | |
| 27 | |
| 28 | @pytest.fixture |
| 29 | def sample_firmware_bytes() -> bytes: |
| 30 | return b"\x7fELF\x02\x01\x01\x00" + b"firmware binary payload" * 64 |
| 31 | |
| 32 | |
| 33 | @pytest.fixture |
| 34 | def sample_metadata() -> FirmwareMetadata: |
| 35 | return FirmwareMetadata( |
| 36 | name="acme-inference-os", |
| 37 | version="1.2.3", |
| 38 | target=TargetDevice.AI_INFERENCE_APPLIANCE, |
| 39 | kernel_version="6.6.12", |
| 40 | architecture="x86_64", |
| 41 | build_id="abc123def456", |
| 42 | release_notes_url="https://acme.example/releases/1.2.3", |
| 43 | min_hardware_revision="rev-C", |
| 44 | security_level="production", |
| 45 | ) |
| 46 | |
| 47 | |
| 48 | @pytest.fixture |
| 49 | def sample_firmware( |
| 50 | sample_metadata: FirmwareMetadata, sample_firmware_bytes: bytes |
| 51 | ) -> FirmwareImage: |
| 52 | return FirmwareImage.from_bytes(sample_metadata, sample_firmware_bytes) |
| 53 | |
| 54 | |
| 55 | @pytest.fixture |
| 56 | def trusted_key_ring(manufacturer_identity: AgentIdentity) -> KeyRing: |
| 57 | ring = KeyRing() |
| 58 | ring.add( |
| 59 | public_key_hex=manufacturer_identity.signing_keypair.public_key.hex(), |
| 60 | algorithm=manufacturer_identity.signing_keypair.algorithm.value, |
| 61 | manufacturer="Acme Appliances Inc.", |
| 62 | ) |
| 63 | return ring |
| 64 | |