diff options
Diffstat (limited to 'security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp')
-rw-r--r-- | security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp index 766c02dea9..6555157e5c 100644 --- a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp +++ b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp @@ -55,6 +55,9 @@ bool KeyCharacteristicsBasicallyValid(SecurityLevel secLevel, for (auto& entry : key_characteristics) { if (entry.authorizations.empty()) return false; + // Just ignore the SecurityLevel::KEYSTORE as the KM won't do any enforcement on this. + if (entry.securityLevel == SecurityLevel::KEYSTORE) continue; + if (levels_seen.find(entry.securityLevel) != levels_seen.end()) return false; levels_seen.insert(entry.securityLevel); @@ -824,22 +827,36 @@ const vector<KeyParameter>& KeyMintAidlTestBase::SecLevelAuthorizations( return (found == key_characteristics.end()) ? kEmptyAuthList : found->authorizations; } -const vector<KeyParameter>& KeyMintAidlTestBase::HwEnforcedAuthorizations( - const vector<KeyCharacteristics>& key_characteristics) { - auto found = - std::find_if(key_characteristics.begin(), key_characteristics.end(), [](auto& entry) { - return entry.securityLevel == SecurityLevel::STRONGBOX || - entry.securityLevel == SecurityLevel::TRUSTED_ENVIRONMENT; - }); +const vector<KeyParameter>& KeyMintAidlTestBase::SecLevelAuthorizations( + const vector<KeyCharacteristics>& key_characteristics, SecurityLevel securityLevel) { + auto found = std::find_if( + key_characteristics.begin(), key_characteristics.end(), + [securityLevel](auto& entry) { return entry.securityLevel == securityLevel; }); return (found == key_characteristics.end()) ? kEmptyAuthList : found->authorizations; } -const vector<KeyParameter>& KeyMintAidlTestBase::SwEnforcedAuthorizations( +AuthorizationSet KeyMintAidlTestBase::HwEnforcedAuthorizations( const vector<KeyCharacteristics>& key_characteristics) { - auto found = std::find_if( - key_characteristics.begin(), key_characteristics.end(), - [](auto& entry) { return entry.securityLevel == SecurityLevel::SOFTWARE; }); - return (found == key_characteristics.end()) ? kEmptyAuthList : found->authorizations; + AuthorizationSet authList; + for (auto& entry : key_characteristics) { + if (entry.securityLevel == SecurityLevel::STRONGBOX || + entry.securityLevel == SecurityLevel::TRUSTED_ENVIRONMENT) { + authList.push_back(AuthorizationSet(entry.authorizations)); + } + } + return authList; +} + +AuthorizationSet KeyMintAidlTestBase::SwEnforcedAuthorizations( + const vector<KeyCharacteristics>& key_characteristics) { + AuthorizationSet authList; + for (auto& entry : key_characteristics) { + if (entry.securityLevel == SecurityLevel::SOFTWARE || + entry.securityLevel == SecurityLevel::KEYSTORE) { + authList.push_back(AuthorizationSet(entry.authorizations)); + } + } + return authList; } } // namespace test |