mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-11-24 02:05:01 +00:00
Add checksum to TPM RollbackSpace regions for FW and kernel.
BUG=chrome-os-partner:9707 TEST=manual make make runtests You can also test it by clearing the TPM, then manually looking at the TPM regions. In dev-mode, clear the regions and you'll see something like this: localhost ~ # tpmc read 1007 a 1 0 0 0 0 0 0 0 0 0 localhost ~ # tpmc read 1008 d 1 4c 57 52 47 0 0 0 0 0 0 0 0 localhost ~ # Go back to normal mode and reboot, and you'll see something like this: localhost ~ # tpmc read 1007 a 2 0 1 0 1 0 0 0 0 4f localhost ~ # tpmc read 1008 d 2 4c 57 52 47 1 0 1 0 0 0 0 55 localhost ~ # The important things are that the first number is now 2, instead of 1, and the last number is not zero (it's a checksum, so it'll vary depending on the other numbers, which will themselves vary according to the firmware and kernel versions). Change-Id: Ia4040311c2a4b2819792549b883377c8b6b89d48 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/22856 Reviewed-by: Randall Spangler <rspangler@chromium.org>
This commit is contained in:
@@ -21,14 +21,15 @@
|
||||
__pragma(pack(push, 1)) /* Support packing for MSVC. */
|
||||
|
||||
/* Kernel space - KERNEL_NV_INDEX, locked with physical presence. */
|
||||
#define ROLLBACK_SPACE_KERNEL_VERSION 1
|
||||
#define ROLLBACK_SPACE_KERNEL_VERSION 2
|
||||
#define ROLLBACK_SPACE_KERNEL_UID 0x4752574C /* 'GRWL' */
|
||||
typedef struct RollbackSpaceKernel {
|
||||
uint8_t struct_version; /* Struct version, for backwards
|
||||
* compatibility */
|
||||
uint32_t uid; /* Unique ID to detect space redefinition */
|
||||
uint32_t kernel_versions; /* Kernel versions */
|
||||
uint32_t reserved; /* Reserved for future expansion */
|
||||
uint8_t reserved[3]; /* Reserved for future expansion */
|
||||
uint8_t crc8; /* Checksum (v2 and later only) */
|
||||
} __attribute__((packed)) RollbackSpaceKernel;
|
||||
|
||||
|
||||
@@ -41,13 +42,14 @@ typedef struct RollbackSpaceKernel {
|
||||
* from the backup copy. */
|
||||
#define FLAG_KERNEL_SPACE_USE_BACKUP 0x02
|
||||
|
||||
#define ROLLBACK_SPACE_FIRMWARE_VERSION 1
|
||||
#define ROLLBACK_SPACE_FIRMWARE_VERSION 2
|
||||
/* Firmware space - FIRMWARE_NV_INDEX, locked with global lock. */
|
||||
typedef struct RollbackSpaceFirmware {
|
||||
uint8_t struct_version; /* Struct version, for backwards compatibility */
|
||||
uint8_t flags; /* Flags (see FLAG_* above) */
|
||||
uint32_t fw_versions; /* Firmware versions */
|
||||
uint32_t reserved; /* Reserved for future expansion */
|
||||
uint8_t reserved[3]; /* Reserved for future expansion */
|
||||
uint8_t crc8; /* Checksum (v2 and later only) */
|
||||
} __attribute__((packed)) RollbackSpaceFirmware;
|
||||
|
||||
__pragma(pack(pop)) /* Support packing for MSVC. */
|
||||
|
||||
Reference in New Issue
Block a user