diff options
| -rwxr-xr-x | api/system-current.txt | 8 | ||||
| -rw-r--r-- | core/java/android/se/omapi/ISecureElementReader.aidl | 6 | ||||
| -rw-r--r-- | core/java/android/se/omapi/Reader.java | 23 |
3 files changed, 37 insertions, 0 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index ee62edc9cd05..fb124f256a22 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7017,6 +7017,14 @@ package android.provider { } +package android.se.omapi { + + public final class Reader { + method @RequiresPermission(android.Manifest.permission.SECURE_ELEMENT_PRIVILEGED) public boolean reset(); + } + +} + package android.security.keystore { public abstract class AttestationUtils { diff --git a/core/java/android/se/omapi/ISecureElementReader.aidl b/core/java/android/se/omapi/ISecureElementReader.aidl index a312c445395a..41244ab058e0 100644 --- a/core/java/android/se/omapi/ISecureElementReader.aidl +++ b/core/java/android/se/omapi/ISecureElementReader.aidl @@ -48,4 +48,10 @@ interface ISecureElementReader { */ void closeSessions(); + /** + * Closes all the sessions opened on this reader and resets the reader. + * All the channels opened by all these sessions will be closed. + * @return true if the reset is successful, false otherwise. + */ + boolean reset(); } diff --git a/core/java/android/se/omapi/Reader.java b/core/java/android/se/omapi/Reader.java index 80262f7533c8..7f68d9188650 100644 --- a/core/java/android/se/omapi/Reader.java +++ b/core/java/android/se/omapi/Reader.java @@ -23,6 +23,8 @@ package android.se.omapi; import android.annotation.NonNull; +import android.annotation.RequiresPermission; +import android.annotation.SystemApi; import android.os.RemoteException; import android.os.ServiceSpecificException; import android.util.Log; @@ -150,4 +152,25 @@ public final class Reader { } catch (RemoteException ignore) { } } } + + /** + * Close all the sessions opened on this reader and reset the reader. + * All the channels opened by all these sessions will be closed. + * @return <code>true</code> if reset success, <code>false</code> otherwise. + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.SECURE_ELEMENT_PRIVILEGED) + public boolean reset() { + if (!mService.isConnected()) { + Log.e(TAG, "service is not connected"); + return false; + } + synchronized (mLock) { + try { + closeSessions(); + return mReader.reset(); + } catch (RemoteException ignore) {return false;} + } + } } |