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/vboot_api_kernel4_tests.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/vboot_api_kernel4_tests.c')
-rw-r--r-- | tests/vboot_api_kernel4_tests.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c index 97a6b1d2..a376be09 100644 --- a/tests/vboot_api_kernel4_tests.c +++ b/tests/vboot_api_kernel4_tests.c @@ -38,6 +38,7 @@ static vb2_error_t commit_data_retval; static int commit_data_called; static vb2_error_t secdata_kernel_init_retval; static vb2_error_t secdata_fwmp_init_retval; +static vb2_error_t kernel_phase1_retval; static uint32_t mock_switches[8]; static uint32_t mock_switches_count; @@ -58,6 +59,7 @@ static void ResetMocks(void) sd = vb2_get_sd(ctx); sd->flags |= VB2_SD_FLAG_DISPLAY_AVAILABLE; ctx->flags |= VB2_CONTEXT_NO_SECDATA_FWMP; + sd->preamble_size = 1; vb2_nv_init(ctx); vb2_nv_set(ctx, VB2_NV_KERNEL_MAX_ROLLFORWARD, 0xffffffff); @@ -70,6 +72,7 @@ static void ResetMocks(void) vbboot_retval = VB2_SUCCESS; secdata_kernel_init_retval = VB2_SUCCESS; secdata_fwmp_init_retval = VB2_SUCCESS; + kernel_phase1_retval = VB2_SUCCESS; memset(mock_switches, 0, sizeof(mock_switches)); mock_switches_count = 0; @@ -78,6 +81,14 @@ static void ResetMocks(void) /* Mock functions */ +vb2_error_t vb2api_kernel_phase1(struct vb2_context *c) +{ + sd->kernel_version_secdata = kernel_version; + shared->kernel_version_tpm_start = kernel_version; + shared->kernel_version_tpm = kernel_version; + return kernel_phase1_retval; +} + vb2_error_t vb2ex_commit_data(struct vb2_context *c) { commit_data_called = 1; @@ -89,12 +100,6 @@ vb2_error_t vb2_secdata_kernel_init(struct vb2_context *c) return secdata_kernel_init_retval; } -uint32_t vb2_secdata_kernel_get(struct vb2_context *c, - enum vb2_secdata_kernel_param param) -{ - return kernel_version; -} - vb2_error_t vb2_secdata_fwmp_init(struct vb2_context *c) { return secdata_fwmp_init_retval; @@ -239,16 +244,10 @@ static void VbSlkTest(void) " didn't commit nvdata"); } - /* Boot normal - secdata init failures */ - ResetMocks(); - secdata_kernel_init_retval = VB2_ERROR_UNKNOWN; - test_slk(secdata_kernel_init_retval, VB2_RECOVERY_SECDATA_KERNEL_INIT, - "Normal secdata_kernel init error triggers recovery"); - + /* Boot normal - phase1 failure */ ResetMocks(); - secdata_fwmp_init_retval = VB2_ERROR_UNKNOWN; - test_slk(secdata_fwmp_init_retval, VB2_RECOVERY_SECDATA_FWMP_INIT, - "Normal secdata_fwmp init error triggers recovery"); + kernel_phase1_retval = VB2_ERROR_MOCK; + test_slk(VB2_ERROR_MOCK, 0, "Normal phase1 failure"); /* Boot normal - commit data failures */ ResetMocks(); @@ -277,6 +276,12 @@ static void VbSlkTest(void) test_slk(0, 0, "Dev doesn't roll forward"); TEST_EQ(kernel_version, 0x10002, " version"); + /* Boot dev - phase1 failure */ + ResetMocks(); + sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; + kernel_phase1_retval = VB2_ERROR_MOCK; + test_slk(VB2_ERROR_MOCK, 0, "Dev phase1 failure"); + /* Boot recovery */ ResetMocks(); sd->recovery_reason = 123; @@ -289,6 +294,12 @@ static void VbSlkTest(void) test_slk(0, 0, "Recovery doesn't roll forward"); TEST_EQ(kernel_version, 0x10002, " version"); + /* Boot recovery - phase1 failure */ + ResetMocks(); + sd->recovery_reason = 123; + kernel_phase1_retval = VB2_ERROR_MOCK; + test_slk(VB2_ERROR_MOCK, 0, "Recovery phase1 failure"); + /* Boot recovery - commit data failures */ ResetMocks(); sd->recovery_reason = 123; |