diff options
Diffstat (limited to 'tests/futility/test_update.sh')
-rwxr-xr-x | tests/futility/test_update.sh | 135 |
1 files changed, 63 insertions, 72 deletions
diff --git a/tests/futility/test_update.sh b/tests/futility/test_update.sh index 9724659d..19f2413e 100755 --- a/tests/futility/test_update.sh +++ b/tests/futility/test_update.sh @@ -186,147 +186,138 @@ test_update() { fi } -# --sys_props: mainfw_act, tpm_fwver, is_vboot2, platform_ver, [wp_hw, wp_sw] +# --sys_props: mainfw_act, tpm_fwver, platform_ver, [wp_hw, wp_sw] # tpm_fwver = <data key version:16><firmware version:16>. # TO_IMAGE is signed with data key version = 1, firmware version = 4 => 0x10004. # Test Full update. test_update "Full update" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (incompatible platform)" \ "${FROM_IMAGE}" "!platform is not compatible" \ - -i "${LINK_BIOS}" --wp=0 --sys_props 0,0x10001,1 + -i "${LINK_BIOS}" --wp=0 --sys_props 0,0x10001 test_update "Full update (TPM Anti-rollback: data key)" \ "${FROM_IMAGE}" "!Data key version rollback detected (2->1)" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 1,0x20001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 1,0x20001 test_update "Full update (TPM Anti-rollback: kernel key)" \ "${FROM_IMAGE}" "!Firmware version rollback detected (5->4)" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 1,0x10005,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 1,0x10005 test_update "Full update (TPM Anti-rollback: 0 as tpm_fwver)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x0,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x0 test_update "Full update (TPM check failure due to invalid tpm_fwver)" \ "${FROM_IMAGE}" "!Invalid tpm_fwver: -1" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,-1,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,-1 test_update "Full update (Skip TPM check with --force)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,-1,1 --force + -i "${TO_IMAGE}" --wp=0 --sys_props 0,-1 --force test_update "Full update (from stdin)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ - -i - --wp=0 --sys_props 0,-1,1 --force <"${TO_IMAGE}" + -i - --wp=0 --sys_props 0,-1 --force <"${TO_IMAGE}" test_update "Full update (GBB=0 -> 0)" \ "${FROM_IMAGE}.gbb0" "${TMP}.expected.full.gbb0" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (GBB flags -> 0x27)" \ "${FROM_IMAGE}" "${TMP}.expected.full.gbb0x27" \ - -i "${TO_IMAGE}" --gbb_flags=0x27 --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --gbb_flags=0x27 --wp=0 --sys_props 0,0x10001 test_update "Full update (--host_only)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 \ + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 \ --host_only --ec_image non-exist.bin --pd_image non_exist.bin test_update "Full update (GBB1.2 hwid digest)" \ "${FROM_IMAGE}" "${TMP}.expected.full.gbb12" \ - -i "${TO_IMAGE_GBB12}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE_GBB12}" --wp=0 --sys_props 0,0x10001 test_update "Full update (Preserve VPD using FMAP_AREA_PRESERVE)" \ "${FROM_IMAGE}" "${TMP}.expected.full.empty_rw_vpd" \ - -i "${TO_IMAGE_WIPE_RW_VPD}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE_WIPE_RW_VPD}" --wp=0 --sys_props 0,0x10001 # Test RW-only update. test_update "RW update" \ "${FROM_IMAGE}" "${TMP}.expected.rw" \ - -i "${TO_IMAGE}" --wp=1 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=1 --sys_props 0,0x10001 test_update "RW update (incompatible platform)" \ "${FROM_IMAGE}" "!platform is not compatible" \ - -i "${LINK_BIOS}" --wp=1 --sys_props 0,0x10001,1 + -i "${LINK_BIOS}" --wp=1 --sys_props 0,0x10001 test_update "RW update (incompatible rootkey)" \ "${FROM_DIFFERENT_ROOTKEY_IMAGE}" "!RW signed by incompatible root key" \ - -i "${TO_IMAGE}" --wp=1 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=1 --sys_props 0,0x10001 test_update "RW update (TPM Anti-rollback: data key)" \ "${FROM_IMAGE}" "!Data key version rollback detected (2->1)" \ - -i "${TO_IMAGE}" --wp=1 --sys_props 1,0x20001,1 + -i "${TO_IMAGE}" --wp=1 --sys_props 1,0x20001 test_update "RW update (TPM Anti-rollback: kernel key)" \ "${FROM_IMAGE}" "!Firmware version rollback detected (5->4)" \ - -i "${TO_IMAGE}" --wp=1 --sys_props 1,0x10005,1 + -i "${TO_IMAGE}" --wp=1 --sys_props 1,0x10005 # Test Try-RW update (vboot2). test_update "RW update (A->B)" \ "${FROM_IMAGE}" "${TMP}.expected.b" \ - -i "${TO_IMAGE}" -t --wp=1 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" -t --wp=1 --sys_props 0,0x10001 test_update "RW update (B->A)" \ "${FROM_IMAGE}" "${TMP}.expected.a" \ - -i "${TO_IMAGE}" -t --wp=1 --sys_props 1,0x10001,1 + -i "${TO_IMAGE}" -t --wp=1 --sys_props 1,0x10001 test_update "RW update -> fallback to RO+RW Full update" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ - -i "${TO_IMAGE}" -t --wp=0 --sys_props 1,0x10002,1 + -i "${TO_IMAGE}" -t --wp=0 --sys_props 1,0x10002 test_update "RW update (incompatible platform)" \ "${FROM_IMAGE}" "!platform is not compatible" \ - -i "${LINK_BIOS}" -t --wp=1 --sys_props 0x10001,1 + -i "${LINK_BIOS}" -t --wp=1 --sys_props 0x10001 test_update "RW update (incompatible rootkey)" \ "${FROM_DIFFERENT_ROOTKEY_IMAGE}" "!RW signed by incompatible root key" \ - -i "${TO_IMAGE}" -t --wp=1 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" -t --wp=1 --sys_props 0,0x10001 test_update "RW update (TPM Anti-rollback: data key)" \ "${FROM_IMAGE}" "!Data key version rollback detected (2->1)" \ - -i "${TO_IMAGE}" -t --wp=1 --sys_props 1,0x20001,1 + -i "${TO_IMAGE}" -t --wp=1 --sys_props 1,0x20001 test_update "RW update (TPM Anti-rollback: kernel key)" \ "${FROM_IMAGE}" "!Firmware version rollback detected (5->4)" \ - -i "${TO_IMAGE}" -t --wp=1 --sys_props 1,0x10005,1 + -i "${TO_IMAGE}" -t --wp=1 --sys_props 1,0x10005 test_update "RW update -> fallback to RO+RW Full update (TPM Anti-rollback)" \ "${FROM_IMAGE}" "!Firmware version rollback detected (6->4)" \ - -i "${TO_IMAGE}" -t --wp=0 --sys_props 1,0x10006,1 - -# Test Try-RW update (vboot1). -test_update "RW update (vboot1, A->B)" \ - "${FROM_IMAGE}" "${TMP}.expected.b" \ - -i "${TO_IMAGE}" -t --wp=1 --sys_props 0,0 --sys_props 0,0x10001,0 - -test_update "RW update (vboot1, B->B)" \ - "${FROM_IMAGE}" "${TMP}.expected.b" \ - -i "${TO_IMAGE}" -t --wp=1 --sys_props 1,0 --sys_props 0,0x10001,0 + -i "${TO_IMAGE}" -t --wp=0 --sys_props 1,0x10006 # Test 'factory mode' test_update "Factory mode update (WP=0)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 --mode=factory + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 --mode=factory test_update "Factory mode update (WP=0)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ - --factory -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + --factory -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Factory mode update (WP=1)" \ "${FROM_IMAGE}" "!remove write protection for factory mode" \ - -i "${TO_IMAGE}" --wp=1 --sys_props 0,0x10001,1 --mode=factory + -i "${TO_IMAGE}" --wp=1 --sys_props 0,0x10001 --mode=factory test_update "Factory mode update (WP=1)" \ "${FROM_IMAGE}" "!remove write protection for factory mode" \ - --factory -i "${TO_IMAGE}" --wp=1 --sys_props 0,0x10001,1 + --factory -i "${TO_IMAGE}" --wp=1 --sys_props 0,0x10001 test_update "Factory mode update (GBB=0 -> 0x39)" \ "${FROM_IMAGE}.gbb0" "${TMP}.expected.full" \ - --factory -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + --factory -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 # Test legacy update test_update "Legacy update" \ @@ -336,67 +327,67 @@ test_update "Legacy update" \ # Test quirks test_update "Full update (wrong size)" \ "${FROM_IMAGE}.large" "!Failed writing firmware" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 \ + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 \ --quirks unlock_me_for_update,eve_smm_store test_update "Full update (--quirks enlarge_image)" \ "${FROM_IMAGE}.large" "${TMP}.expected.large" --quirks enlarge_image \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (multi-line --quirks enlarge_image)" \ "${FROM_IMAGE}.large" "${TMP}.expected.large" --quirks ' enlarge_image - ' -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + ' -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (--quirks unlock_me_for_update)" \ "${FROM_IMAGE}" "${TMP}.expected.me_unlocked" \ --quirks unlock_me_for_update \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (failure by --quirks min_platform_version)" \ "${FROM_IMAGE}" "!Need platform version >= 3 (current is 2)" \ --quirks min_platform_version=3 \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1,2 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,2 test_update "Full update (--quirks min_platform_version)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ --quirks min_platform_version=3 \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1,3 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,3 test_update "Full update (incompatible platform)" \ "${FROM_IMAGE}".unpatched "!platform is not compatible" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (--quirks no_check_platform)" \ "${FROM_IMAGE}".unpatched "${TMP}.expected.full" \ --quirks no_check_platform \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (--quirks preserve_me with non-host programmer)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ --quirks preserve_me \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 \ + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 \ -p raiden_debug_spi:target=AP test_update "Full update (--quirks preserve_me)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ --quirks preserve_me \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (--quirks preserve_me, autoupdate)" \ "${FROM_IMAGE}" "${TMP}.expected.me_preserved" \ --quirks preserve_me -m autoupdate \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (--quirks preserve_me, deferupdate_hold)" \ "${FROM_IMAGE}" "${TMP}.expected.me_preserved" \ --quirks preserve_me -m deferupdate_hold \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 test_update "Full update (--quirks preserve_me, factory)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ --quirks preserve_me -m factory \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 # Test archive and manifest. CL_TAG is for custom_label_tag. A="${TMP}.archive" @@ -418,7 +409,7 @@ cmp "${TMP}.json.out" "${SCRIPT_DIR}/futility/link_image.manifest.json" cp -f "${TO_IMAGE}" "${A}/image.bin" test_update "Full update (--archive, single package)" \ "${FROM_IMAGE}" "${TMP}.expected.full" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 + -a "${A}" --wp=0 --sys_props 0,0x10001,3 echo "TEST: Output (--mode=output)" mkdir -p "${TMP}.output" @@ -437,25 +428,25 @@ cp -f "${TMP}.to/VBLOCK_B" "${A}/keyset/vblock_B.CL" test_update "Full update (--archive, custom label, no VPD)" \ "${A}/image.bin" "!Need VPD set for custom" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 + -a "${A}" --wp=0 --sys_props 0,0x10001,3 test_update "Full update (--archive, custom label, no VPD - factory mode)" \ "${LINK_BIOS}" "${A}/image.bin" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 --mode=factory + -a "${A}" --wp=0 --sys_props 0,0x10001,3 --mode=factory test_update "Full update (--archive, custom label, no VPD - quirk mode)" \ "${LINK_BIOS}" "${A}/image.bin" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 \ + -a "${A}" --wp=0 --sys_props 0,0x10001,3 \ --quirks=allow_empty_custom_label_tag test_update "Full update (--archive, custom label, single package)" \ "${A}/image.bin" "${LINK_BIOS}" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 --signature_id=CL + -a "${A}" --wp=0 --sys_props 0,0x10001,3 --signature_id=CL CL_TAG="CL" PATH="${A}/bin:${PATH}" \ test_update "Full update (--archive, custom label, fake vpd)" \ "${A}/image.bin" "${LINK_BIOS}" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 + -a "${A}" --wp=0 --sys_props 0,0x10001,3 echo "TEST: Output (-a, --mode=output)" mkdir -p "${TMP}.outa" @@ -482,25 +473,25 @@ patch_file "${FROM_IMAGE}.al" FW_MAIN_A 0 "corrupted" patch_file "${FROM_IMAGE}.av" FW_MAIN_A 0 "corrupted" test_update "Full update (--archive, model=link)" \ "${FROM_IMAGE}.al" "${LINK_BIOS}" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 --model=link + -a "${A}" --wp=0 --sys_props 0,0x10001,3 --model=link test_update "Full update (--archive, model=peppy)" \ "${FROM_IMAGE}.ap" "${PEPPY_BIOS}" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 --model=peppy + -a "${A}" --wp=0 --sys_props 0,0x10001,3 --model=peppy test_update "Full update (--archive, model=unknown)" \ "${FROM_IMAGE}.ap" "!Unsupported model: 'unknown'" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 --model=unknown + -a "${A}" --wp=0 --sys_props 0,0x10001,3 --model=unknown test_update "Full update (--archive, model=customtip, signature_id=CL)" \ "${FROM_IMAGE}.al" "${LINK_BIOS}" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 --model=customtip \ + -a "${A}" --wp=0 --sys_props 0,0x10001,3 --model=customtip \ --signature_id=customtip-cl test_update "Full update (--archive, detect-model)" \ "${FROM_IMAGE}.ap" "${PEPPY_BIOS}" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 \ + -a "${A}" --wp=0 --sys_props 0,0x10001,3 \ --programmer raiden_debug_spi:target=AP test_update "Full update (--archive, detect-model, unsupported FRID)" \ "${FROM_IMAGE}.av" "!Unsupported FRID: 'Google_Voxel'" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 \ + -a "${A}" --wp=0 --sys_props 0,0x10001,3 \ --programmer raiden_debug_spi:target=AP echo "*** Test Item: Detect model (--archive, --detect-model-only)" @@ -511,12 +502,12 @@ cmp "${TMP}.model.out" <(echo peppy) CL_TAG="cl" PATH="${A}/bin:${PATH}" \ test_update "Full update (-a, model=customtip, fake VPD)" \ "${FROM_IMAGE}.al" "${LINK_BIOS}" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 --model=customtip + -a "${A}" --wp=0 --sys_props 0,0x10001,3 --model=customtip # Custom label + Unibuild without default keys test_update "Full update (--a, model=customtip, no VPD, no default keys)" \ "${FROM_IMAGE}.al" "!Need VPD set for custom" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 --model=customtip + -a "${A}" --wp=0 --sys_props 0,0x10001,3 --model=customtip # Custom label + Unibuild with default keys as model name cp -f "${TMP}.to/rootkey" "${A}/keyset/rootkey.customtip" @@ -524,7 +515,7 @@ cp -f "${TMP}.to/VBLOCK_A" "${A}/keyset/vblock_A.customtip" cp -f "${TMP}.to/VBLOCK_B" "${A}/keyset/vblock_B.customtip" test_update "Full update (-a, model=customtip, no VPD, default keys)" \ "${FROM_IMAGE}.al" "${LINK_BIOS}" \ - -a "${A}" --wp=0 --sys_props 0,0x10001,1,3 --model=customtip + -a "${A}" --wp=0 --sys_props 0,0x10001,3 --model=customtip # Test special programmer if type flashrom >/dev/null 2>&1; then @@ -532,7 +523,7 @@ if type flashrom >/dev/null 2>&1; then cp -f "${FROM_IMAGE}" "${TMP}.emu" "${FUTILITY}" update --programmer \ dummy:emulate=VARIABLE_SIZE,image="${TMP}".emu,size=8388608 \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1,3 >&2 + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,3 >&2 cmp "${TMP}.emu" "${TMP}.expected.full" fi @@ -547,7 +538,7 @@ if type cbfstool >/dev/null 2>&1; then -f "${TMP}.smm" -t raw -b 0x1bf000 test_update "Legacy update (--quirks eve_smm_store)" \ "${TMP}.from.smm" "${TMP}.expected.full_smm" \ - -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1 \ + -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001 \ --quirks eve_smm_store echo "min_platform_version=3" >"${TMP}.quirk" @@ -560,7 +551,7 @@ if type cbfstool >/dev/null 2>&1; then -f "${TMP}.quirk" -t raw test_update "Full update (failure by CBFS quirks)" \ "${FROM_IMAGE}" "!Need platform version >= 3 (current is 2)" \ - -i "${TO_IMAGE}.quirk" --wp=0 --sys_props 0,0x10001,1,2 + -i "${TO_IMAGE}.quirk" --wp=0 --sys_props 0,0x10001,2 fi rm -rf "${TMP}"* |