| // Providing docstrings for each constant would be a lot of work, so |
| // allow missing docs. Each type-level doc links to the relevant spec to |
| // provide more info. |
| // |
| // Setting this at the module level so that we don't have to write it |
| // above each constant. That's also why these enums are in a separate |
| // module instead of `super`, since we don't want to allow missing docs |
| // too broadly. |
| #![allow(missing_docs)] |
| |
| newtype_enum! { |
| /// Algorithm identifiers. |
| /// |
| /// These values are defined in the [TCG Algorithm Registry]. |
| /// |
| /// [TCG Algorithm Registry]: https://trustedcomputinggroup.org/resource/tcg-algorithm-registry/ |
| pub enum AlgorithmId: u16 => { |
| ERROR = 0x0000, |
| RSA = 0x0001, |
| TDES = 0x0003, |
| SHA1 = 0x0004, |
| HMAC = 0x0005, |
| AES = 0x0006, |
| MGF1 = 0x0007, |
| KEYED_HASH = 0x0008, |
| XOR = 0x000a, |
| SHA256 = 0x000b, |
| SHA384 = 0x000c, |
| SHA512 = 0x000d, |
| NULL = 0x0010, |
| SM3_256 = 0x0012, |
| SM4 = 0x0013, |
| // TODO: there are a bunch more, but the above list is probably |
| // more than sufficient for real devices. |
| } |
| } |
| |
| newtype_enum! { |
| /// Event types stored in the TPM event log. The event type defines |
| /// which structure type is stored in the event data. |
| /// |
| /// For details of each variant, see the [TCG PC Client Platform |
| /// Firmware Protocol Specification][spec], in particular the Events |
| /// table in the Event Logging chapter. |
| /// |
| /// [spec]: https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/ |
| pub enum EventType: u32 => { |
| PREBOOT_CERT = 0x0000_0000, |
| POST_CODE = 0x0000_0001, |
| UNUSED = 0x0000_0002, |
| NO_ACTION = 0x0000_0003, |
| SEPARATOR = 0x0000_0004, |
| ACTION = 0x0000_0005, |
| EVENT_TAG = 0x0000_0006, |
| CRTM_CONTENTS = 0x0000_0007, |
| CRTM_VERSION = 0x0000_0008, |
| CPU_MICROCODE = 0x0000_0009, |
| PLATFORM_CONFIG_FLAGS = 0x0000_000a, |
| TABLE_OF_DEVICES = 0x0000_000b, |
| COMPACT_HASH = 0x0000_000c, |
| IPL = 0x0000_000d, |
| IPL_PARTITION_DATA = 0x0000_000e, |
| NONHOST_CODE = 0x0000_000f, |
| NONHOST_CONFIG = 0x0000_0010, |
| NONHOST_INFO = 0x0000_0011, |
| OMIT_BOOT_DEVICE_EVENTS = 0x0000_0012, |
| EFI_EVENT_BASE = 0x8000_0000, |
| EFI_VARIABLE_DRIVER_CONFIG = 0x8000_0001, |
| EFI_VARIABLE_BOOT = 0x8000_0002, |
| EFI_BOOT_SERVICES_APPLICATION = 0x8000_0003, |
| EFI_BOOT_SERVICES_DRIVER = 0x8000_0004, |
| EFI_RUNTIME_SERVICES_DRIVER = 0x8000_0005, |
| EFI_GPT_EVENT = 0x8000_0006, |
| EFI_ACTION = 0x8000_0007, |
| EFI_PLATFORM_FIRMWARE_BLOB = 0x8000_0008, |
| EFI_HANDOFF_TABLES = 0x8000_0009, |
| EFI_PLATFORM_FIRMWARE_BLOB2 = 0x8000_000a, |
| EFI_HANDOFF_TABLES2 = 0x8000_000b, |
| EFI_VARIABLE_BOOT2 = 0x8000_000c, |
| EFI_HCRTM_EVENT = 0x8000_0010, |
| EFI_VARIABLE_AUTHORITY = 0x8000_00e0, |
| EFI_SPDM_FIRMWARE_BLOB = 0x8000_00e1, |
| EFI_SPDM_FIRMWARE_CONFIG = 0x8000_00e2, |
| } |
| } |