diff options
author | Joel Kitching <kitching@google.com> | 2019-06-09 12:37:55 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-02-09 11:59:26 +0000 |
commit | a32d8d67587ec2cfdb4598ef69d8d8763b34f6e8 (patch) | |
tree | 29a65094ffea26d52ffa73a67fb4fd4d2156bad6 /tests/verify_kernel.c | |
parent | 58229e2c77f949976d051387fe17f572802fd708 (diff) | |
download | vboot-a32d8d67587ec2cfdb4598ef69d8d8763b34f6e8.tar.gz |
vboot: update vb2api_kernel_phase1 to use GBB interface
vb2api_kernel_phase1 was previously written to read the GBB
headers, locate the recovery key, and then load it. GBB headers
are now saved directly on workbuf in firmware phase. Simply use
the vb2_gbb_read_recovery_key function to retrieve the key.
Update LoadKernel to read kernel subkey from vboot2 workbuf.
Update tests/verify_kernel.c to write subkey to vboot2 workbuf.
BUG=b:124141368, chromium:954774, chromium:1038260
TEST=make clean && make runtests
BRANCH=none
Change-Id: Ia85013da34bdab68bf486014a3401d48c95b3472
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1651221
Tested-by: Joel Kitching <kitching@chromium.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
Diffstat (limited to 'tests/verify_kernel.c')
-rw-r--r-- | tests/verify_kernel.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/tests/verify_kernel.c b/tests/verify_kernel.c index 1a4831d5..ac4b45e6 100644 --- a/tests/verify_kernel.c +++ b/tests/verify_kernel.c @@ -115,16 +115,18 @@ int main(int argc, char *argv[]) sd = vb2_get_sd(ctx); sd->vbsd = shared; - /* Copy kernel subkey to VBSD */ - struct vb2_packed_key *dst = (struct vb2_packed_key *) - (shared_data + vb2_wb_round_up(sizeof(VbSharedDataHeader))); - shared->kernel_subkey.key_offset = - (uintptr_t)dst - (uintptr_t)&shared->kernel_subkey; - shared->kernel_subkey.key_size = kernkey->key_size; - shared->kernel_subkey.algorithm = kernkey->algorithm; - shared->kernel_subkey.key_version = kernkey->key_version; - memcpy(vb2_packed_key_data_mutable(dst), vb2_packed_key_data(kernkey), - kernkey->key_size); + /* Copy kernel subkey to workbuf */ + { + struct vb2_workbuf wb; + struct vb2_packed_key *dst; + uint32_t kernkey_size = kernkey->key_offset + kernkey->key_size; + vb2_workbuf_from_ctx(ctx, &wb); + dst = vb2_workbuf_alloc(&wb, kernkey_size); + memcpy(dst, kernkey, kernkey_size); + vb2_set_workbuf_used(ctx, vb2_offset_of(sd, wb.buf)); + sd->kernel_key_offset = vb2_offset_of(sd, dst); + sd->kernel_key_size = kernkey_size; + } /* * LoadKernel() cares only about VBNV_DEV_BOOT_SIGNED_ONLY, and only in |