1 // Providing docstrings for each constant would be a lot of work, so 2 // allow missing docs. Each type-level doc links to the relevant spec to 3 // provide more info. 4 // 5 // Setting this at the module level so that we don't have to write it 6 // above each constant. That's also why these enums are in a separate 7 // module instead of `super`, since we don't want to allow missing docs 8 // too broadly. 9 #![allow(missing_docs)] 10 11 newtype_enum! { 12 /// Algorithm identifiers. 13 /// 14 /// These values are defined in the [TCG Algorithm Registry]. 15 /// 16 /// [TCG Algorithm Registry]: https://trustedcomputinggroup.org/resource/tcg-algorithm-registry/ 17 pub enum AlgorithmId: u16 => { 18 ERROR = 0x0000, 19 RSA = 0x0001, 20 TDES = 0x0003, 21 SHA1 = 0x0004, 22 HMAC = 0x0005, 23 AES = 0x0006, 24 MGF1 = 0x0007, 25 KEYED_HASH = 0x0008, 26 XOR = 0x000a, 27 SHA256 = 0x000b, 28 SHA384 = 0x000c, 29 SHA512 = 0x000d, 30 NULL = 0x0010, 31 SM3_256 = 0x0012, 32 SM4 = 0x0013, 33 // TODO: there are a bunch more, but the above list is probably 34 // more than sufficient for real devices. 35 } 36 } 37 38 newtype_enum! { 39 /// Event types stored in the TPM event log. The event type defines 40 /// which structure type is stored in the event data. 41 /// 42 /// For details of each variant, see the [TCG PC Client Platform 43 /// Firmware Protocol Specification][spec], in particular the Events 44 /// table in the Event Logging chapter. 45 /// 46 /// [spec]: https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/ 47 pub enum EventType: u32 => { 48 PREBOOT_CERT = 0x0000_0000, 49 POST_CODE = 0x0000_0001, 50 UNUSED = 0x0000_0002, 51 NO_ACTION = 0x0000_0003, 52 SEPARATOR = 0x0000_0004, 53 ACTION = 0x0000_0005, 54 EVENT_TAG = 0x0000_0006, 55 CRTM_CONTENTS = 0x0000_0007, 56 CRTM_VERSION = 0x0000_0008, 57 CPU_MICROCODE = 0x0000_0009, 58 PLATFORM_CONFIG_FLAGS = 0x0000_000a, 59 TABLE_OF_DEVICES = 0x0000_000b, 60 COMPACT_HASH = 0x0000_000c, 61 IPL = 0x0000_000d, 62 IPL_PARTITION_DATA = 0x0000_000e, 63 NONHOST_CODE = 0x0000_000f, 64 NONHOST_CONFIG = 0x0000_0010, 65 NONHOST_INFO = 0x0000_0011, 66 OMIT_BOOT_DEVICE_EVENTS = 0x0000_0012, 67 EFI_EVENT_BASE = 0x8000_0000, 68 EFI_VARIABLE_DRIVER_CONFIG = 0x8000_0001, 69 EFI_VARIABLE_BOOT = 0x8000_0002, 70 EFI_BOOT_SERVICES_APPLICATION = 0x8000_0003, 71 EFI_BOOT_SERVICES_DRIVER = 0x8000_0004, 72 EFI_RUNTIME_SERVICES_DRIVER = 0x8000_0005, 73 EFI_GPT_EVENT = 0x8000_0006, 74 EFI_ACTION = 0x8000_0007, 75 EFI_PLATFORM_FIRMWARE_BLOB = 0x8000_0008, 76 EFI_HANDOFF_TABLES = 0x8000_0009, 77 EFI_PLATFORM_FIRMWARE_BLOB2 = 0x8000_000a, 78 EFI_HANDOFF_TABLES2 = 0x8000_000b, 79 EFI_VARIABLE_BOOT2 = 0x8000_000c, 80 EFI_HCRTM_EVENT = 0x8000_0010, 81 EFI_VARIABLE_AUTHORITY = 0x8000_00e0, 82 EFI_SPDM_FIRMWARE_BLOB = 0x8000_00e1, 83 EFI_SPDM_FIRMWARE_CONFIG = 0x8000_00e2, 84 } 85 } 86