fwupd/plugins/intel-me/fu-intel-me-common.h
Richard Hughes 0f8ec55f46 Add a new plugin to get more Intel ME MCA data
This allows us to get the OEM Public Key BootGuard hashes.

Also add a new HSI test for leaked bootguard keys.
2022-10-13 18:34:00 +01:00

65 lines
1.6 KiB
C

/*
* Copyright (C) 2022 Richard Hughes <richard@hughsie.com>
*
* SPDX-License-Identifier: LGPL-2.1+
*/
#pragma once
#include <gio/gio.h>
typedef struct __attribute__((packed)) {
guint8 group_id;
guint8 command : 7;
guint8 is_resp : 1;
guint8 rsvd;
guint8 result;
} FuMkhiHeader;
typedef enum {
MKHI_GROUP_ID_CBM,
MKHI_GROUP_ID_PM, /* no longer used */
MKHI_GROUP_ID_PWD,
MKHI_GROUP_ID_FWCAPS,
MKHI_GROUP_ID_APP, /* no longer used */
MKHI_GROUP_ID_FWUPDATE, /* for manufacturing downgrade */
MKHI_GROUP_ID_FIRMWARE_UPDATE,
MKHI_GROUP_ID_BIST,
MKHI_GROUP_ID_MDES,
MKHI_GROUP_ID_ME_DBG,
MKHI_GROUP_ID_MCA, /* sometimes called "FPF" */
MKHI_GROUP_ID_GEN = 0xFF
} FuMkhiGroupId;
#define MCA_READ_FILE_EX 0x02
#define MCA_READ_FILE_EX_CMD 0x0A
typedef enum {
MKHI_STATUS_SUCCESS,
MKHI_STATUS_INVALID_STATE,
MKHI_STATUS_MESSAGE_SKIPPED,
MKHI_STATUS_SIZE_ERROR = 0x05,
MKHI_STATUS_NOT_SET = 0x0F, /* guessed */
MKHI_STATUS_NOT_AVAILABLE = 0x18, /* guessed */
MKHI_STATUS_INVALID_ACCESS = 0x84,
MKHI_STATUS_INVALID_PARAMS = 0x85,
MKHI_STATUS_NOT_READY = 0x88,
MKHI_STATUS_NOT_SUPPORTED = 0x89,
MKHI_STATUS_INVALID_ADDRESS = 0x8C,
MKHI_STATUS_INVALID_COMMAND = 0x8D,
MKHI_STATUS_FAILURE = 0x9E,
MKHI_STATUS_INVALID_RESOURCE = 0xE4,
MKHI_STATUS_RESOURCE_IN_USE = 0xE5,
MKHI_STATUS_NO_RESOURCE = 0xE6,
MKHI_STATUS_GENERAL_ERROR = 0xFF
} FuMkhiResult;
GString *
fu_intel_me_convert_checksum(GByteArray *buf, GError **error);
gboolean
fu_intel_me_mkhi_result_to_error(FuMkhiResult result, GError **error);
gboolean
fu_intel_me_mkhi_verify_header(const FuMkhiHeader hdr_req,
const FuMkhiHeader hdr_res,
GError **error);