summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorRobert Berry <robertberry@google.com>2017-12-22 15:54:30 +0000
committerRobert Berry <robertberry@google.com>2017-12-22 15:54:30 +0000
commitcfc990a49ddc00f3ca972b463c6475d7d5ac7b41 (patch)
treedf7be9870fa81c6d022d01709cab2b417ac95b42 /core/java
parentedf829f41bd9147525e88eeef9828951fa44cc0d (diff)
Implement generateAndStoreKey
For now just returns raw key material. In the future we will need to change this to use the KeyStore move api. (Once that has been implemented.) Test: adb shell am instrument -w -e package com.android.server.locksettings.recoverablekeystore com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner Change-Id: I8aee4da81f0f853503f570dae8d74e1d29f124cc
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/security/recoverablekeystore/RecoverableKeyStoreLoader.java17
-rw-r--r--core/java/com/android/internal/widget/ILockSettings.aidl1
2 files changed, 18 insertions, 0 deletions
diff --git a/core/java/android/security/recoverablekeystore/RecoverableKeyStoreLoader.java b/core/java/android/security/recoverablekeystore/RecoverableKeyStoreLoader.java
index f88768b184fd..90570a043ce4 100644
--- a/core/java/android/security/recoverablekeystore/RecoverableKeyStoreLoader.java
+++ b/core/java/android/security/recoverablekeystore/RecoverableKeyStoreLoader.java
@@ -443,4 +443,21 @@ public class RecoverableKeyStoreLoader {
throw RecoverableKeyStoreLoaderException.fromServiceSpecificException(e);
}
}
+
+ /**
+ * Generates a key called {@code alias} and loads it into the recoverable key store. Returns the
+ * raw material of the key.
+ *
+ * @throws RecoverableKeyStoreLoaderException if an error occurred generating and storing the
+ * key.
+ */
+ public byte[] generateAndStoreKey(String alias) throws RecoverableKeyStoreLoaderException {
+ try {
+ return mBinder.generateAndStoreKey(alias);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ } catch (ServiceSpecificException e) {
+ throw RecoverableKeyStoreLoaderException.fromServiceSpecificException(e);
+ }
+ }
}
diff --git a/core/java/com/android/internal/widget/ILockSettings.aidl b/core/java/com/android/internal/widget/ILockSettings.aidl
index 43536a522a47..a0aeb1f1cb53 100644
--- a/core/java/com/android/internal/widget/ILockSettings.aidl
+++ b/core/java/com/android/internal/widget/ILockSettings.aidl
@@ -66,6 +66,7 @@ interface ILockSettings {
void initRecoveryService(in String rootCertificateAlias, in byte[] signedPublicKeyList,
int userId);
KeyStoreRecoveryData getRecoveryData(in byte[] account, int userId);
+ byte[] generateAndStoreKey(String alias);
void setSnapshotCreatedPendingIntent(in PendingIntent intent, int userId);
Map getRecoverySnapshotVersions(int userId);
void setServerParameters(long serverParameters, int userId);