diff options
| author | 2020-03-04 15:30:45 +0000 | |
|---|---|---|
| committer | 2020-03-13 10:49:45 +0000 | |
| commit | 4d37486cef865ea189b0c360d5c92811e1f182c1 (patch) | |
| tree | 760ba61765f45c8fd8a06e0a337bf2c86c572841 | |
| parent | 1dbdcbc6895092c745542504972311c8752694c4 (diff) | |
Add a new test API for getting the list of approved rule providers.
This allows us to check the list in GTS tests.
Bug: 145674131
Test: atest AppIntegrityManagerServiceImplTest
Change-Id: I3cb9c8379061b4a57bc6ae714b2a29204d34fa0f
5 files changed, 35 insertions, 0 deletions
diff --git a/api/test-current.txt b/api/test-current.txt index a5f1f68b82ac..66cd0fc7c128 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -843,6 +843,7 @@ package android.content.integrity { method @NonNull public android.content.integrity.RuleSet getCurrentRuleSet(); method @NonNull public String getCurrentRuleSetProvider(); method @NonNull public String getCurrentRuleSetVersion(); + method @NonNull public java.util.List<java.lang.String> getWhitelistedRuleProviders(); method public void updateRuleSet(@NonNull android.content.integrity.RuleSet, @NonNull android.content.IntentSender); field public static final String EXTRA_STATUS = "android.content.integrity.extra.STATUS"; field public static final int STATUS_FAILURE = 1; // 0x1 diff --git a/core/java/android/content/integrity/AppIntegrityManager.java b/core/java/android/content/integrity/AppIntegrityManager.java index 9f95d4d75f6f..2869abb53b37 100644 --- a/core/java/android/content/integrity/AppIntegrityManager.java +++ b/core/java/android/content/integrity/AppIntegrityManager.java @@ -25,6 +25,8 @@ import android.content.IntentSender; import android.content.pm.ParceledListSlice; import android.os.RemoteException; +import java.util.List; + /** * Class for pushing rules used to check the integrity of app installs. * @@ -121,4 +123,21 @@ public class AppIntegrityManager { throw e.rethrowAsRuntimeException(); } } + + /** + * Get the package names of all whitelisted rule providers. + * + * <p>Warning: this method is only used for tests. + * + * @hide + */ + @TestApi + @NonNull + public List<String> getWhitelistedRuleProviders() { + try { + return mManager.getWhitelistedRuleProviders(); + } catch (RemoteException e) { + throw e.rethrowAsRuntimeException(); + } + } } diff --git a/core/java/android/content/integrity/IAppIntegrityManager.aidl b/core/java/android/content/integrity/IAppIntegrityManager.aidl index 4714ad7c7989..94197bb9ec17 100644 --- a/core/java/android/content/integrity/IAppIntegrityManager.aidl +++ b/core/java/android/content/integrity/IAppIntegrityManager.aidl @@ -19,6 +19,7 @@ package android.content.integrity; import android.content.integrity.Rule; import android.content.IntentSender; import android.content.pm.ParceledListSlice; +import java.util.List; /** @hide */ interface IAppIntegrityManager { @@ -26,4 +27,5 @@ interface IAppIntegrityManager { String getCurrentRuleSetVersion(); String getCurrentRuleSetProvider(); ParceledListSlice<Rule> getCurrentRules(); + List<String> getWhitelistedRuleProviders(); } diff --git a/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java b/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java index 6da0de13f623..a463c4919cd7 100644 --- a/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java +++ b/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java @@ -50,6 +50,7 @@ import android.os.Binder; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; +import android.os.RemoteException; import android.os.UserHandle; import android.provider.Settings; import android.util.Slog; @@ -239,6 +240,11 @@ public class AppIntegrityManagerServiceImpl extends IAppIntegrityManager.Stub { return new ParceledListSlice<>(rules); } + @Override + public List<String> getWhitelistedRuleProviders() throws RemoteException { + return getAllowedRuleProviders(); + } + private void handleIntegrityVerification(Intent intent) { int verificationId = intent.getIntExtra(EXTRA_VERIFICATION_ID, -1); diff --git a/services/tests/servicestests/src/com/android/server/integrity/AppIntegrityManagerServiceImplTest.java b/services/tests/servicestests/src/com/android/server/integrity/AppIntegrityManagerServiceImplTest.java index 3dd150479ddc..96d342ca43ad 100644 --- a/services/tests/servicestests/src/com/android/server/integrity/AppIntegrityManagerServiceImplTest.java +++ b/services/tests/servicestests/src/com/android/server/integrity/AppIntegrityManagerServiceImplTest.java @@ -474,6 +474,13 @@ public class AppIntegrityManagerServiceImplTest { assertThat(mService.getCurrentRules().getList()).containsExactly(rule); } + @Test + public void getWhitelistedRuleProviders() throws Exception { + whitelistUsAsRuleProvider(); + + assertThat(mService.getWhitelistedRuleProviders()).containsExactly(TEST_FRAMEWORK_PACKAGE); + } + private void whitelistUsAsRuleProvider() { Resources mockResources = mock(Resources.class); when(mockResources.getStringArray(R.array.config_integrityRuleProviderPackages)) |