From 04d8c3b4eb32c5a0c55ccd9ec2ac6d98eb07c58f Mon Sep 17 00:00:00 2001 From: Sebastiano Barezzi Date: Thu, 14 Apr 2022 01:48:37 +0200 Subject: veux: Move to common IFAAService Change-Id: I71bfdacc4626d75d56aa12ec384f0f116d6d6ff2 --- device.mk | 5 +- org.ifaa.android.manager/Android.bp | 30 -- .../src/org/ifaa/android/manager/IFAAManager.java | 69 ----- .../ifaa/android/manager/IFAAManagerFactory.java | 11 - .../org/ifaa/android/manager/IFAAManagerImpl.java | 322 --------------------- .../org/ifaa/android/manager/IFAAManagerV2.java | 9 - .../org/ifaa/android/manager/IFAAManagerV3.java | 20 -- .../org/ifaa/android/manager/IFAAManagerV4.java | 11 - .../src/org/ifaa/android/manager/IIFAAService.aidl | 12 - 9 files changed, 1 insertion(+), 488 deletions(-) delete mode 100644 org.ifaa.android.manager/Android.bp delete mode 100644 org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManager.java delete mode 100644 org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerFactory.java delete mode 100644 org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerImpl.java delete mode 100644 org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV2.java delete mode 100644 org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV3.java delete mode 100644 org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV4.java delete mode 100644 org.ifaa.android.manager/src/org/ifaa/android/manager/IIFAAService.aidl diff --git a/device.mk b/device.mk index f0cfb5b..e690202 100644 --- a/device.mk +++ b/device.mk @@ -228,10 +228,7 @@ PRODUCT_COPY_FILES += \ # IFAA Manager PRODUCT_PACKAGES += \ - org.ifaa.android.manager - -PRODUCT_BOOT_JARS += \ - org.ifaa.android.manager + IFAAService # IPACM PRODUCT_PACKAGES += \ diff --git a/org.ifaa.android.manager/Android.bp b/org.ifaa.android.manager/Android.bp deleted file mode 100644 index 74904e0..0000000 --- a/org.ifaa.android.manager/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright (C) 2017-2020 The LineageOS Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -java_library { - name: "org.ifaa.android.manager", - installable: true, - srcs: [ - "src/**/*.java", - "src/**/I*.aidl", - ], - libs: [ - "unsupportedappusage", - ], - aidl: { - local_include_dirs: ["src"], - }, -} diff --git a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManager.java b/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManager.java deleted file mode 100644 index 82cb659..0000000 --- a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManager.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.ifaa.android.manager; - -import android.compat.annotation.UnsupportedAppUsage; -import android.content.Context; -import android.os.Build.VERSION; -import android.os.SystemProperties; - -public abstract class IFAAManager { - private static final int IFAA_VERSION_V2 = 2; - private static final int IFAA_VERSION_V3 = 3; - private static final int IFAA_VERSION_V4 = 4; - - static int sIfaaVer; - static boolean sIsFod = SystemProperties.getBoolean("ro.hardware.fp.fod", false); - - /** - * 返回手机系统上支持的校验方式,目前IFAF协议1.0版本指纹为0x01、虹膜为0x02 - */ - @UnsupportedAppUsage - public abstract int getSupportBIOTypes(Context context); - - /** - * 启动系统的指纹/虹膜管理应用界面,让用户进行指纹录入。指纹录入是在系统的指纹管理应用中实现的, - * 本函数的作用只是将指纹管理应用运行起来,直接进行页面跳转,方便用户录入。 - * @param context - * @param authType 生物特征识别类型,指纹为1,虹膜为2 - * @return 0,成功启动指纹管理应用;-1,启动指纹管理应用失败。 - */ - @UnsupportedAppUsage - public abstract int startBIOManager(Context context, int authType); - - /** - * 通过ifaateeclient的so文件实现REE到TA的通道 - * @param context - * @param param 用于传输到IFAA TA的数据buffer - * @return IFAA TA返回给REE数据buffer - */ - @UnsupportedAppUsage - public native byte[] processCmd(Context context, byte[] param); - - /** - * 获取设备型号,同一款机型型号需要保持一致 - */ - @UnsupportedAppUsage - public abstract String getDeviceModel(); - - /** - * 获取IFAAManager接口定义版本,目前为1 - */ - @UnsupportedAppUsage - public abstract int getVersion(); - - /** - * load so to communicate from REE to TEE - */ - static { - sIfaaVer = 1; - - if (VERSION.SDK_INT >= 28) { - sIfaaVer = IFAA_VERSION_V4; - } else if (sIsFod) { - sIfaaVer = IFAA_VERSION_V3; - } else if (VERSION.SDK_INT >= 24) { - sIfaaVer = IFAA_VERSION_V2; - } else { - System.loadLibrary("teeclientjni"); //teeclientjni for TA test binary //ifaateeclient - } - } -} diff --git a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerFactory.java b/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerFactory.java deleted file mode 100644 index 3697874..0000000 --- a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerFactory.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.ifaa.android.manager; - -import android.compat.annotation.UnsupportedAppUsage; -import android.content.Context; - -public class IFAAManagerFactory { - @UnsupportedAppUsage - public static IFAAManager getIFAAManager(Context context, int authType) { - return IFAAManagerImpl.getInstance(context); - } -} diff --git a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerImpl.java b/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerImpl.java deleted file mode 100644 index 120aed9..0000000 --- a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerImpl.java +++ /dev/null @@ -1,322 +0,0 @@ -package org.ifaa.android.manager; - -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.os.Build; -import android.os.Build.VERSION; -import android.os.HwBinder; -import android.os.HwBlob; -import android.os.HwParcel; -import android.os.IBinder; -import android.os.IBinder.DeathRecipient; -import android.os.IHwBinder; -import android.os.Parcel; -import android.os.RemoteException; -import android.os.SystemProperties; -import android.util.Slog; - -import java.util.ArrayList; -import java.util.Arrays; - -import org.json.JSONObject; - -public class IFAAManagerImpl extends IFAAManagerV4 { - private static final int CODE_PROCESS_CMD = 1; - private static final int CODE_GETIDLIST_CMD = 2; - - private static final int IFAA_TYPE_FINGER = 1; - private static final int IFAA_TYPE_IRIS = 2; - private static final int IFAA_TYPE_SENSOR_FOD = 16; - - private static final int ACTIVITY_START_SUCCESS = 0; - private static final int ACTIVITY_START_FAILED = -1; - - private static volatile IFAAManagerImpl INSTANCE = null; - - private static final String CA_CERT_ALIAS_DELIMITER = " "; - - private static final String INTERFACE_DESCRIPTOR = - "vendor.xiaomi.hardware.mlipay@1.0::IMlipayService"; - private static final String SERVICE_NAME = - "vendor.xiaomi.hardware.mlipay@1.0::IMlipayService"; - private static final String TAG = "IfaaManagerImpl"; - - private static final String mIfaaActName = "org.ifaa.android.manager.IFAAService"; - private static final String mIfaaInterfaceDesc = "org.ifaa.android.manager.IIFAAService"; - private static final String mIfaaPackName = "com.tencent.soter.soterserver"; - - private static IBinder mService = null; - private String mDevModel = null; - private static Context mContext = null; - - private static ServiceConnection ifaaconn = new ServiceConnection() { - public void onServiceConnected(ComponentName name, IBinder service) { - mService = service; - try { - mService.linkToDeath(mDeathRecipient, 0); - } catch (RemoteException e) { - Slog.e(TAG, "linkToDeath fail.", e); - } - } - - public void onServiceDisconnected(ComponentName name) { - if (mContext != null) { - Slog.i(TAG, "re-bind the service."); - initService(); - } - } - }; - - private static DeathRecipient mDeathRecipient = new DeathRecipient() { - public void binderDied() { - if (mService != null) { - Slog.d(TAG, "binderDied, unlink the service."); - mService.unlinkToDeath(mDeathRecipient, 0); - } - } - }; - - public static IFAAManagerV4 getInstance(Context context) { - if (INSTANCE == null) { - synchronized (IFAAManagerImpl.class) { - if (INSTANCE == null) { - INSTANCE = new IFAAManagerImpl(); - if (VERSION.SDK_INT >= 28) { - mContext = context; - initService(); - } - } - } - } - - return INSTANCE; - } - - private String initExtString() { - String extStr = ""; - JSONObject obj = new JSONObject(); - JSONObject keyInfo = new JSONObject(); - String xy = ""; - String wh = ""; - - if (VERSION.SDK_INT >= 28) { - xy = SystemProperties.get("persist.vendor.sys.fp.fod.location.X_Y", ""); - wh = SystemProperties.get("persist.vendor.sys.fp.fod.size.width_height", ""); - } else { - xy = SystemProperties.get("persist.sys.fp.fod.location.X_Y", ""); - wh = SystemProperties.get("persist.sys.fp.fod.size.width_height", ""); - } - - try { - if (validateVal(xy) && validateVal(wh)) { - String[] splitXy = xy.split(","); - String[] splitWh = wh.split(","); - keyInfo.put("startX", Integer.parseInt(splitXy[0])); - keyInfo.put("startY", Integer.parseInt(splitXy[1])); - keyInfo.put("width", Integer.parseInt(splitWh[0])); - keyInfo.put("height", Integer.parseInt(splitWh[1])); - keyInfo.put("navConflict", true); - obj.put("type", 0); - obj.put("fullView", keyInfo); - extStr = obj.toString(); - } else { - Slog.e(TAG, "initExtString invalidate, xy:" + xy + " wh:" + wh); - } - } catch (Exception e) { - Slog.e(TAG, "Exception , xy:" + xy + " wh:" + wh, e); - } - - return extStr; - } - - private static void initService() { - Intent ifaaIntent = new Intent(); - ifaaIntent.setClassName(mIfaaPackName, mIfaaActName); - if (!mContext.bindService(ifaaIntent, ifaaconn, 1)) { - Slog.e(TAG, "cannot bind service org.ifaa.android.manager.IFAAService"); - } - } - - private boolean validateVal(String value) { - return !"".equalsIgnoreCase(value) && value.contains(","); - } - - public String getDeviceModel() { - if (mDevModel == null) { - mDevModel = Build.MANUFACTURER + "-" + Build.DEVICE; - } - - Slog.i(TAG, "getDeviceModel deviceModel:" + mDevModel); - return mDevModel; - } - - public int getEnabled(int bioType) { - return 1 == bioType ? 1000 : 1003; - } - - public String getExtInfo(int authType, String keyExtInfo) { - Slog.i(TAG, "getExtInfo:" + authType + CA_CERT_ALIAS_DELIMITER + keyExtInfo); - return initExtString(); - } - - public int[] getIDList(int bioType) { - int[] idList = new int[]{0}; - if (1 == bioType) { - int retry_count = 10; - while (true) { - int retry_count2 = retry_count - 1; - if (retry_count <= 0) { - break; - } - if (mService == null || !mService.pingBinder()) { - try { - Thread.sleep(30); - } catch (InterruptedException e) { - Slog.e(TAG, "getIDList InterruptedException while waiting: " + e, e); - } - } else { - Parcel data = Parcel.obtain(); - Parcel reply = Parcel.obtain(); - try { - data.writeInterfaceToken(mIfaaInterfaceDesc); - data.writeInt(bioType); - mService.transact(CODE_GETIDLIST_CMD, data, reply, 0); - reply.readException(); - idList = reply.createIntArray(); - } catch (RemoteException e) { - Slog.e(TAG, "getIDList transact failed. ", e); - } catch (Throwable th) { - data.recycle(); - reply.recycle(); - } - data.recycle(); - reply.recycle(); - } - retry_count = retry_count2; - } - } - return idList; - } - - public int getSupportBIOTypes(Context context) { - int ifaaProp; - String fpVendor = ""; - - if (VERSION.SDK_INT >= 28) { - ifaaProp = SystemProperties.getInt("persist.vendor.sys.pay.ifaa", 0); - fpVendor = SystemProperties.get("persist.vendor.sys.fp.vendor", ""); - } else { - ifaaProp = SystemProperties.getInt("persist.sys.ifaa", 0); - fpVendor = SystemProperties.get("persist.sys.fp.vendor", ""); - } - - int res = "none".equalsIgnoreCase(fpVendor) ? - ifaaProp & IFAA_TYPE_IRIS : ifaaProp & (IFAA_TYPE_FINGER | IFAA_TYPE_IRIS); - - if ((res & IFAA_TYPE_FINGER) == IFAA_TYPE_FINGER && sIsFod) { - res |= IFAA_TYPE_SENSOR_FOD; - } - - Slog.i(TAG, "getSupportBIOTypes:" + ifaaProp + ", " + sIsFod + ", " + fpVendor + - ", res:" + res); - return res; - } - - public int getVersion() { - Slog.i(TAG, "getVersion sdk:" + VERSION.SDK_INT + " ifaaVer:" + sIfaaVer); - return sIfaaVer; - } - - public byte[] processCmdV2(Context context, byte[] param) { - Slog.i(TAG, "processCmdV2 sdk:" + VERSION.SDK_INT); - - if (VERSION.SDK_INT >= 28) { - int retry_count = 10; - - while (true) { - int retry_count2 = retry_count - 1; - if (retry_count <= 0) { - break; - } - if (mService == null || !mService.pingBinder()) { - Slog.i(TAG, "processCmdV2 waiting ifaaService, remain: " + retry_count2 + - " time(s)"); - try { - Thread.sleep(30); - } catch (InterruptedException e) { - Slog.e(TAG, "processCmdV2 InterruptedException while waiting: " + e, e); - } - } else { - Parcel data = Parcel.obtain(); - Parcel reply = Parcel.obtain(); - try { - data.writeInterfaceToken(mIfaaInterfaceDesc); - data.writeByteArray(param); - mService.transact(CODE_PROCESS_CMD, data, reply, 0); - reply.readException(); - return reply.createByteArray(); - } catch (RemoteException e) { - Slog.e(TAG, "processCmdV2 transact failed. ", e); - retry_count = retry_count2; - } finally { - data.recycle(); - reply.recycle(); - } - } - retry_count = retry_count2; - } - - Slog.e(TAG, "processCmdV2, return null"); - return null; - } - - HwParcel hidl_reply = new HwParcel(); - try { - IHwBinder hwService = HwBinder.getService(SERVICE_NAME, "default"); - if (hwService != null) { - HwParcel hidl_request = new HwParcel(); - hidl_request.writeInterfaceToken(INTERFACE_DESCRIPTOR); - ArrayList sbuf = new ArrayList(Arrays.asList(HwBlob.wrapArray(param))); - hidl_request.writeInt8Vector(sbuf); - hidl_request.writeInt32(sbuf.size()); - hwService.transact(CODE_PROCESS_CMD, hidl_request, hidl_reply, 0); - hidl_reply.verifySuccess(); - hidl_request.releaseTemporaryStorage(); - ArrayList val = hidl_reply.readInt8Vector(); - byte[] array = new byte[val.size()]; - for (int i = 0; i < val.size(); i++) { - array[i] = ((Byte) val.get(i)).byteValue(); - } - hidl_reply.release(); - return array; - } - } catch (RemoteException e) { - Slog.e(TAG, "transact failed. ", e); - } catch (Throwable th) { - hidl_reply.release(); - } - - hidl_reply.release(); - Slog.e(TAG, "processCmdV2, return null"); - return null; - } - - public void setExtInfo(int authType, String keyExtInfo, String valExtInfo) { - } - - public int startBIOManager(Context context, int authType) { - int res = ACTIVITY_START_FAILED; - - if (authType == IFAA_TYPE_FINGER) { - Intent intent = new Intent("android.settings.SECURITY_SETTINGS"); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - res = ACTIVITY_START_SUCCESS; - } - - Slog.i(TAG, "startBIOManager authType:" + authType + " res:" + res); - return res; - } -} diff --git a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV2.java b/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV2.java deleted file mode 100644 index d634ef0..0000000 --- a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV2.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.ifaa.android.manager; - -import android.compat.annotation.UnsupportedAppUsage; -import android.content.Context; - -public abstract class IFAAManagerV2 extends IFAAManager { - @UnsupportedAppUsage - public abstract byte[] processCmdV2(Context paramContext, byte[] paramArrayOfByte); -} diff --git a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV3.java b/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV3.java deleted file mode 100644 index 328fd75..0000000 --- a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV3.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.ifaa.android.manager; - -import android.compat.annotation.UnsupportedAppUsage; - -public abstract class IFAAManagerV3 extends IFAAManagerV2 { - @UnsupportedAppUsage - public static final String KEY_FINGERPRINT_FULLVIEW = "org.ifaa.ext.key.CUSTOM_VIEW"; - @UnsupportedAppUsage - public static final String KEY_GET_SENSOR_LOCATION = "org.ifaa.ext.key.GET_SENSOR_LOCATION"; - @UnsupportedAppUsage - public static final String VALUE_FINGERPRINT_DISABLE = "disable"; - @UnsupportedAppUsage - public static final String VLAUE_FINGERPRINT_ENABLE = "enable"; - - @UnsupportedAppUsage - public abstract String getExtInfo(int authType, String keyExtInfo); - - @UnsupportedAppUsage - public abstract void setExtInfo(int authType, String keyExtInfo, String valExtInfo); -} diff --git a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV4.java b/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV4.java deleted file mode 100644 index 2c47557..0000000 --- a/org.ifaa.android.manager/src/org/ifaa/android/manager/IFAAManagerV4.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.ifaa.android.manager; - -import android.compat.annotation.UnsupportedAppUsage; - -public abstract class IFAAManagerV4 extends IFAAManagerV3 { - @UnsupportedAppUsage - public abstract int getEnabled(int i); - - @UnsupportedAppUsage - public abstract int[] getIDList(int i); -} diff --git a/org.ifaa.android.manager/src/org/ifaa/android/manager/IIFAAService.aidl b/org.ifaa.android.manager/src/org/ifaa/android/manager/IIFAAService.aidl deleted file mode 100644 index 80937fe..0000000 --- a/org.ifaa.android.manager/src/org/ifaa/android/manager/IIFAAService.aidl +++ /dev/null @@ -1,12 +0,0 @@ -package org.ifaa.android.manager; - -interface IIFAAService { - byte[] processCmd_v2(in byte[] param); - int[] getIDList(int bioType); - int faceEnroll(String sessionId, int flags); - int faceUpgrade(int action, String path, int offset, in byte[] data, int data_len); - int faceAuthenticate_v2(String sessionId, int flags); - int faceCancel_v2(String sessionId); - byte[] faceInvokeCommand(in byte[] param); - int faceGetCellinfo(); -} -- cgit v1.2.3