Skip to content

Commit 18ccfb8

Browse files
committed
Key installation/generation in unmanaged mode
Allow calling the key generation/installation methods when TestDPC is not in any admin mode. This is for: (1) Testing delegation of certificate installation. (2) Testing certificate installer functionality on unmanaged profiles ("personal certificate installer."). Bug: 119349169 Test: Manual Change-Id: I0c9284315e484f6acdf445bd238f4d68823bf396
1 parent 7e04f71 commit 18ccfb8

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

app/src/main/java/com/afwsamples/testdpc/policy/PolicyManagementFragment.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1280,16 +1280,22 @@ private void setStatusBarDisabled(boolean disable) {
12801280
@TargetApi(28)
12811281
private boolean installKeyPair(final PrivateKey key, final Certificate cert, final String alias,
12821282
boolean isUserSelectable) {
1283-
if (BuildCompat.isAtLeastP()) {
1284-
return mDevicePolicyManager.installKeyPair(
1285-
mAdminComponentName, key, new Certificate[]{cert}, alias,
1286-
isUserSelectable ? DevicePolicyManager.INSTALLKEY_SET_USER_SELECTABLE : 0);
1287-
} else {
1288-
if (!isUserSelectable) {
1289-
throw new IllegalArgumentException(
1290-
"Cannot set key as non-user-selectable prior to P");
1283+
try {
1284+
if (BuildCompat.isAtLeastP()) {
1285+
1286+
return mDevicePolicyManager.installKeyPair(
1287+
mAdminComponentName, key, new Certificate[]{cert}, alias,
1288+
isUserSelectable ? DevicePolicyManager.INSTALLKEY_SET_USER_SELECTABLE : 0);
1289+
} else {
1290+
if (!isUserSelectable) {
1291+
throw new IllegalArgumentException(
1292+
"Cannot set key as non-user-selectable prior to P");
1293+
}
1294+
return mDevicePolicyManager.installKeyPair(mAdminComponentName, key, cert, alias);
12911295
}
1292-
return mDevicePolicyManager.installKeyPair(mAdminComponentName, key, cert, alias);
1296+
} catch (SecurityException e) {
1297+
Log.w(TAG, "Not allowed to install keys", e);
1298+
return false;
12931299
}
12941300
}
12951301

app/src/main/java/com/afwsamples/testdpc/policy/keymanagement/GenerateKeyAndCertificateTask.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ protected AttestedKeyPair doInBackground(Void... voids) {
127127
Log.e(TAG, "Failed to create certificate", e);
128128
} catch (StrongBoxUnavailableException e) {
129129
Log.e(TAG, "StrongBox unavailable", e);
130+
} catch (SecurityException e) {
131+
Log.e(TAG, "Not permitted to generate key", e);
130132
}
131133

132134
return null;
@@ -150,7 +152,7 @@ private void showToast(int msgId, String extra) {
150152
Toast.makeText(
151153
mActivity,
152154
mActivity.getResources().getString(msgId) + " " + extra,
153-
Toast.LENGTH_SHORT);
155+
Toast.LENGTH_SHORT).show();
154156
}
155157

156158
@TargetApi(28)

app/src/main/res/xml/device_policy_header.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,13 @@
217217
android:key="install_key_certificate"
218218
android:title="@string/install_key_certificate"
219219
testdpc:minSdkVersion="L"
220+
testdpc:admin="any"
220221
testdpc:delegation="delegation-cert-install" />
221222
<com.afwsamples.testdpc.common.preference.DpcPreference
222223
android:key="remove_key_certificate"
223224
android:title="@string/remove_key_certificate"
224225
testdpc:minSdkVersion="N"
225-
testdpc:delegation="delegation-cert-install" />
226+
testdpc:admin="any" />
226227
<com.afwsamples.testdpc.common.preference.DpcEditTextPreference
227228
android:key="override_key_selection"
228229
android:title="@string/key_override_alias"
@@ -231,7 +232,7 @@
231232
android:key="generate_key_and_certificate"
232233
android:title="@string/generate_key_and_certificate"
233234
testdpc:minSdkVersion="P"
234-
testdpc:delegation="delegation-cert-install" />
235+
testdpc:admin="any" />
235236
<com.afwsamples.testdpc.common.preference.DpcPreference
236237
android:key="test_key_usability"
237238
android:title="@string/test_key_usage"

0 commit comments

Comments
 (0)