summaryrefslogtreecommitdiff
path: root/tests/vb2_api_tests.c
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2019-12-12 13:18:29 -0800
committerCommit Bot <commit-bot@chromium.org>2019-12-13 17:20:10 +0000
commit2843aa62ba7bcaab2abccf16e3f1b8bd7e058fdb (patch)
tree761caa649d873759caed4026631115ee604a1fa1 /tests/vb2_api_tests.c
parentb10e5e32cc34dba7660b070616d3481742a28e70 (diff)
downloadvboot-2843aa62ba7bcaab2abccf16e3f1b8bd7e058fdb.tar.gz
2lib: Move firmware body size reporting to separate function
We used to return the firmware body size as part of vb2api_init_hash(). With persistent context and other recent developments, coreboot is caching less data itself and relying more on vboot's data structures, so it may now need this information at more points than just during the hashing process. So let's create a custom function to return this. BRANCH=hatch BUG=b:143994765 TEST=make runtests Cq-Depend: chromium:1965837 Change-Id: I2bc968cd163016fd0130416c2679724caad895a2 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1965920 Reviewed-by: Mathew King <mathewk@chromium.org> Reviewed-by: Joel Kitching <kitching@chromium.org>
Diffstat (limited to 'tests/vb2_api_tests.c')
-rw-r--r--tests/vb2_api_tests.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/tests/vb2_api_tests.c b/tests/vb2_api_tests.c
index b3ad5fda..c2a52dbb 100644
--- a/tests/vb2_api_tests.c
+++ b/tests/vb2_api_tests.c
@@ -112,7 +112,7 @@ static void reset_common_data(enum reset_type t)
k->algorithm = mock_algorithm;
if (t == FOR_EXTEND_HASH || t == FOR_CHECK_HASH)
- vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY, NULL);
+ vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY);
if (t == FOR_CHECK_HASH)
vb2api_extend_hash(ctx, mock_body, mock_body_size);
@@ -289,6 +289,14 @@ static void misc_tests(void)
12, "vb2api_fail request");
TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_SUBCODE),
34, "vb2api_fail subcode");
+
+ /* Test get_firmware_size() */
+ reset_common_data(FOR_MISC);
+ TEST_EQ(vb2api_get_firmware_size(ctx), mock_body_size, "firmware_size");
+
+ reset_common_data(FOR_MISC);
+ sd->preamble_size = 0;
+ TEST_EQ(vb2api_get_firmware_size(ctx), 0, "firmware_size too early");
}
static void phase1_tests(void)
@@ -550,12 +558,11 @@ static void init_hash_tests(void)
{
struct vb2_packed_key *k;
int wb_used_before;
- uint32_t size;
/* For now, all we support is body signature hash */
reset_common_data(FOR_MISC);
wb_used_before = sd->workbuf_used;
- TEST_SUCC(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY, &size),
+ TEST_SUCC(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY),
"init hash good");
TEST_EQ(sd->hash_offset, wb_used_before, "hash context offset");
TEST_EQ(sd->hash_size, sizeof(struct vb2_digest_context),
@@ -567,43 +574,43 @@ static void init_hash_tests(void)
TEST_EQ(sd->hash_remaining_size, mock_body_size, "hash remaining");
wb_used_before = sd->workbuf_used;
- TEST_SUCC(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY, NULL),
+ TEST_SUCC(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY),
"init hash again");
TEST_EQ(sd->workbuf_used, wb_used_before, "init hash reuses context");
reset_common_data(FOR_MISC);
- TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_INVALID, &size),
+ TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_INVALID),
VB2_ERROR_API_INIT_HASH_TAG, "init hash invalid tag");
reset_common_data(FOR_MISC);
sd->preamble_size = 0;
- TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY, &size),
+ TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY),
VB2_ERROR_API_INIT_HASH_PREAMBLE, "init hash preamble");
reset_common_data(FOR_MISC);
- TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY + 1, &size),
+ TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY + 1),
VB2_ERROR_API_INIT_HASH_TAG, "init hash unknown tag");
reset_common_data(FOR_MISC);
sd->workbuf_used = sd->workbuf_size + VB2_WORKBUF_ALIGN -
vb2_wb_round_up(sizeof(struct vb2_digest_context));
- TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY, &size),
+ TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY),
VB2_ERROR_API_INIT_HASH_WORKBUF, "init hash workbuf");
reset_common_data(FOR_MISC);
sd->data_key_size = 0;
- TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY, &size),
+ TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY),
VB2_ERROR_API_INIT_HASH_DATA_KEY, "init hash data key");
reset_common_data(FOR_MISC);
sd->data_key_size--;
- TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY, &size),
+ TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY),
VB2_ERROR_UNPACK_KEY_SIZE, "init hash data key size");
reset_common_data(FOR_MISC);
k = vb2_member_of(sd, sd->data_key_offset);
k->algorithm--;
- TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY, &size),
+ TEST_EQ(vb2api_init_hash(ctx, VB2_HASH_TAG_FW_BODY),
VB2_ERROR_SHA_INIT_ALGORITHM, "init hash algorithm");
}