coreboot-kgpe-d16/util/cbfstool/cbfs_sections.h
Julius Werner 4bfbabdb54 cbfstool: Support CONFIG_CBFS_VERIFICATION and metadata hash anchor
This patch adds support for the new CONFIG_CBFS_VERIFICATION feature to
cbfstool. When CBFS verification is enabled, cbfstool must automatically
add a hash attribute to every CBFS file it adds (with a handful of
exceptions like bootblock and "header" pseudofiles that are never read
by coreboot code itself). It must also automatically update the metadata
hash that is embedded in the bootblock code. It will automatically find
the metadata hash by scanning the bootblock for its magic number and use
its presence to auto-detect whether CBFS verification is enabled for an
image (and which hash algorithm to use).

Signed-off-by: Julius Werner <jwerner@chromium.org>
Change-Id: I61a84add8654f60c683ef213b844a11b145a5cb7
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41121
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2021-03-13 04:16:20 +00:00

44 lines
1.4 KiB
C

/* fmap_sections.h, track which sections of the image will contain CBFSes */
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef CBFS_SECTIONS_H_
#define CBFS_SECTIONS_H_
#include "fmd.h"
#include <stdbool.h>
#define SECTION_NAME_FMAP "FMAP"
#define SECTION_NAME_PRIMARY_CBFS "COREBOOT"
#define SECTION_NAME_BOOTBLOCK "BOOTBLOCK"
#define SECTION_ANNOTATION_CBFS "CBFS"
typedef const struct descriptor_node *cbfs_section_iterator_t;
/** @return Iterator pointing to first CBFS section, or NULL if none exist */
cbfs_section_iterator_t cbfs_sections_iterator(void);
/**
* Advance iterator to point to the next CBFS section.
* If it was already pointing to the last such section, it will be set to NULL.
*
* @param it (Non-NULL) pointer to (possibly NULL) iterator to be updated
* @return Whether it was successfully advanced (wasn't already NULL)
*/
bool cbfs_sections_iterator_advance(cbfs_section_iterator_t *it);
/**
* @param it Iterator, which must currently be non-NULL
* @return Section to which it points
*/
const struct flashmap_descriptor *cbfs_sections_iterator_deref(
cbfs_section_iterator_t it);
/** @return Whether a section named SECTION_NAME_PRIMARY_CBFS is in the list. */
bool cbfs_sections_primary_cbfs_accounted_for(void);
/** Reclaim the space used to store knowledge of which sections are CBFSes. */
void cbfs_sections_cleanup(void);
#endif