diff options
author | Adnan Begovic <adnan@cyngn.com> | 2015-10-27 14:43:27 -0700 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2015-10-27 14:43:27 -0700 |
commit | f7beed9883d15d2160b0555c537111d792454418 (patch) | |
tree | 74e9cb80fabf9abeffc8db24778fc7360c80fd8a /services | |
parent | 2ec1a33b70d3c013daa956696b68167a5eeef70d (diff) | |
download | frameworks_base-f7beed9883d15d2160b0555c537111d792454418.zip frameworks_base-f7beed9883d15d2160b0555c537111d792454418.tar.gz frameworks_base-f7beed9883d15d2160b0555c537111d792454418.tar.bz2 |
admin: Restore requireSecureKeyguard interface.
Change-Id: I3c0533bafdae77df953d5bff457a4efdb94167e7
Diffstat (limited to 'services')
-rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index cd2885b..c1a4243 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -93,6 +93,7 @@ import android.security.IKeyChainAliasCallback; import android.security.IKeyChainService; import android.security.KeyChain; import android.security.KeyChain.KeyChainConnection; +import android.security.KeyStore; import android.service.persistentdata.PersistentDataBlockManager; import android.text.TextUtils; import android.util.Log; @@ -4194,6 +4195,36 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } + @Override + public boolean requireSecureKeyguard(int userHandle) { + if (!mHasFeature) { + return false; + } + + int passwordQuality = getPasswordQuality(null, userHandle); + if (passwordQuality > DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { + return true; + } + + int encryptionStatus = getStorageEncryptionStatus(userHandle); + if (encryptionStatus == DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE + || encryptionStatus == DevicePolicyManager.ENCRYPTION_STATUS_ACTIVATING) { + return true; + } + + // Keystore.isEmpty() requires system UID + long token = Binder.clearCallingIdentity(); + try { + if (!KeyStore.getInstance().isEmpty()) { + return true; + } + } finally { + Binder.restoreCallingIdentity(token); + } + + return false; + } + // Returns the active device owner or null if there is no device owner. private ActiveAdmin getDeviceOwnerAdmin() { String deviceOwnerPackageName = getDeviceOwner(); |