This guide outlines the structured approach for executing Vendor Test Suite (VTS) tests against the Android Keymaster HAL version 4.0. It covers three primary testing scopes: per-module execution, granular test-case invocation, and comprehensive test suite runs — all using the VtsHalKeymasterV4_0TargetTest binary.
Module-Level Test Execution
Run entire test classes grouped by functional domain. Each command targets a specific feature area with the default instance configuration (/0_default):
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/HmacKeySharingTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/VerificationTokenTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/NewKeyGenerationTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/SigningOperationsTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/VerificationOperationsTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/ExportKeyTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/ImportKeyTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/ImportWrappedKeyTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/EncryptionOperationsTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/MaxOperationsTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/AddEntropyTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/AttestationTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/KeyDeletionTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/UpgradeKeyTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/ClearOperationsTest*/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/TransportLimitTest*/0_default
Individual Test Case Invocation
Execute isoalted test cases to validate specific behaviors or debug failures. Examples include application ID binding verification and user confirmation logic:
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/SigningOperationsTest.RsaGetKeyCharacteristicsRequiresCorrectAppIdAppData/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/SigningOperationsTest.RsaUseRequiresCorrectAppIdAppData/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/SigningOperationsTest.NoUserConfirmation/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/SigningOperationsTest.EcGetKeyCharacteristicsRequiresCorrectAppIdAppData/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/SigningOperationsTest.EcUseRequiresCorrectAppIdAppData/0_default
Full Test Suite Coverage
A curated list of representative test cases spanning cryptographic primitives, key lifecycle operations, and security policy enforcement. This set ensures broad validation across RSA, ECDSA, HMAC, AES, TripleDES, attestation, entropy handling, and operation limits:
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/HmacKeySharingTest.ComputeSharedHmac/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/VerificationTokenTest.MacChangesOnChangingTimestamp/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/NewKeyGenerationTest.EcdsaAllValidCurves/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/SigningOperationsTest.EcdsaAllCurves/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/VerificationOperationsTest.EcdsaAllDigestsAndCurves/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/ImportKeyTest.EcdsaP256SEC1Success/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/EncryptionOperationsTest.AesGcmRoundTripSuccess/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/EncryptionOperationsTest.TripleDesCbcRoundTripSuccess/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/AttestationTest.EcAttestationRequiresAttestationAppId/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/AddEntropyTest.AddLargeEntropy/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/KeyDeletionTest.DeleteAllKeys/0_default
./VtsHalKeymasterV4_0TargetTest --gtest_filter=PerInstance/MaxOperationsTest.TestLimitRsa/0_default
Reference Output: Keymaster 3.0 VTS Baseline
The following excerpt shows typical runtime output from VtsHalKeymasterV3_0TargetTest, illustrating test enumeration, timing, and pass status. While not direct executable for HAL 4.0, it provides context for expected log structure and test categorization:
[==========] Running 108 tests from 12 test suites.
[----------] Global test environment set-up.
[----------] 13 tests from PerInstance/NewKeyGenerationTest
[ RUN ] PerInstance/NewKeyGenerationTest.Rsa/0_default
[ OK ] PerInstance/NewKeyGenerationTest.Rsa/0_default (246243 ms)
...
[----------] 36 tests from PerInstance/EncryptionOperationsTest
[ RUN ] PerInstance/EncryptionOperationsTest.AesGcmCorruptTag/0_default
[ OK ] PerInstance/EncryptionOperationsTest.AesGcmCorruptTag/0_default (30 ms)
[----------] Global test environment tear-down
[==========] 108 tests from 12 test suites ran. (561140 ms total)
[ PASSED ] 108 tests.