Merge changes from topic "ks2_with_keymint"
* changes: Keystore 2.0 SPI: Use KeyMint AIDL types. Keystore 2.0 SPI: Make Recoverable keystore tolerate the Keystore 2.0 SPI
This commit is contained in:
@@ -17,11 +17,11 @@
|
||||
package android.security;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceSpecificException;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.system.keystore2.IKeystoreOperation;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
import android.system.keystore2.ResponseCode;
|
||||
import android.util.Log;
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package android.security;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.app.compat.CompatChanges;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceSpecificException;
|
||||
import android.security.keystore.BackendBusyException;
|
||||
@@ -27,7 +28,6 @@ import android.system.keystore2.CreateOperationResponse;
|
||||
import android.system.keystore2.IKeystoreSecurityLevel;
|
||||
import android.system.keystore2.KeyDescriptor;
|
||||
import android.system.keystore2.KeyMetadata;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
import android.system.keystore2.ResponseCode;
|
||||
import android.util.Log;
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
package android.security.keystore2;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.ArrayUtils;
|
||||
import android.security.keystore.KeyProperties;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
|
||||
import java.security.AlgorithmParameters;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
|
||||
@@ -18,13 +18,13 @@ package android.security.keystore2;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.security.KeyStoreException;
|
||||
import android.security.KeyStoreOperation;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.ArrayUtils;
|
||||
import android.security.keystore.KeyProperties;
|
||||
import android.security.keystore2.KeyStoreCryptoOperationChunkedStreamer.Stream;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
|
||||
import libcore.util.EmptyArray;
|
||||
|
||||
|
||||
@@ -19,11 +19,11 @@ package android.security.keystore2;
|
||||
import android.annotation.CallSuper;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.security.KeyStoreException;
|
||||
import android.security.KeyStoreOperation;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.KeyStoreCryptoOperation;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
|
||||
import libcore.util.EmptyArray;
|
||||
|
||||
|
||||
@@ -17,12 +17,12 @@
|
||||
package android.security.keystore2;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.security.KeyStoreException;
|
||||
import android.security.KeyStoreOperation;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.KeyProperties;
|
||||
import android.system.keystore2.Authorization;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
|
||||
import libcore.util.EmptyArray;
|
||||
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
|
||||
package android.security.keystore2;
|
||||
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.security.KeyStoreException;
|
||||
import android.security.KeyStoreOperation;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.KeyStoreCryptoOperation;
|
||||
import android.security.keystore.KeymasterUtils;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
import java.security.InvalidKeyException;
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package android.security.keystore2;
|
||||
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.hardware.keymint.SecurityLevel;
|
||||
import android.security.KeyStore2;
|
||||
import android.security.KeyStoreSecurityLevel;
|
||||
import android.security.keymaster.KeymasterArguments;
|
||||
@@ -29,8 +31,6 @@ import android.system.keystore2.Domain;
|
||||
import android.system.keystore2.IKeystoreSecurityLevel;
|
||||
import android.system.keystore2.KeyDescriptor;
|
||||
import android.system.keystore2.KeyMetadata;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
import android.system.keystore2.SecurityLevel;
|
||||
import android.util.Log;
|
||||
|
||||
import libcore.util.EmptyArray;
|
||||
|
||||
@@ -18,6 +18,8 @@ package android.security.keystore2;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.hardware.keymint.SecurityLevel;
|
||||
import android.os.Build;
|
||||
import android.security.KeyPairGeneratorSpec;
|
||||
import android.security.KeyStore2;
|
||||
@@ -35,9 +37,7 @@ import android.system.keystore2.Domain;
|
||||
import android.system.keystore2.IKeystoreSecurityLevel;
|
||||
import android.system.keystore2.KeyDescriptor;
|
||||
import android.system.keystore2.KeyMetadata;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
import android.system.keystore2.ResponseCode;
|
||||
import android.system.keystore2.SecurityLevel;
|
||||
import android.util.Log;
|
||||
|
||||
import libcore.util.EmptyArray;
|
||||
|
||||
@@ -18,11 +18,11 @@ package android.security.keystore2;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.KeyProperties;
|
||||
import android.security.keystore.KeymasterUtils;
|
||||
import android.system.keystore2.Authorization;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
|
||||
import java.security.AlgorithmParameters;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
package android.security.keystore2;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.KeyProperties;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.SignatureSpi;
|
||||
|
||||
@@ -18,12 +18,12 @@ package android.security.keystore2;
|
||||
|
||||
import android.annotation.CallSuper;
|
||||
import android.annotation.NonNull;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.security.KeyStoreException;
|
||||
import android.security.KeyStoreOperation;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.ArrayUtils;
|
||||
import android.security.keystore.KeyStoreCryptoOperation;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
|
||||
import libcore.util.EmptyArray;
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ package android.security.keystore2;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.hardware.biometrics.BiometricManager;
|
||||
import android.hardware.keymint.HardwareAuthenticatorType;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.hardware.keymint.SecurityLevel;
|
||||
import android.security.GateKeeper;
|
||||
import android.security.KeyStore2;
|
||||
import android.security.KeyStoreParameter;
|
||||
@@ -36,9 +39,7 @@ import android.system.keystore2.IKeystoreSecurityLevel;
|
||||
import android.system.keystore2.KeyDescriptor;
|
||||
import android.system.keystore2.KeyEntryResponse;
|
||||
import android.system.keystore2.KeyMetadata;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
import android.system.keystore2.ResponseCode;
|
||||
import android.system.keystore2.SecurityLevel;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
@@ -871,16 +872,13 @@ public class AndroidKeyStoreSpi extends KeyStoreSpi {
|
||||
List<AuthenticatorSpec> authenticatorSpecs = new ArrayList<>();
|
||||
|
||||
AuthenticatorSpec authenticatorSpec = new AuthenticatorSpec();
|
||||
// TODO Replace with HardwareAuthenticatorType.PASSWORD when KeyMint AIDL spec has landed.
|
||||
authenticatorSpec.authenticatorType = 1; // HardwareAuthenticatorType.PASSWORD
|
||||
authenticatorSpec.authenticatorType = HardwareAuthenticatorType.PASSWORD;
|
||||
authenticatorSpec.authenticatorId = GateKeeper.getSecureUserId();
|
||||
authenticatorSpecs.add(authenticatorSpec);
|
||||
|
||||
for (long sid : biometricSids) {
|
||||
AuthenticatorSpec authSpec = new AuthenticatorSpec();
|
||||
// TODO Replace with HardwareAuthenticatorType.FINGERPRINT when KeyMint AIDL spec has
|
||||
// landed.
|
||||
authSpec.authenticatorType = 2; // HardwareAuthenticatorType.FINGERPRINT
|
||||
authSpec.authenticatorType = HardwareAuthenticatorType.FINGERPRINT;
|
||||
authSpec.authenticatorId = sid;
|
||||
authenticatorSpecs.add(authSpec);
|
||||
}
|
||||
|
||||
@@ -18,10 +18,10 @@ package android.security.keystore2;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.ArrayUtils;
|
||||
import android.security.keystore.KeyProperties;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
|
||||
import java.security.AlgorithmParameters;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
|
||||
@@ -18,13 +18,13 @@ package android.security.keystore2;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.hardware.biometrics.BiometricManager;
|
||||
import android.hardware.keymint.KeyParameter;
|
||||
import android.hardware.keymint.SecurityLevel;
|
||||
import android.security.GateKeeper;
|
||||
import android.security.keymaster.KeymasterDefs;
|
||||
import android.security.keystore.KeyProperties;
|
||||
import android.security.keystore.UserAuthArgs;
|
||||
import android.system.keystore2.Authorization;
|
||||
import android.system.keystore2.KeyParameter;
|
||||
import android.system.keystore2.SecurityLevel;
|
||||
|
||||
import java.security.ProviderException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -16,23 +16,38 @@
|
||||
|
||||
package com.android.server.locksettings.recoverablekeystore;
|
||||
|
||||
import android.security.keystore2.AndroidKeyStoreProvider;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.Key;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.UnrecoverableKeyException;
|
||||
import java.security.cert.CertificateException;
|
||||
|
||||
/**
|
||||
* Implementation of {@link KeyStoreProxy} that delegates all method calls to the {@link KeyStore}.
|
||||
*/
|
||||
public class KeyStoreProxyImpl implements KeyStoreProxy {
|
||||
|
||||
private static final String ANDROID_KEY_STORE_PROVIDER = "AndroidKeyStore";
|
||||
private final KeyStore mKeyStore;
|
||||
|
||||
/**
|
||||
* TODO This function redirects keystore access to the legacy keystore during a transitional
|
||||
* phase during which not all calling code has been adjusted to use Keystore 2.0.
|
||||
* This can be reverted to a constant of "AndroidKeyStore" when b/171305684 is complete.
|
||||
* The specific bug for this component is b/171305545.
|
||||
*/
|
||||
static String androidKeystoreProviderName() {
|
||||
if (AndroidKeyStoreProvider.isInstalled()) {
|
||||
return "AndroidKeyStoreLegacy";
|
||||
} else {
|
||||
return "AndroidKeyStore";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* A new instance, delegating to {@code keyStore}.
|
||||
*/
|
||||
@@ -69,7 +84,7 @@ public class KeyStoreProxyImpl implements KeyStoreProxy {
|
||||
* @throws KeyStoreException if there was a problem getting or initializing the key store.
|
||||
*/
|
||||
public static KeyStore getAndLoadAndroidKeyStore() throws KeyStoreException {
|
||||
KeyStore keyStore = KeyStore.getInstance(ANDROID_KEY_STORE_PROVIDER);
|
||||
KeyStore keyStore = KeyStore.getInstance(androidKeystoreProviderName());
|
||||
try {
|
||||
keyStore.load(/*param=*/ null);
|
||||
} catch (CertificateException | IOException | NoSuchAlgorithmException e) {
|
||||
|
||||
@@ -86,8 +86,6 @@ public class PlatformKeyManager {
|
||||
private final KeyStoreProxy mKeyStore;
|
||||
private final RecoverableKeyStoreDb mDatabase;
|
||||
|
||||
private static final String ANDROID_KEY_STORE_PROVIDER = "AndroidKeyStore";
|
||||
|
||||
/**
|
||||
* A new instance operating on behalf of {@code userId}, storing its prefs in the location
|
||||
* defined by {@code context}.
|
||||
@@ -486,7 +484,7 @@ public class PlatformKeyManager {
|
||||
* @throws KeyStoreException if there was a problem getting or initializing the key store.
|
||||
*/
|
||||
private static KeyStore getAndLoadAndroidKeyStore() throws KeyStoreException {
|
||||
KeyStore keyStore = KeyStore.getInstance(ANDROID_KEY_STORE_PROVIDER);
|
||||
KeyStore keyStore = KeyStore.getInstance(KeyStoreProxyImpl.androidKeystoreProviderName());
|
||||
try {
|
||||
keyStore.load(/*param=*/ null);
|
||||
} catch (CertificateException | IOException | NoSuchAlgorithmException e) {
|
||||
|
||||
Reference in New Issue
Block a user