diff options
author | Bernhard Bauer <bauerb@google.com> | 2014-07-21 15:32:30 +0100 |
---|---|---|
committer | Robin Lee <rgl@google.com> | 2014-09-11 18:54:36 +0100 |
commit | d300fc59cf229dd634f317c77af12000d0f09e7c (patch) | |
tree | e7739ae52375eba12c5d4706151692c1e16e9d95 | |
parent | 3d25b3144669ceb787dfd00f1e312516c8fe6173 (diff) | |
download | android_packages_apps_KeyChain-d300fc59cf229dd634f317c77af12000d0f09e7c.tar.gz android_packages_apps_KeyChain-d300fc59cf229dd634f317c77af12000d0f09e7c.tar.bz2 android_packages_apps_KeyChain-d300fc59cf229dd634f317c77af12000d0f09e7c.zip |
Implement IKeychainService.installkeyPair.
BUG=15065444
Change-Id: Idc25774c9ab1a61080290bebd6f5c4f24e6ee2e0
-rw-r--r-- | src/com/android/keychain/KeyChainService.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/com/android/keychain/KeyChainService.java b/src/com/android/keychain/KeyChainService.java index 58531ac..6923a40 100644 --- a/src/com/android/keychain/KeyChainService.java +++ b/src/com/android/keychain/KeyChainService.java @@ -149,6 +149,26 @@ public class KeyChainService extends IntentService { broadcastStorageChange(); } + @Override public boolean installKeyPair(byte[] privateKey, byte[] userCertificate, + String alias) { + checkCertInstallerOrSystemCaller(); + if (!mKeyStore.importKey(Credentials.USER_PRIVATE_KEY + alias, privateKey, -1, + KeyStore.FLAG_ENCRYPTED)) { + Log.e(TAG, "Failed to import private key " + alias); + return false; + } + if (!mKeyStore.put(Credentials.USER_CERTIFICATE + alias, userCertificate, -1, + KeyStore.FLAG_ENCRYPTED)) { + Log.e(TAG, "Failed to import user certificate " + userCertificate); + if (!mKeyStore.delKey(Credentials.USER_PRIVATE_KEY + alias)) { + Log.e(TAG, "Failed to delete private key after certificate importing failed"); + } + return false; + } + broadcastStorageChange(); + return true; + } + private X509Certificate parseCertificate(byte[] bytes) throws CertificateException { CertificateFactory cf = CertificateFactory.getInstance("X.509"); return (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(bytes)); |