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:
Randall Spangler
2018-02-20 15:20:16 -08:00
committed by chrome-bot
parent 4a95b9b7ae
commit 225df798cf
6 changed files with 61 additions and 6 deletions

View File

@@ -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),

View File

@@ -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)

View File

@@ -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)

View File

@@ -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");
}

View File

@@ -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[])

View File

@@ -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[])