summaryrefslogtreecommitdiffstats
path: root/util/cbfstool/cbfs_glue.h
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2020-05-06 17:27:02 -0700
committerJulius Werner <jwerner@chromium.org>2021-03-13 04:16:20 +0000
commit4bfbabdb54ed6a56bdfa9e703b49f4ed7d9a6acc (patch)
treedd7bbe12a6d46891ba7196bb6be9821be92120da /util/cbfstool/cbfs_glue.h
parent99f967b7a5869d0812c062e2fb3c5dd5a9e9958d (diff)
downloadcoreboot-4bfbabdb54ed6a56bdfa9e703b49f4ed7d9a6acc.tar.gz
coreboot-4bfbabdb54ed6a56bdfa9e703b49f4ed7d9a6acc.tar.bz2
coreboot-4bfbabdb54ed6a56bdfa9e703b49f4ed7d9a6acc.zip
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>
Diffstat (limited to 'util/cbfstool/cbfs_glue.h')
-rw-r--r--util/cbfstool/cbfs_glue.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/util/cbfstool/cbfs_glue.h b/util/cbfstool/cbfs_glue.h
new file mode 100644
index 000000000000..11786bece419
--- /dev/null
+++ b/util/cbfstool/cbfs_glue.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef _CBFS_GLUE_H_
+#define _CBFS_GLUE_H_
+
+#include "cbfs_image.h"
+
+#define CBFS_ENABLE_HASHING 1
+
+typedef const struct cbfs_image *cbfs_dev_t;
+
+static inline ssize_t cbfs_dev_read(cbfs_dev_t dev, void *buffer, size_t offset, size_t size)
+{
+ if (buffer_size(&dev->buffer) < offset ||
+ buffer_size(&dev->buffer) - offset < size)
+ return -1;
+
+ memcpy(buffer, buffer_get(&dev->buffer) + offset, size);
+ return size;
+}
+
+static inline size_t cbfs_dev_size(cbfs_dev_t dev)
+{
+ return buffer_size(&dev->buffer);
+}
+
+#endif /* _CBFS_GLUE_H_ */