Loading core/java/android/security/IKeystoreService.aidl +5 −5 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import android.security.KeystoreArguments; */ interface IKeystoreService { int getState(int userId); byte[] get(String name); byte[] get(String name, int uid); int insert(String name, in byte[] item, int uid, int flags); int del(String name, int uid); int exist(String name, int uid); Loading @@ -49,7 +49,7 @@ interface IKeystoreService { byte[] get_pubkey(String name); int grant(String name, int granteeUid); int ungrant(String name, int granteeUid); long getmtime(String name); long getmtime(String name, int uid); int duplicate(String srcKey, int srcUid, String destKey, int destUid); int is_hardware_backed(String string); int clear_uid(long uid); Loading @@ -59,13 +59,13 @@ interface IKeystoreService { int generateKey(String alias, in KeymasterArguments arguments, in byte[] entropy, int uid, int flags, out KeyCharacteristics characteristics); int getKeyCharacteristics(String alias, in KeymasterBlob clientId, in KeymasterBlob appId, out KeyCharacteristics characteristics); int uid, out KeyCharacteristics characteristics); int importKey(String alias, in KeymasterArguments arguments, int format, in byte[] keyData, int uid, int flags, out KeyCharacteristics characteristics); ExportResult exportKey(String alias, int format, in KeymasterBlob clientId, in KeymasterBlob appId); in KeymasterBlob appId, int uid); OperationResult begin(IBinder appToken, String alias, int purpose, boolean pruneable, in KeymasterArguments params, in byte[] entropy); in KeymasterArguments params, in byte[] entropy, int uid); OperationResult update(IBinder token, in KeymasterArguments params, in byte[] input); OperationResult finish(IBinder token, in KeymasterArguments params, in byte[] signature, in byte[] entropy); Loading keystore/java/android/security/KeyStore.java +32 −10 Original line number Diff line number Diff line Loading @@ -155,15 +155,19 @@ public class KeyStore { return state() == State.UNLOCKED; } public byte[] get(String key) { public byte[] get(String key, int uid) { try { return mBinder.get(key); return mBinder.get(key, uid); } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); return null; } } public byte[] get(String key) { return get(key, UID_SELF); } public boolean put(String key, byte[] value, int uid, int flags) { return insert(key, value, uid, flags) == NO_ERROR; } Loading Loading @@ -348,9 +352,9 @@ public class KeyStore { * Returns the last modification time of the key in milliseconds since the * epoch. Will return -1L if the key could not be found or other error. */ public long getmtime(String key) { public long getmtime(String key, int uid) { try { final long millis = mBinder.getmtime(key); final long millis = mBinder.getmtime(key, uid); if (millis == -1L) { return -1L; } Loading @@ -362,6 +366,10 @@ public class KeyStore { } } public long getmtime(String key) { return getmtime(key, UID_SELF); } public boolean duplicate(String srcKey, int srcUid, String destKey, int destUid) { try { return mBinder.duplicate(srcKey, srcUid, destKey, destUid) == NO_ERROR; Loading Loading @@ -423,15 +431,20 @@ public class KeyStore { } public int getKeyCharacteristics(String alias, KeymasterBlob clientId, KeymasterBlob appId, KeyCharacteristics outCharacteristics) { int uid, KeyCharacteristics outCharacteristics) { try { return mBinder.getKeyCharacteristics(alias, clientId, appId, outCharacteristics); return mBinder.getKeyCharacteristics(alias, clientId, appId, uid, outCharacteristics); } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); return SYSTEM_ERROR; } } public int getKeyCharacteristics(String alias, KeymasterBlob clientId, KeymasterBlob appId, KeyCharacteristics outCharacteristics) { return getKeyCharacteristics(alias, clientId, appId, UID_SELF, outCharacteristics); } public int importKey(String alias, KeymasterArguments args, int format, byte[] keyData, int uid, int flags, KeyCharacteristics outCharacteristics) { try { Loading @@ -449,25 +462,34 @@ public class KeyStore { } public ExportResult exportKey(String alias, int format, KeymasterBlob clientId, KeymasterBlob appId) { KeymasterBlob appId, int uid) { try { return mBinder.exportKey(alias, format, clientId, appId); return mBinder.exportKey(alias, format, clientId, appId, uid); } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); return null; } } public ExportResult exportKey(String alias, int format, KeymasterBlob clientId, KeymasterBlob appId) { return exportKey(alias, format, clientId, appId, UID_SELF); } public OperationResult begin(String alias, int purpose, boolean pruneable, KeymasterArguments args, byte[] entropy) { KeymasterArguments args, byte[] entropy, int uid) { try { return mBinder.begin(getToken(), alias, purpose, pruneable, args, entropy); return mBinder.begin(getToken(), alias, purpose, pruneable, args, entropy, uid); } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); return null; } } public OperationResult begin(String alias, int purpose, boolean pruneable, KeymasterArguments args, byte[] entropy) { return begin(alias, purpose, pruneable, args, entropy, UID_SELF); } public OperationResult update(IBinder token, KeymasterArguments arguments, byte[] input) { try { return mBinder.update(token, arguments, input); Loading Loading
core/java/android/security/IKeystoreService.aidl +5 −5 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import android.security.KeystoreArguments; */ interface IKeystoreService { int getState(int userId); byte[] get(String name); byte[] get(String name, int uid); int insert(String name, in byte[] item, int uid, int flags); int del(String name, int uid); int exist(String name, int uid); Loading @@ -49,7 +49,7 @@ interface IKeystoreService { byte[] get_pubkey(String name); int grant(String name, int granteeUid); int ungrant(String name, int granteeUid); long getmtime(String name); long getmtime(String name, int uid); int duplicate(String srcKey, int srcUid, String destKey, int destUid); int is_hardware_backed(String string); int clear_uid(long uid); Loading @@ -59,13 +59,13 @@ interface IKeystoreService { int generateKey(String alias, in KeymasterArguments arguments, in byte[] entropy, int uid, int flags, out KeyCharacteristics characteristics); int getKeyCharacteristics(String alias, in KeymasterBlob clientId, in KeymasterBlob appId, out KeyCharacteristics characteristics); int uid, out KeyCharacteristics characteristics); int importKey(String alias, in KeymasterArguments arguments, int format, in byte[] keyData, int uid, int flags, out KeyCharacteristics characteristics); ExportResult exportKey(String alias, int format, in KeymasterBlob clientId, in KeymasterBlob appId); in KeymasterBlob appId, int uid); OperationResult begin(IBinder appToken, String alias, int purpose, boolean pruneable, in KeymasterArguments params, in byte[] entropy); in KeymasterArguments params, in byte[] entropy, int uid); OperationResult update(IBinder token, in KeymasterArguments params, in byte[] input); OperationResult finish(IBinder token, in KeymasterArguments params, in byte[] signature, in byte[] entropy); Loading
keystore/java/android/security/KeyStore.java +32 −10 Original line number Diff line number Diff line Loading @@ -155,15 +155,19 @@ public class KeyStore { return state() == State.UNLOCKED; } public byte[] get(String key) { public byte[] get(String key, int uid) { try { return mBinder.get(key); return mBinder.get(key, uid); } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); return null; } } public byte[] get(String key) { return get(key, UID_SELF); } public boolean put(String key, byte[] value, int uid, int flags) { return insert(key, value, uid, flags) == NO_ERROR; } Loading Loading @@ -348,9 +352,9 @@ public class KeyStore { * Returns the last modification time of the key in milliseconds since the * epoch. Will return -1L if the key could not be found or other error. */ public long getmtime(String key) { public long getmtime(String key, int uid) { try { final long millis = mBinder.getmtime(key); final long millis = mBinder.getmtime(key, uid); if (millis == -1L) { return -1L; } Loading @@ -362,6 +366,10 @@ public class KeyStore { } } public long getmtime(String key) { return getmtime(key, UID_SELF); } public boolean duplicate(String srcKey, int srcUid, String destKey, int destUid) { try { return mBinder.duplicate(srcKey, srcUid, destKey, destUid) == NO_ERROR; Loading Loading @@ -423,15 +431,20 @@ public class KeyStore { } public int getKeyCharacteristics(String alias, KeymasterBlob clientId, KeymasterBlob appId, KeyCharacteristics outCharacteristics) { int uid, KeyCharacteristics outCharacteristics) { try { return mBinder.getKeyCharacteristics(alias, clientId, appId, outCharacteristics); return mBinder.getKeyCharacteristics(alias, clientId, appId, uid, outCharacteristics); } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); return SYSTEM_ERROR; } } public int getKeyCharacteristics(String alias, KeymasterBlob clientId, KeymasterBlob appId, KeyCharacteristics outCharacteristics) { return getKeyCharacteristics(alias, clientId, appId, UID_SELF, outCharacteristics); } public int importKey(String alias, KeymasterArguments args, int format, byte[] keyData, int uid, int flags, KeyCharacteristics outCharacteristics) { try { Loading @@ -449,25 +462,34 @@ public class KeyStore { } public ExportResult exportKey(String alias, int format, KeymasterBlob clientId, KeymasterBlob appId) { KeymasterBlob appId, int uid) { try { return mBinder.exportKey(alias, format, clientId, appId); return mBinder.exportKey(alias, format, clientId, appId, uid); } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); return null; } } public ExportResult exportKey(String alias, int format, KeymasterBlob clientId, KeymasterBlob appId) { return exportKey(alias, format, clientId, appId, UID_SELF); } public OperationResult begin(String alias, int purpose, boolean pruneable, KeymasterArguments args, byte[] entropy) { KeymasterArguments args, byte[] entropy, int uid) { try { return mBinder.begin(getToken(), alias, purpose, pruneable, args, entropy); return mBinder.begin(getToken(), alias, purpose, pruneable, args, entropy, uid); } catch (RemoteException e) { Log.w(TAG, "Cannot connect to keystore", e); return null; } } public OperationResult begin(String alias, int purpose, boolean pruneable, KeymasterArguments args, byte[] entropy) { return begin(alias, purpose, pruneable, args, entropy, UID_SELF); } public OperationResult update(IBinder token, KeymasterArguments arguments, byte[] input) { try { return mBinder.update(token, arguments, input); Loading