mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-10 17:41:54 +00:00
tests: Cover a few assorted new cases
Assorted addtional tests to improve coverage of the firmware libraries. BUG=none BRANCH=none TEST=make runtests Change-Id: Iaf707bd54ca5dc10745eb19dfa9e9afbf0d74112 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/927608 Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
4a95b9b7ae
commit
225df798cf
@@ -66,6 +66,9 @@ static void test_verify_digest(struct vb2_public_key *key) {
|
||||
TEST_SUCC(vb2_rsa_verify_digest(key, sig, test_message_sha1_hash, &wb),
|
||||
"vb2_rsa_verify_digest() good");
|
||||
|
||||
TEST_EQ(vb2_rsa_verify_digest(key, NULL, test_message_sha1_hash, &wb),
|
||||
VB2_ERROR_RSA_VERIFY_PARAM, "vb2_rsa_verify_digest() bad arg");
|
||||
|
||||
memcpy(sig, signatures[0], sizeof(sig));
|
||||
vb2_workbuf_init(&wb, workbuf, sizeof(sig) * 3 - 1);
|
||||
TEST_EQ(vb2_rsa_verify_digest(key, sig, test_message_sha1_hash, &wb),
|
||||
|
||||
@@ -242,10 +242,11 @@ static void phase2_tests(void)
|
||||
reset_common_data(FOR_MISC);
|
||||
TEST_SUCC(vb2api_fw_phase2(&cc), "phase2 good");
|
||||
TEST_EQ(cc.flags & VB2_CONTEXT_CLEAR_RAM, 0, " clear ram flag");
|
||||
TEST_EQ(cc.flags & VB2_CONTEXT_FW_SLOT_B, 0, " slot b flag");
|
||||
|
||||
reset_common_data(FOR_MISC);
|
||||
cc.flags |= VB2_CONTEXT_DEVELOPER_MODE;
|
||||
TEST_SUCC(vb2api_fw_phase2(&cc), "phase1 dev");
|
||||
TEST_SUCC(vb2api_fw_phase2(&cc), "phase2 dev");
|
||||
TEST_NEQ(cc.flags & VB2_CONTEXT_CLEAR_RAM, 0, " clear ram flag");
|
||||
|
||||
reset_common_data(FOR_MISC);
|
||||
@@ -259,6 +260,20 @@ static void phase2_tests(void)
|
||||
TEST_EQ(vb2api_fw_phase2(&cc), VB2_ERROR_MOCK, "phase2 slot");
|
||||
TEST_EQ(vb2_nv_get(&cc, VB2_NV_RECOVERY_REQUEST),
|
||||
VB2_RECOVERY_FW_SLOT, " recovery reason");
|
||||
|
||||
/* S3 resume exits before clearing RAM */
|
||||
reset_common_data(FOR_MISC);
|
||||
cc.flags |= VB2_CONTEXT_S3_RESUME;
|
||||
cc.flags |= VB2_CONTEXT_DEVELOPER_MODE;
|
||||
TEST_SUCC(vb2api_fw_phase2(&cc), "phase2 s3 dev");
|
||||
TEST_EQ(cc.flags & VB2_CONTEXT_CLEAR_RAM, 0, " clear ram flag");
|
||||
TEST_EQ(cc.flags & VB2_CONTEXT_FW_SLOT_B, 0, " slot b flag");
|
||||
|
||||
reset_common_data(FOR_MISC);
|
||||
cc.flags |= VB2_CONTEXT_S3_RESUME;
|
||||
vb2_nv_set(&cc, VB2_NV_FW_TRIED, 1);
|
||||
TEST_SUCC(vb2api_fw_phase2(&cc), "phase2 s3");
|
||||
TEST_NEQ(cc.flags & VB2_CONTEXT_FW_SLOT_B, 0, " slot b flag");
|
||||
}
|
||||
|
||||
static void get_pcr_digest_tests(void)
|
||||
|
||||
@@ -281,6 +281,16 @@ static void recovery_tests(void)
|
||||
"Recovery reason forced");
|
||||
TEST_NEQ(sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY,
|
||||
0, "SD flag set");
|
||||
|
||||
/* Override at broken screen */
|
||||
reset_common_data();
|
||||
vb2_nv_set(&cc, VB2_NV_RECOVERY_SUBCODE, VB2_RECOVERY_US_TEST);
|
||||
cc.flags |= VB2_CONTEXT_FORCE_RECOVERY_MODE;
|
||||
vb2_check_recovery(&cc);
|
||||
TEST_EQ(sd->recovery_reason, VB2_RECOVERY_US_TEST,
|
||||
"Recovery reason forced from broken");
|
||||
TEST_NEQ(sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY,
|
||||
0, "SD flag set");
|
||||
}
|
||||
|
||||
static void dev_switch_tests(void)
|
||||
@@ -293,6 +303,7 @@ static void dev_switch_tests(void)
|
||||
TEST_EQ(sd->flags & VB2_SD_DEV_MODE_ENABLED, 0, " sd not in dev");
|
||||
TEST_EQ(cc.flags & VB2_CONTEXT_DEVELOPER_MODE, 0, " ctx not in dev");
|
||||
TEST_EQ(mock_tpm_clear_called, 0, " no tpm clear");
|
||||
TEST_EQ(vb2_nv_get(&cc, VB2_NV_REQ_WIPEOUT), 0, " no nv wipeout");
|
||||
|
||||
/* Dev mode */
|
||||
reset_common_data();
|
||||
@@ -376,6 +387,15 @@ static void dev_switch_tests(void)
|
||||
" doesn't set dev on in secdata but does set last boot dev");
|
||||
TEST_EQ(mock_tpm_clear_called, 1, " tpm clear");
|
||||
|
||||
/* Request disable by ctx flag */
|
||||
reset_common_data();
|
||||
vb2_secdata_set(&cc, VB2_SECDATA_FLAGS,
|
||||
(VB2_SECDATA_FLAG_DEV_MODE |
|
||||
VB2_SECDATA_FLAG_LAST_BOOT_DEVELOPER));
|
||||
cc.flags |= VB2_DISABLE_DEVELOPER_MODE;
|
||||
TEST_SUCC(vb2_check_dev_switch(&cc), "disable dev on ctx request");
|
||||
TEST_EQ(sd->flags & VB2_SD_DEV_MODE_ENABLED, 0, " sd not in dev");
|
||||
|
||||
/* Simulate clear owner failure */
|
||||
reset_common_data();
|
||||
vb2_secdata_set(&cc, VB2_SECDATA_FLAGS,
|
||||
@@ -442,6 +462,12 @@ static void dev_switch_tests(void)
|
||||
TEST_NEQ(sd->flags & VB2_SD_DEV_MODE_ENABLED, 0, " sd in dev");
|
||||
TEST_NEQ(cc.flags & VB2_CONTEXT_DEVELOPER_MODE, 0, " ctx in dev");
|
||||
TEST_EQ(mock_tpm_clear_called, 1, " tpm clear");
|
||||
|
||||
/* Force wipeout by ctx flag */
|
||||
reset_common_data();
|
||||
cc.flags |= VB2_CONTEXT_FORCE_WIPEOUT_MODE;
|
||||
TEST_SUCC(vb2_check_dev_switch(&cc), "wipeout on ctx flag");
|
||||
TEST_EQ(vb2_nv_get(&cc, VB2_NV_REQ_WIPEOUT), 1, " nv wipeout");
|
||||
}
|
||||
|
||||
static void tpm_clear_tests(void)
|
||||
|
||||
@@ -51,11 +51,13 @@ static struct nv_field nvfields[] = {
|
||||
{VB2_NV_CLEAR_TPM_OWNER_REQUEST, 0, 1, 0, "clear tpm owner request"},
|
||||
{VB2_NV_CLEAR_TPM_OWNER_DONE, 0, 1, 0, "clear tpm owner done"},
|
||||
{VB2_NV_TPM_REQUESTED_REBOOT, 0, 1, 0, "tpm requested reboot"},
|
||||
{VB2_NV_REQ_WIPEOUT, 0, 1, 0, "request wipeout"},
|
||||
{VB2_NV_OPROM_NEEDED, 0, 1, 0, "oprom needed"},
|
||||
{VB2_NV_BACKUP_NVRAM_REQUEST, 0, 1, 0, "backup nvram request"},
|
||||
{VB2_NV_FASTBOOT_UNLOCK_IN_FW, 0, 1, 0, "fastboot unlock in fw"},
|
||||
{VB2_NV_BOOT_ON_AC_DETECT, 0, 1, 0, "boot on ac detect"},
|
||||
{VB2_NV_TRY_RO_SYNC, 0, 1, 0, "try read only software sync"},
|
||||
{VB2_NV_BATTERY_CUTOFF_REQUEST, 0, 1, 0, "battery cutoff request"},
|
||||
{VB2_NV_KERNEL_MAX_ROLLFORWARD, 0, 0x12345678, 0xFEDCBA98,
|
||||
"kernel max rollforward"},
|
||||
{0, 0, 0, 0, NULL}
|
||||
@@ -197,12 +199,16 @@ static void nv_storage_test(void)
|
||||
TEST_EQ(vb2_nv_get(&c, VB2_NV_LOCALIZATION_INDEX),
|
||||
0, "Localization index out of range");
|
||||
|
||||
vb2_nv_set(&c, VB2_NV_FW_RESULT, VB2_FW_RESULT_UNKNOWN + 1);
|
||||
vb2_nv_set(&c, VB2_NV_FW_RESULT, VB2_FW_RESULT_UNKNOWN + 100);
|
||||
vb2_nv_set(&c, VB2_NV_FW_RESULT, 100);
|
||||
TEST_EQ(vb2_nv_get(&c, VB2_NV_FW_RESULT),
|
||||
VB2_FW_RESULT_UNKNOWN, "Firmware result out of range");
|
||||
|
||||
vb2_nv_set(&c, VB2_NV_DEV_DEFAULT_BOOT, VB2_DEV_DEFAULT_BOOT_DISK + 100);
|
||||
vb2_nv_set(&c, VB2_NV_FW_PREV_RESULT, 100);
|
||||
TEST_EQ(vb2_nv_get(&c, VB2_NV_FW_PREV_RESULT),
|
||||
VB2_FW_RESULT_UNKNOWN, "Fw prev result out of range");
|
||||
|
||||
vb2_nv_set(&c, VB2_NV_DEV_DEFAULT_BOOT,
|
||||
VB2_DEV_DEFAULT_BOOT_DISK + 100);
|
||||
TEST_EQ(vb2_nv_get(&c, VB2_NV_DEV_DEFAULT_BOOT),
|
||||
VB2_DEV_DEFAULT_BOOT_DISK, "default to booting from disk");
|
||||
}
|
||||
|
||||
@@ -181,6 +181,9 @@ static void hash_algorithm_name_tests(void)
|
||||
TEST_STR_NEQ(vb2_get_hash_algorithm_name(alg),
|
||||
VB2_INVALID_ALG_NAME, test_name);
|
||||
}
|
||||
|
||||
TEST_STR_EQ(vb2_get_hash_algorithm_name(VB2_HASH_INVALID),
|
||||
VB2_INVALID_ALG_NAME, "hash alg name invalid");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
|
||||
@@ -220,8 +220,10 @@ static void VbSharedDataTest(void)
|
||||
TEST_EQ(d->kernel_version_lowest, 0,
|
||||
"VbSharedDataInit kernel_version_lowest");
|
||||
|
||||
TEST_NEQ(VBOOT_SUCCESS, VbSharedDataSetKernelKey(NULL, NULL),
|
||||
"VbSharedDataSetKernelKey null");
|
||||
TEST_EQ(VBOOT_SHARED_DATA_INVALID, VbSharedDataSetKernelKey(NULL, NULL),
|
||||
"VbSharedDataSetKernelKey sd null");
|
||||
TEST_EQ(VBOOT_PUBLIC_KEY_INVALID, VbSharedDataSetKernelKey(d, NULL),
|
||||
"VbSharedDataSetKernelKey pubkey null");
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
|
||||
Reference in New Issue
Block a user