diff options
Diffstat (limited to 'core/java/android')
3 files changed, 54 insertions, 161 deletions
diff --git a/core/java/android/security/ConfirmationPrompt.java b/core/java/android/security/ConfirmationPrompt.java index 232903724d82..d8c44adcc322 100644 --- a/core/java/android/security/ConfirmationPrompt.java +++ b/core/java/android/security/ConfirmationPrompt.java @@ -21,7 +21,6 @@ import android.content.ContentResolver; import android.content.Context; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; -import android.security.keystore.AndroidKeyStoreProvider; import android.text.TextUtils; import android.util.Log; @@ -106,32 +105,6 @@ public class ConfirmationPrompt { private void doCallback(int responseCode, byte[] dataThatWasConfirmed, ConfirmationCallback callback) { switch (responseCode) { - case KeyStore.CONFIRMATIONUI_OK: - callback.onConfirmed(dataThatWasConfirmed); - break; - - case KeyStore.CONFIRMATIONUI_CANCELED: - callback.onDismissed(); - break; - - case KeyStore.CONFIRMATIONUI_ABORTED: - callback.onCanceled(); - break; - - case KeyStore.CONFIRMATIONUI_SYSTEM_ERROR: - callback.onError(new Exception("System error returned by ConfirmationUI.")); - break; - - default: - callback.onError(new Exception("Unexpected responseCode=" + responseCode - + " from onConfirmtionPromptCompleted() callback.")); - break; - } - } - - private void doCallback2(int responseCode, byte[] dataThatWasConfirmed, - ConfirmationCallback callback) { - switch (responseCode) { case AndroidProtectedConfirmation.ERROR_OK: callback.onConfirmed(dataThatWasConfirmed); break; @@ -155,31 +128,6 @@ public class ConfirmationPrompt { } } - private final android.os.IBinder mCallbackBinder = - new android.security.IConfirmationPromptCallback.Stub() { - @Override - public void onConfirmationPromptCompleted( - int responseCode, final byte[] dataThatWasConfirmed) - throws android.os.RemoteException { - if (mCallback != null) { - ConfirmationCallback callback = mCallback; - Executor executor = mExecutor; - mCallback = null; - mExecutor = null; - if (executor == null) { - doCallback(responseCode, dataThatWasConfirmed, callback); - } else { - executor.execute(new Runnable() { - @Override - public void run() { - doCallback(responseCode, dataThatWasConfirmed, callback); - } - }); - } - } - } - }; - private final android.security.apc.IConfirmationCallback mConfirmationCallback = new android.security.apc.IConfirmationCallback.Stub() { @Override @@ -191,11 +139,11 @@ public class ConfirmationPrompt { mCallback = null; mExecutor = null; if (executor == null) { - doCallback2(result, dataThatWasConfirmed, callback); + doCallback(result, dataThatWasConfirmed, callback); } else { executor.execute(new Runnable() { @Override public void run() { - doCallback2(result, dataThatWasConfirmed, callback); + doCallback(result, dataThatWasConfirmed, callback); } }); } @@ -266,29 +214,7 @@ public class ConfirmationPrompt { mExtraData = extraData; } - private static final int UI_OPTION_ACCESSIBILITY_INVERTED_FLAG = 1 << 0; - private static final int UI_OPTION_ACCESSIBILITY_MAGNIFIED_FLAG = 1 << 1; - private int getUiOptionsAsFlags() { - if (AndroidKeyStoreProvider.isKeystore2Enabled()) { - return getUiOptionsAsFlags2(); - } - int uiOptionsAsFlags = 0; - ContentResolver contentResolver = mContext.getContentResolver(); - int inversionEnabled = Settings.Secure.getInt(contentResolver, - Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0); - if (inversionEnabled == 1) { - uiOptionsAsFlags |= UI_OPTION_ACCESSIBILITY_INVERTED_FLAG; - } - float fontScale = Settings.System.getFloat(contentResolver, - Settings.System.FONT_SCALE, (float) 1.0); - if (fontScale > 1.0) { - uiOptionsAsFlags |= UI_OPTION_ACCESSIBILITY_MAGNIFIED_FLAG; - } - return uiOptionsAsFlags; - } - - private int getUiOptionsAsFlags2() { int uiOptionsAsFlags = 0; ContentResolver contentResolver = mContext.getContentResolver(); int inversionEnabled = Settings.Secure.getInt(contentResolver, @@ -349,52 +275,26 @@ public class ConfirmationPrompt { mExecutor = executor; String locale = Locale.getDefault().toLanguageTag(); - if (AndroidKeyStoreProvider.isKeystore2Enabled()) { - int uiOptionsAsFlags = getUiOptionsAsFlags2(); - int responseCode = getService().presentConfirmationPrompt( - mConfirmationCallback, mPromptText.toString(), mExtraData, locale, - uiOptionsAsFlags); - switch (responseCode) { - case AndroidProtectedConfirmation.ERROR_OK: - return; - - case AndroidProtectedConfirmation.ERROR_OPERATION_PENDING: - throw new ConfirmationAlreadyPresentingException(); - - case AndroidProtectedConfirmation.ERROR_UNIMPLEMENTED: - throw new ConfirmationNotAvailableException(); - - default: - // Unexpected error code. - Log.w(TAG, - "Unexpected responseCode=" + responseCode - + " from presentConfirmationPrompt() call."); - throw new IllegalArgumentException(); - } - } else { - int uiOptionsAsFlags = getUiOptionsAsFlags(); - int responseCode = mKeyStore.presentConfirmationPrompt( - mCallbackBinder, mPromptText.toString(), mExtraData, locale, uiOptionsAsFlags); - switch (responseCode) { - case KeyStore.CONFIRMATIONUI_OK: - return; - - case KeyStore.CONFIRMATIONUI_OPERATION_PENDING: - throw new ConfirmationAlreadyPresentingException(); + int uiOptionsAsFlags = getUiOptionsAsFlags(); + int responseCode = getService().presentConfirmationPrompt( + mConfirmationCallback, mPromptText.toString(), mExtraData, locale, + uiOptionsAsFlags); + switch (responseCode) { + case AndroidProtectedConfirmation.ERROR_OK: + return; - case KeyStore.CONFIRMATIONUI_UNIMPLEMENTED: - throw new ConfirmationNotAvailableException(); + case AndroidProtectedConfirmation.ERROR_OPERATION_PENDING: + throw new ConfirmationAlreadyPresentingException(); - case KeyStore.CONFIRMATIONUI_UIERROR: - throw new IllegalArgumentException(); + case AndroidProtectedConfirmation.ERROR_UNIMPLEMENTED: + throw new ConfirmationNotAvailableException(); - default: - // Unexpected error code. - Log.w(TAG, - "Unexpected responseCode=" + responseCode - + " from presentConfirmationPrompt() call."); - throw new IllegalArgumentException(); - } + default: + // Unexpected error code. + Log.w(TAG, + "Unexpected responseCode=" + responseCode + + " from presentConfirmationPrompt() call."); + throw new IllegalArgumentException(); } } @@ -408,33 +308,18 @@ public class ConfirmationPrompt { * @throws IllegalStateException if no prompt is currently being presented. */ public void cancelPrompt() { - if (AndroidKeyStoreProvider.isKeystore2Enabled()) { - int responseCode = - getService().cancelConfirmationPrompt(mConfirmationCallback); - if (responseCode == AndroidProtectedConfirmation.ERROR_OK) { - return; - } else if (responseCode == AndroidProtectedConfirmation.ERROR_OPERATION_PENDING) { - throw new IllegalStateException(); - } else { - // Unexpected error code. - Log.w(TAG, - "Unexpected responseCode=" + responseCode - + " from cancelConfirmationPrompt() call."); - throw new IllegalStateException(); - } + int responseCode = + getService().cancelConfirmationPrompt(mConfirmationCallback); + if (responseCode == AndroidProtectedConfirmation.ERROR_OK) { + return; + } else if (responseCode == AndroidProtectedConfirmation.ERROR_OPERATION_PENDING) { + throw new IllegalStateException(); } else { - int responseCode = mKeyStore.cancelConfirmationPrompt(mCallbackBinder); - if (responseCode == KeyStore.CONFIRMATIONUI_OK) { - return; - } else if (responseCode == KeyStore.CONFIRMATIONUI_OPERATION_PENDING) { - throw new IllegalStateException(); - } else { - // Unexpected error code. - Log.w(TAG, - "Unexpected responseCode=" + responseCode - + " from cancelConfirmationPrompt() call."); - throw new IllegalStateException(); - } + // Unexpected error code. + Log.w(TAG, + "Unexpected responseCode=" + responseCode + + " from cancelConfirmationPrompt() call."); + throw new IllegalStateException(); } } @@ -448,9 +333,6 @@ public class ConfirmationPrompt { if (isAccessibilityServiceRunning(context)) { return false; } - if (AndroidKeyStoreProvider.isKeystore2Enabled()) { - return new AndroidProtectedConfirmation().isConfirmationPromptSupported(); - } - return KeyStore.getInstance().isConfirmationPromptSupported(); + return new AndroidProtectedConfirmation().isConfirmationPromptSupported(); } } diff --git a/core/java/android/security/keymaster/KeymasterCertificateChain.aidl b/core/java/android/security/keymaster/KeymasterCertificateChain.aidl new file mode 100644 index 000000000000..e01db7acce99 --- /dev/null +++ b/core/java/android/security/keymaster/KeymasterCertificateChain.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.security.keymaster; + +parcelable KeymasterCertificateChain; diff --git a/core/java/android/security/keystore/recovery/RecoveryController.java b/core/java/android/security/keystore/recovery/RecoveryController.java index 1dc7f71fbb0e..17ad5f115579 100644 --- a/core/java/android/security/keystore/recovery/RecoveryController.java +++ b/core/java/android/security/keystore/recovery/RecoveryController.java @@ -712,18 +712,10 @@ public class RecoveryController { */ @NonNull Key getKeyFromGrant(@NonNull String grantAlias) throws UnrecoverableKeyException, KeyPermanentlyInvalidatedException { - if (grantAlias.startsWith(APPLICATION_KEY_GRANT_PREFIX)) { - return AndroidKeyStoreProvider - .loadAndroidKeyStoreSecretKeyFromKeystore( - KeyStore2.getInstance(), - getGrantDescriptor(grantAlias)); - } - // TODO(b/171305545): remove KeyStore1 logic. - return android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyFromKeystore( - mKeyStore, - grantAlias, - KeyStore.UID_SELF); - + return AndroidKeyStoreProvider + .loadAndroidKeyStoreSecretKeyFromKeystore( + KeyStore2.getInstance(), + getGrantDescriptor(grantAlias)); } private static final String APPLICATION_KEY_GRANT_PREFIX = "recoverable_key:"; |
