Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: net/android/java/src/org/chromium/net/RemoteAndroidKeyStore.java

Issue 166143002: Refactoring AndroidKeyStore to support a KeyStore running in another process (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/android/java/src/org/chromium/net/RemoteAndroidKeyStore.java
diff --git a/net/android/java/src/org/chromium/net/RemoteAndroidKeyStore.java b/net/android/java/src/org/chromium/net/RemoteAndroidKeyStore.java
new file mode 100644
index 0000000000000000000000000000000000000000..e979036b759573ac627a277254fafb6b810ded35
--- /dev/null
+++ b/net/android/java/src/org/chromium/net/RemoteAndroidKeyStore.java
@@ -0,0 +1,139 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.net;
+
+import android.os.RemoteException;
+import android.util.Log;
+
+/**
+ * Provides a remoted implementation of AndroidKeyStore where all calls are forwarded via
+ * binder to an external process.
+ */
+public class RemoteAndroidKeyStore implements AndroidKeyStore {
+
+ private static final String TAG = "AndroidKeyStoreRemoteImpl";
+
+ private static class RemotePrivateKey implements AndroidPrivateKey {
+ // Reference to the key on a remote store.
+ final int mHandle;
+ // Key store handling this key.
+ final RemoteAndroidKeyStore mStore;
+
+ RemotePrivateKey(int handle, RemoteAndroidKeyStore store) {
+ mHandle = handle;
+ mStore = store;
+ }
+
+ public int getHandle() {
+ return mHandle;
+ }
+
+ @Override
+ public AndroidKeyStore getKeyStore() {
+ return mStore;
+ }
+ }
+
+ private final IRemoteAndroidKeyStore mRemoteManager;
+
+ public RemoteAndroidKeyStore(IRemoteAndroidKeyStore manager) {
+ mRemoteManager = manager;
+ }
+
+ @Override
+ public byte[] getRSAKeyModulus(AndroidPrivateKey key) {
+ RemotePrivateKey remoteKey = (RemotePrivateKey) key;
+ try {
+ Log.d(TAG, "getRSAKeyModulus");
+ return mRemoteManager.getRSAKeyModulus(remoteKey.getHandle());
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
+ public byte[] getDSAKeyParamQ(AndroidPrivateKey key) {
+ RemotePrivateKey remoteKey = (RemotePrivateKey) key;
+ try {
+ Log.d(TAG, "getDSAKeyParamQ");
+ return mRemoteManager.getDSAKeyParamQ(remoteKey.getHandle());
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
+ public byte[] getECKeyOrder(AndroidPrivateKey key) {
+ RemotePrivateKey remoteKey = (RemotePrivateKey) key;
+ try {
+ Log.d(TAG, "getECKeyOrder");
+ return mRemoteManager.getECKeyOrder(remoteKey.getHandle());
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
+ public byte[] rawSignDigestWithPrivateKey(AndroidPrivateKey key, byte[] message) {
+ RemotePrivateKey remoteKey = (RemotePrivateKey) key;
+ try {
+ Log.d(TAG, "rawSignDigestWithPrivateKey");
+ return mRemoteManager.rawSignDigestWithPrivateKey(remoteKey.getHandle(), message);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
+ public int getPrivateKeyType(AndroidPrivateKey key) {
+ RemotePrivateKey remoteKey = (RemotePrivateKey) key;
+ try {
+ Log.d(TAG, "getPrivateKeyType");
+ return mRemoteManager.getPrivateKeyType(remoteKey.getHandle());
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ @Override
+ public byte[] getPrivateKeyEncodedBytes(AndroidPrivateKey key) {
+ // This should not be called as it's only for older versions of Android.
+ assert false;
+ return null;
+ }
+
+ @Override
+ public int getOpenSSLHandleForPrivateKey(AndroidPrivateKey privateKey) {
+ // This should not be called as it's only for older versions of Android.
+ assert false;
+ return 0;
+ }
+
+ public AndroidPrivateKey createKey(String alias) {
+ try {
+ int handle = mRemoteManager.getPrivateKeyHandle(alias);
+ return new RemotePrivateKey(handle, this);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
+ public void releaseKey(AndroidPrivateKey key) {
+ RemotePrivateKey remoteKey = (RemotePrivateKey) key;
+ try {
+ Log.d(TAG, "releaseKey");
+ mRemoteManager.releaseKey(remoteKey.getHandle());
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698