summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-05-10 16:30:06 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-05-10 16:30:06 +0000
commite54fc50511572bc0efb70cac337509250d7a5a96 (patch)
treeb91518e9fee94c76e51025bb6c73f944acecc384
parent5dd9b02373a3063e793f0ccbe9a6a326ef6b65b1 (diff)
parenta4b5490ae8ef1274c09da8c19b6916aa53a3277b (diff)
downloadSecureElement-e54fc50511572bc0efb70cac337509250d7a5a96.tar.gz
Snap for 10103804 from a4b5490ae8ef1274c09da8c19b6916aa53a3277b to mainline-tzdata5-releaseaml_tz5_341510070aml_tz5_341510050aml_tz5_341510010aml_tz5_341510010
Change-Id: I5b7c508d83ad601ea3a6e62f6f533ea09df1937e
-rw-r--r--src/com/android/se/SecureElementService.java2
-rw-r--r--src/com/android/se/Terminal.java51
2 files changed, 33 insertions, 20 deletions
diff --git a/src/com/android/se/SecureElementService.java b/src/com/android/se/SecureElementService.java
index 6286228..47d3103 100644
--- a/src/com/android/se/SecureElementService.java
+++ b/src/com/android/se/SecureElementService.java
@@ -207,6 +207,7 @@ public final class SecureElementService extends Service {
@Override
public void onCreate() {
+ super.onCreate();
Log.i(mTag, Thread.currentThread().getName() + " onCreate");
initialize();
createTerminals();
@@ -229,6 +230,7 @@ public final class SecureElementService extends Service {
* close all the channels.
*/
public void onDestroy() {
+ super.onDestroy();
Log.i(mTag, "onDestroy");
for (Terminal terminal : mTerminals.values()) {
terminal.closeChannels();
diff --git a/src/com/android/se/Terminal.java b/src/com/android/se/Terminal.java
index 5bb3e3b..aba77bb 100644
--- a/src/com/android/se/Terminal.java
+++ b/src/com/android/se/Terminal.java
@@ -36,6 +36,7 @@ import android.os.Binder;
import android.os.Build;
import android.os.Handler;
import android.os.HwBinder;
+import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -271,9 +272,16 @@ public class Terminal {
android.hardware.secure_element.V1_1.ISecureElement mSEHal11 = null;
synchronized (mLock) {
try {
- mAidlHal = android.hardware.secure_element.ISecureElement.Stub.asInterface(
- ServiceManager.waitForDeclaredService(
- "android.hardware.secure_element.ISecureElement/" + mName));
+ String name = "android.hardware.secure_element.ISecureElement/" + mName;
+ IBinder binder = null;
+ if (retryOnFail) {
+ binder = ServiceManager.waitForDeclaredService(name);
+ } else {
+ if (ServiceManager.isDeclared(name)) {
+ binder = ServiceManager.getService(name);
+ }
+ }
+ mAidlHal = android.hardware.secure_element.ISecureElement.Stub.asInterface(binder);
} catch (Exception e) {
Log.d(mTag, "SE AIDL Hal is not supported");
}
@@ -884,29 +892,32 @@ public class Terminal {
* Reset the Secure Element. Return true if success, false otherwise.
*/
public boolean reset() {
- if (mSEHal12 == null && mAidlHal == null) {
- return false;
- }
- mContext.enforceCallingOrSelfPermission(
+ synchronized (mLock) {
+ if (mSEHal12 == null && mAidlHal == null) {
+ return false;
+ }
+ mContext.enforceCallingOrSelfPermission(
android.Manifest.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION,
"Need SECURE_ELEMENT_PRIVILEGED_OPERATION permission");
- try {
- if (mAidlHal != null) {
- mAidlHal.reset();
- } else {
- byte status = mSEHal12.reset();
- // Successfully trigger reset. HAL service should send onStateChange
- // after secure element reset and initialization process complete
- if (status == SecureElementStatus.SUCCESS) {
+ try {
+ if (mAidlHal != null) {
+ mAidlHal.reset();
return true;
+ } else {
+ byte status = mSEHal12.reset();
+ // Successfully trigger reset. HAL service should send onStateChange
+ // after secure element reset and initialization process complete
+ if (status == SecureElementStatus.SUCCESS) {
+ return true;
+ }
+ Log.e(mTag, "Error resetting terminal " + mName);
}
- Log.e(mTag, "Error resetting terminal " + mName);
+ } catch (ServiceSpecificException e) {
+ Log.e(mTag, "Exception in reset()" + e);
+ } catch (RemoteException e) {
+ Log.e(mTag, "Exception in reset()" + e);
}
- } catch (ServiceSpecificException e) {
- Log.e(mTag, "Exception in reset()" + e);
- } catch (RemoteException e) {
- Log.e(mTag, "Exception in reset()" + e);
}
return false;
}