blob: bb12078aff08ce25185a17c82f0ad1175a1fdd47 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef VBOOT_CHECK_H
#define VBOOT_CHECK_H
#include <cbfs.h>
#include <device/device.h>
#include <device/pci.h>
#include <lib.h>
#include CONFIG_VENDORCODE_ELTAN_VBOOT_MANIFEST
#include <console/console.h>
#include <vb2_sha.h>
#include <string.h>
#include <program_loading.h>
#include <mboot.h>
#define VERIFIED_BOOT_COPY_BLOCK 0x80000000
/* These method verifies the SHA256 hash over the 'named' CBFS component.
* 'type' denotes the type of CBFS component i.e. stage, payload or fsp.
*/
void verified_boot_bootblock_check(void);
void verified_boot_early_check(void);
int verified_boot_check_manifest(void);
void verified_boot_check_cbfsfile(const char *name, uint32_t type,
uint32_t hash_index, void **buffer, uint32_t *filesize, int32_t pcr);
typedef enum {
VERIFY_TERMINATOR = 0,
VERIFY_FILE,
VERIFY_BLOCK,
VERIFY_OPROM
} verify_type;
typedef struct {
verify_type type;
const char *name;
union {
struct {
const void *related_items;
uint32_t cbfs_type;
} file;
struct {
const void *start;
uint32_t size;
} block;
struct {
const void *related_items;
uint32_t viddev;
} oprom;
} data;
uint32_t hash_index;
int32_t pcr;
} verify_item_t;
void process_verify_list(const verify_item_t list[]);
extern const verify_item_t bootblock_verify_list[];
extern const verify_item_t romstage_verify_list[];
extern const verify_item_t postcar_verify_list[];
extern const verify_item_t ramstage_verify_list[];
extern const verify_item_t payload_verify_list[];
extern const verify_item_t oprom_verify_list[];
#endif //VBOOT_CHECK_H