From 025f3c5acd4a266275b5e833f38014307a683c65 Mon Sep 17 00:00:00 2001 From: Tommy Chiu Date: Mon, 15 May 2023 06:23:44 +0000 Subject: [PATCH] VTS: Test specifying --expect_upgrade {yes,no} It should definitely be the case that a different SPL triggers key requires upgrade, but the converse isn't true -- if no SPL change, it's OK for the device to request upgrade anyhow. Bug: 281604435 Change-Id: Ic03ce51fb4b18ff669595ab430f9fccd1da48997 --- .../aidl/vts/functional/KeyBlobUpgradeTest.cpp | 17 +++++++++++++---- .../aidl/vts/functional/KeyMintAidlTestBase.cpp | 1 + .../aidl/vts/functional/KeyMintAidlTestBase.h | 2 ++ .../keymint/aidl/vts/functional/KeyMintTest.cpp | 13 +++++++++++++ 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/security/keymint/aidl/vts/functional/KeyBlobUpgradeTest.cpp b/security/keymint/aidl/vts/functional/KeyBlobUpgradeTest.cpp index 68924422d1..4f72f67763 100644 --- a/security/keymint/aidl/vts/functional/KeyBlobUpgradeTest.cpp +++ b/security/keymint/aidl/vts/functional/KeyBlobUpgradeTest.cpp @@ -36,11 +36,14 @@ // // adb push keymint-blobs /data/local/tmp/keymint-blobs // -// 5) Run the "*After*" subset of these tests with the `--keyblob_dir ` command-line argument -// pointing to the directory with the keyblobs: +// 5) Run the "*After*" subset of these tests, with the following command-line arguments +// `--keyblob_dir `: pointing to the directory with the keyblobs. +// `--expect_upgrade {yes|no}` (Optional): To specify if users expect an upgrade on the keyBlobs, +// will be "yes" by default. // // VtsAidlKeyMintTargetTest --gtest_filter="*KeyBlobUpgradeTest*After*" \ -// --keyblob_dir /data/local/tmp/keymint-blobs +// --keyblob_dir /data/local/tmp/keymint-blobs \ +// --expect_upgrade {yes|no} // // (Note that this skips the `CreateKeyBlobs` test, which would otherwise replace the saved // keyblobs with freshly generated ones.). @@ -408,12 +411,18 @@ TEST_P(KeyBlobUpgradeTest, UpgradeKeyBlobsBefore) { // // VtsAidlKeyMintTargetTest --gtest_filter="*KeyBlobUpgradeTest.UpgradeKeyBlobsAfter*" \ // --keyblob_dir /data/local/tmp/keymint-blobs +// --expect_upgrade {yes|no} // // - this replaces the keyblob contents in that directory; if needed, save the upgraded keyblobs // with: // adb pull /data/local/tmp/keymint-blobs/ TEST_P(KeyBlobUpgradeTest, UpgradeKeyBlobsAfter) { - UpgradeKeyBlobs(/* expectUpgrade= */ true); + bool expectUpgrade = true; // this test expects upgrade to happen by default + if (expect_upgrade.has_value() && expect_upgrade == false) { + std::cout << "Not expecting key upgrade due to --expect_upgrade no\n"; + expectUpgrade = false; + } + UpgradeKeyBlobs(expectUpgrade); } // To run this test: diff --git a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp index a8ea407e44..e51bb6e447 100644 --- a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp +++ b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp @@ -174,6 +174,7 @@ string x509NameToStr(X509_NAME* name) { bool KeyMintAidlTestBase::arm_deleteAllKeys = false; bool KeyMintAidlTestBase::dump_Attestations = false; std::string KeyMintAidlTestBase::keyblob_dir; +std::optional KeyMintAidlTestBase::expect_upgrade = std::nullopt; uint32_t KeyMintAidlTestBase::boot_patch_level( const vector& key_characteristics) { diff --git a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.h b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.h index 30ac452bab..415a83e4e8 100644 --- a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.h +++ b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.h @@ -70,6 +70,8 @@ class KeyMintAidlTestBase : public ::testing::TestWithParam { // Directory to store/retrieve keyblobs, using subdirectories named for the // KeyMint instance in question (e.g. "./default/", "./strongbox/"). static std::string keyblob_dir; + // To specify if users expect an upgrade on the keyBlobs. + static std::optional expect_upgrade; void SetUp() override; void TearDown() override { diff --git a/security/keymint/aidl/vts/functional/KeyMintTest.cpp b/security/keymint/aidl/vts/functional/KeyMintTest.cpp index bdec4d3fb4..c54a2c9d1f 100644 --- a/security/keymint/aidl/vts/functional/KeyMintTest.cpp +++ b/security/keymint/aidl/vts/functional/KeyMintTest.cpp @@ -8718,6 +8718,19 @@ int main(int argc, char** argv) { std::string(argv[i + 1]); ++i; } + if (std::string(argv[i]) == "--expect_upgrade") { + if (i + 1 >= argc) { + std::cerr << "Missing argument for --expect_upgrade\n"; + return 1; + } + std::string arg = argv[i + 1]; + aidl::android::hardware::security::keymint::test::KeyMintAidlTestBase:: + expect_upgrade = + arg == "yes" + ? true + : (arg == "no" ? false : std::optional(std::nullopt)); + ++i; + } } } return RUN_ALL_TESTS();