summaryrefslogtreecommitdiff
path: root/tests/vb2_sha_api_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vb2_sha_api_tests.c')
-rw-r--r--tests/vb2_sha_api_tests.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/tests/vb2_sha_api_tests.c b/tests/vb2_sha_api_tests.c
index 6a23dcee..cb58f7bc 100644
--- a/tests/vb2_sha_api_tests.c
+++ b/tests/vb2_sha_api_tests.c
@@ -54,13 +54,30 @@ vb2_error_t vb2_digest_finalize(struct vb2_digest_context *dc, uint8_t *digest,
return mock_finalize_rv;
}
+static void vb2_hash_cbfs_compatibility_test(void)
+{
+ /* 'algo' used to be represented as a 4-byte big-endian in CBFS. Confirm
+ that the new representation is binary compatible for small values. */
+ union {
+ struct vb2_hash hash;
+ struct {
+ uint32_t be32;
+ uint8_t bytes[0];
+ };
+ } test = {0};
+
+ test.be32 = htobe32(0xa5);
+ TEST_EQ(test.hash.algo, 0xa5, "vb2_hash algo compatible to CBFS attr");
+ TEST_PTR_EQ(&test.hash.raw, &test.bytes, " digest offset matches");
+}
+
static void vb2_hash_calculate_tests(void)
{
reset_common_data();
TEST_SUCC(vb2_hash_calculate(&mock_buffer, sizeof(mock_buffer),
VB2_HASH_SHA1, &mock_hash),
"hash_calculate success");
- TEST_SUCC(memcmp(mock_hash.bytes.sha1, mock_sha1, sizeof(mock_sha1)),
+ TEST_SUCC(memcmp(mock_hash.sha1, mock_sha1, sizeof(mock_sha1)),
" got the right hash");
TEST_EQ(mock_hash.algo, VB2_HASH_SHA1, " set algo correctly");
@@ -87,19 +104,19 @@ static void vb2_hash_verify_tests(void)
{
reset_common_data();
- memcpy(mock_hash.bytes.sha1, mock_sha1, sizeof(mock_sha1));
+ memcpy(mock_hash.sha1, mock_sha1, sizeof(mock_sha1));
mock_hash.algo = VB2_HASH_SHA1;
TEST_SUCC(vb2_hash_verify(mock_buffer, sizeof(mock_buffer),
&mock_hash), "hash_verify success");
- memcpy(mock_hash.bytes.sha1, mock_sha1, sizeof(mock_sha1));
+ memcpy(mock_hash.sha1, mock_sha1, sizeof(mock_sha1));
mock_hash.algo = VB2_HASH_SHA256;
TEST_EQ(vb2_hash_verify(mock_buffer, sizeof(mock_buffer),
&mock_hash), VB2_ERROR_MOCK,
"hash_verify wrong algo");
- memcpy(mock_hash.bytes.sha1, mock_sha1, sizeof(mock_sha1));
- mock_hash.bytes.sha1[5] = 0xfe;
+ memcpy(mock_hash.sha1, mock_sha1, sizeof(mock_sha1));
+ mock_hash.sha1[5] = 0xfe;
mock_hash.algo = VB2_HASH_SHA1;
TEST_EQ(vb2_hash_verify(mock_buffer, sizeof(mock_buffer),
&mock_hash), VB2_ERROR_SHA_MISMATCH,
@@ -108,9 +125,11 @@ static void vb2_hash_verify_tests(void)
int main(int argc, char *argv[])
{
- TEST_EQ(sizeof(mock_hash.bytes), VB2_SHA512_DIGEST_SIZE,
+ TEST_EQ(sizeof(mock_hash),
+ offsetof(struct vb2_hash, raw) + VB2_SHA512_DIGEST_SIZE,
"tests run with all SHA algorithms enabled");
+ vb2_hash_cbfs_compatibility_test();
vb2_hash_calculate_tests();
vb2_hash_verify_tests();