Skip to content

Commit 926e2ce

Browse files
committed
Bump version to 5.0.1
XFingerprintIdentify --> XBiometricIdentify --> BizBiometricIdentify Disable forcing CryptoObject Fixed fingerprint identify not shown on WeChat withdraw Fixed switch to password manually input failed on WeChat
1 parent 4cac3d1 commit 926e2ce

17 files changed

+742
-475
lines changed

app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
applicationId "com.surcumference.fingerprintpay"
88
minSdkVersion 14
99
targetSdkVersion 33
10-
versionCode 30
11-
versionName "5.0.0"
10+
versionCode 31
11+
versionName "5.0.1"
1212
buildConfigField "String", "APP_PRODUCT_NAME", "\"FingerprintPay\""
1313
}
1414

app/src/main/java/com/surcumference/fingerprint/plugin/impl/alipay/AlipayBasePlugin.java

+15-21
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,27 @@
2020
import android.widget.ListView;
2121
import android.widget.TextView;
2222

23+
import androidx.annotation.NonNull;
24+
2325
import com.hjq.toast.Toaster;
2426
import com.surcumference.fingerprint.BuildConfig;
2527
import com.surcumference.fingerprint.Lang;
2628
import com.surcumference.fingerprint.R;
2729
import com.surcumference.fingerprint.bean.DigitPasswordKeyPadInfo;
2830
import com.surcumference.fingerprint.plugin.inf.IAppPlugin;
2931
import com.surcumference.fingerprint.plugin.inf.OnFingerprintVerificationOKListener;
30-
import com.surcumference.fingerprint.util.AESUtils;
3132
import com.surcumference.fingerprint.util.ActivityViewObserver;
3233
import com.surcumference.fingerprint.util.AlipayVersionControl;
3334
import com.surcumference.fingerprint.util.ApplicationUtils;
35+
import com.surcumference.fingerprint.util.BizBiometricIdentify;
3436
import com.surcumference.fingerprint.util.BlackListUtils;
3537
import com.surcumference.fingerprint.util.Config;
3638
import com.surcumference.fingerprint.util.DpUtils;
3739
import com.surcumference.fingerprint.util.ImageUtils;
3840
import com.surcumference.fingerprint.util.StyleUtils;
3941
import com.surcumference.fingerprint.util.Task;
4042
import com.surcumference.fingerprint.util.ViewUtils;
41-
import com.surcumference.fingerprint.util.XFingerprintIdentify;
43+
import com.surcumference.fingerprint.util.XBiometricIdentify;
4244
import com.surcumference.fingerprint.util.drawable.XDrawable;
4345
import com.surcumference.fingerprint.util.log.L;
4446
import com.surcumference.fingerprint.view.AlipayPayView;
@@ -48,16 +50,14 @@
4850
import java.util.ArrayList;
4951
import java.util.List;
5052

51-
import javax.crypto.Cipher;
52-
5353
public class AlipayBasePlugin implements IAppPlugin {
5454

5555

5656
private AlertDialog mFingerPrintAlertDialog;
5757
private boolean mPwdActivityDontShowFlag;
5858
private int mPwdActivityReShowDelayTimeMsec;
5959

60-
private XFingerprintIdentify mFingerprintIdentify;
60+
private XBiometricIdentify mFingerprintIdentify;
6161
private Activity mCurrentActivity;
6262

6363
private boolean mIsViewTreeObserverFirst;
@@ -198,13 +198,13 @@ public void onActivityResumed(Activity activity) {
198198
}
199199
}
200200

201-
public void initFingerPrintLock(final Context context, AlertDialog dialog,
201+
public void initFingerPrintLock(final Context context ,AlertDialog dialog, String passwordEncrypted,
202202
OnFingerprintVerificationOKListener onSuccessUnlockCallback) {
203-
mFingerprintIdentify = new XFingerprintIdentify(context)
204-
.startIdentify(new XFingerprintIdentify.IdentifyListener() {
203+
mFingerprintIdentify = new BizBiometricIdentify(context)
204+
.decryptPasscode(passwordEncrypted, new BizBiometricIdentify.IdentifyListener() {
205205

206206
@Override
207-
public void onInited(XFingerprintIdentify identify) {
207+
public void onInited(BizBiometricIdentify identify) {
208208
super.onInited(identify);
209209
if (identify.isUsingBiometricApi()) {
210210
ViewUtils.setAlpha(dialog, 0);
@@ -213,13 +213,13 @@ public void onInited(XFingerprintIdentify identify) {
213213
}
214214

215215
@Override
216-
public void onSucceed(XFingerprintIdentify target, Cipher cipher) {
217-
super.onSucceed(target, cipher);
218-
onSuccessUnlockCallback.onFingerprintVerificationOK(cipher);
216+
public void onDecryptionSuccess(BizBiometricIdentify identify, @NonNull String decryptedContent) {
217+
super.onDecryptionSuccess(identify, decryptedContent);
218+
onSuccessUnlockCallback.onFingerprintVerificationOK(decryptedContent);
219219
}
220220

221221
@Override
222-
public void onFailed(XFingerprintIdentify target, FingerprintIdentifyFailInfo failInfo) {
222+
public void onFailed(BizBiometricIdentify target, FingerprintIdentifyFailInfo failInfo) {
223223
super.onFailed(target, failInfo);
224224
if (dialog != null) {
225225
ViewUtils.setAlpha(dialog, 1);
@@ -259,14 +259,8 @@ public boolean showFingerPrintDialog(final Activity activity) {
259259
clickDigitPasswordWidget(activity);
260260
AlipayPayView alipayPayView = new AlipayPayView(context)
261261
.withOnShowListener((target) -> {
262-
initFingerPrintLock(context, target.getDialog(), (cipher) -> {
262+
initFingerPrintLock(context, target.getDialog(), passwordEncrypted, (password) -> {
263263
BlackListUtils.applyIfNeeded(context);
264-
String password = AESUtils.decrypt(cipher, passwordEncrypted);
265-
if (TextUtils.isEmpty(password)) {
266-
Toaster.showShort(Lang.getString(R.id.toast_fingerprint_password_dec_failed));
267-
return;
268-
}
269-
270264
Runnable onCompleteRunnable = () -> {
271265
mPwdActivityReShowDelayTimeMsec = 1000;
272266
AlertDialog dialog = mFingerPrintAlertDialog;
@@ -309,7 +303,7 @@ public boolean showFingerPrintDialog(final Activity activity) {
309303
target.getDialog().dismiss();
310304
activity.onBackPressed();
311305
}).withOnDismissListener(v -> {
312-
XFingerprintIdentify fingerprintIdentify = mFingerprintIdentify;
306+
XBiometricIdentify fingerprintIdentify = mFingerprintIdentify;
313307
if (fingerprintIdentify != null) {
314308
fingerprintIdentify.cancelIdentify();
315309
}

app/src/main/java/com/surcumference/fingerprint/plugin/impl/qq/QQBasePlugin.java

+16-19
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import android.widget.LinearLayout;
2222
import android.widget.TextView;
2323

24+
import androidx.annotation.NonNull;
25+
2426
import com.hjq.toast.Toaster;
2527
import com.surcumference.fingerprint.BuildConfig;
2628
import com.surcumference.fingerprint.Constant;
@@ -29,8 +31,8 @@
2931
import com.surcumference.fingerprint.plugin.inf.IAppPlugin;
3032
import com.surcumference.fingerprint.plugin.inf.IMockCurrentUser;
3133
import com.surcumference.fingerprint.plugin.inf.OnFingerprintVerificationOKListener;
32-
import com.surcumference.fingerprint.util.AESUtils;
3334
import com.surcumference.fingerprint.util.ApplicationUtils;
35+
import com.surcumference.fingerprint.util.BizBiometricIdentify;
3436
import com.surcumference.fingerprint.util.Config;
3537
import com.surcumference.fingerprint.util.DpUtils;
3638
import com.surcumference.fingerprint.util.ImageUtils;
@@ -39,7 +41,7 @@
3941
import com.surcumference.fingerprint.util.StyleUtils;
4042
import com.surcumference.fingerprint.util.Task;
4143
import com.surcumference.fingerprint.util.ViewUtils;
42-
import com.surcumference.fingerprint.util.XFingerprintIdentify;
44+
import com.surcumference.fingerprint.util.XBiometricIdentify;
4345
import com.surcumference.fingerprint.util.log.L;
4446
import com.surcumference.fingerprint.util.paydialog.QQPayDialog;
4547
import com.surcumference.fingerprint.view.SettingsView;
@@ -49,8 +51,6 @@
4951
import java.util.List;
5052
import java.util.WeakHashMap;
5153

52-
import javax.crypto.Cipher;
53-
5454
public class QQBasePlugin implements IAppPlugin, IMockCurrentUser {
5555

5656
private static final String TAG_FINGER_PRINT_IMAGE = "FINGER_PRINT_IMAGE";
@@ -59,7 +59,7 @@ public class QQBasePlugin implements IAppPlugin, IMockCurrentUser {
5959
private static final String TAG_ACTIVITY_PAY = "TAG_ACTIVITY_PAY";
6060
private static final String TAG_ACTIVITY_FIRST_RESUME = "TAG_ACTIVITY_FIRST_RESUME";
6161

62-
private XFingerprintIdentify mFingerprintIdentify;
62+
private XBiometricIdentify mFingerprintIdentify;
6363
private LinearLayout mMenuItemLLayout;
6464

6565
protected boolean mMockCurrentUser = false;
@@ -273,12 +273,7 @@ private synchronized void initPayActivity(Activity activity, int retryDelay, int
273273
if (payDialog.withdrawTitleTextView != null) {
274274
payDialog.withdrawTitleTextView.setText("使用指纹验证身份");
275275
}
276-
initFingerPrintLock(context, (cipher) -> { // success
277-
String password = AESUtils.decrypt(cipher, passwordEncrypted);
278-
if (TextUtils.isEmpty(password)) {
279-
Toaster.showShort(Lang.getString(R.id.toast_fingerprint_password_dec_failed));
280-
return;
281-
}
276+
initFingerPrintLock(context, passwordEncrypted, (password) -> { // success
282277
payDialog.inputEditText.setText(password);
283278
if (longPassword) {
284279
payDialog.okButton.performClick();
@@ -388,20 +383,22 @@ private View prepareFingerprintView(Context context) {
388383
return linearLayout;
389384
}
390385

391-
public void initFingerPrintLock(final Context context, OnFingerprintVerificationOKListener onSuccessUnlockCallback, final Runnable onFailureUnlockCallback) {
386+
public void initFingerPrintLock(final Context context, String passwordEncrypted,
387+
OnFingerprintVerificationOKListener onSuccessUnlockCallback, final Runnable onFailureUnlockCallback) {
392388
L.d("initFingerPrintLock");
393389
cancelFingerprintIdentify();
394-
mFingerprintIdentify = new XFingerprintIdentify(context)
390+
mFingerprintIdentify = new BizBiometricIdentify(context)
395391
.withMockCurrentUserCallback(this)
396-
.startIdentify(new XFingerprintIdentify.IdentifyListener() {
392+
.decryptPasscode(passwordEncrypted, new BizBiometricIdentify.IdentifyListener() {
393+
397394
@Override
398-
public void onSucceed(XFingerprintIdentify target, Cipher cipher) {
399-
super.onSucceed(target, cipher);
400-
onSuccessUnlockCallback.onFingerprintVerificationOK(cipher);
395+
public void onDecryptionSuccess(BizBiometricIdentify identify, @NonNull String decryptedContent) {
396+
super.onDecryptionSuccess(identify, decryptedContent);
397+
onSuccessUnlockCallback.onFingerprintVerificationOK(decryptedContent);
401398
}
402399

403400
@Override
404-
public void onFailed(XFingerprintIdentify target, FingerprintIdentifyFailInfo failInfo) {
401+
public void onFailed(BizBiometricIdentify target, FingerprintIdentifyFailInfo failInfo) {
405402
super.onFailed(target, failInfo);
406403
onFailureUnlockCallback.run();
407404
}
@@ -410,7 +407,7 @@ public void onFailed(XFingerprintIdentify target, FingerprintIdentifyFailInfo fa
410407

411408
private void cancelFingerprintIdentify() {
412409
L.d("cancelFingerprintIdentify");
413-
XFingerprintIdentify fingerprintIdentify = mFingerprintIdentify;
410+
XBiometricIdentify fingerprintIdentify = mFingerprintIdentify;
414411
if (fingerprintIdentify == null) {
415412
return;
416413
}

app/src/main/java/com/surcumference/fingerprint/plugin/impl/qq/QQBasePlugin_8_2_11.java

+17-20
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,25 @@
1616
import android.widget.LinearLayout;
1717
import android.widget.TextView;
1818

19+
import androidx.annotation.NonNull;
20+
1921
import com.hjq.toast.Toaster;
2022
import com.surcumference.fingerprint.BuildConfig;
2123
import com.surcumference.fingerprint.Lang;
2224
import com.surcumference.fingerprint.R;
2325
import com.surcumference.fingerprint.plugin.inf.IAppPlugin;
2426
import com.surcumference.fingerprint.plugin.inf.IMockCurrentUser;
2527
import com.surcumference.fingerprint.plugin.inf.OnFingerprintVerificationOKListener;
26-
import com.surcumference.fingerprint.util.AESUtils;
2728
import com.surcumference.fingerprint.util.ApplicationUtils;
29+
import com.surcumference.fingerprint.util.BizBiometricIdentify;
2830
import com.surcumference.fingerprint.util.Config;
2931
import com.surcumference.fingerprint.util.DpUtils;
3032
import com.surcumference.fingerprint.util.KeyboardUtils;
3133
import com.surcumference.fingerprint.util.QQUtils;
3234
import com.surcumference.fingerprint.util.StyleUtils;
3335
import com.surcumference.fingerprint.util.Task;
3436
import com.surcumference.fingerprint.util.ViewUtils;
35-
import com.surcumference.fingerprint.util.XFingerprintIdentify;
37+
import com.surcumference.fingerprint.util.XBiometricIdentify;
3638
import com.surcumference.fingerprint.util.drawable.XDrawable;
3739
import com.surcumference.fingerprint.util.log.L;
3840
import com.surcumference.fingerprint.util.paydialog.QQPayDialog;
@@ -43,8 +45,6 @@
4345
import java.util.List;
4446
import java.util.WeakHashMap;
4547

46-
import javax.crypto.Cipher;
47-
4848
public class QQBasePlugin_8_2_11 implements IAppPlugin, IMockCurrentUser {
4949

5050
private static final String TAG_FINGER_PRINT_IMAGE = "FINGER_PRINT_IMAGE";
@@ -56,7 +56,7 @@ public class QQBasePlugin_8_2_11 implements IAppPlugin, IMockCurrentUser {
5656
protected static final int QQ_VERSION_CODE_7_3_0 = 750;
5757
protected static final int QQ_VERSION_CODE_8_8_83 = 2654;
5858

59-
private XFingerprintIdentify mFingerprintIdentify;
59+
private XBiometricIdentify mFingerprintIdentify;
6060
private LinearLayout mMenuItemLLayout;
6161

6262
protected boolean mMockCurrentUser = false;
@@ -297,12 +297,7 @@ private synchronized void initPayActivity(Activity activity, int retryDelay, int
297297
}
298298

299299
mCurrentPayActivity = activity;
300-
initFingerPrintLock(context, (cipher) -> { // success
301-
String password = AESUtils.decrypt(cipher, passwordEncrypted);
302-
if (TextUtils.isEmpty(password)) {
303-
Toaster.showShort(Lang.getString(R.id.toast_fingerprint_password_dec_failed));
304-
return;
305-
}
300+
initFingerPrintLock(context, passwordEncrypted, (password) -> { // success
306301
payDialog.inputEditText.setText(password);
307302
if (longPassword) {
308303
payDialog.okButton.performClick();
@@ -370,20 +365,22 @@ private View prepareFingerprintView(Context context) {
370365
return textView;
371366
}
372367

373-
public void initFingerPrintLock(final Context context, OnFingerprintVerificationOKListener onSuccessUnlockCallback, final Runnable onFailureUnlockCallback) {
368+
public void initFingerPrintLock(final Context context, String passwordEncrypted,
369+
OnFingerprintVerificationOKListener onSuccessUnlockCallback, final Runnable onFailureUnlockCallback) {
374370
L.d("initFingerPrintLock");
375371
cancelFingerprintIdentify();
376-
mFingerprintIdentify = new XFingerprintIdentify(context)
372+
mFingerprintIdentify = new BizBiometricIdentify(context)
377373
.withMockCurrentUserCallback(this)
378-
.startIdentify(new XFingerprintIdentify.IdentifyListener() {
374+
.decryptPasscode(passwordEncrypted, new BizBiometricIdentify.IdentifyListener() {
375+
379376
@Override
380-
public void onSucceed(XFingerprintIdentify target, Cipher cipher) {
381-
super.onSucceed(target, cipher);
382-
onSuccessUnlockCallback.onFingerprintVerificationOK(cipher);
377+
public void onDecryptionSuccess(BizBiometricIdentify identify, @NonNull String decryptedContent) {
378+
super.onDecryptionSuccess(identify, decryptedContent);
379+
onSuccessUnlockCallback.onFingerprintVerificationOK(decryptedContent);
383380
}
384381

385382
@Override
386-
public void onFailed(XFingerprintIdentify target, FingerprintIdentifyFailInfo failInfo) {
383+
public void onFailed(BizBiometricIdentify target, FingerprintIdentifyFailInfo failInfo) {
387384
super.onFailed(target, failInfo);
388385
onFailureUnlockCallback.run();
389386
}
@@ -392,7 +389,7 @@ public void onFailed(XFingerprintIdentify target, FingerprintIdentifyFailInfo fa
392389

393390
private void cancelFingerprintIdentify() {
394391
L.d("cancelFingerprintIdentify");
395-
XFingerprintIdentify fingerprintIdentify = mFingerprintIdentify;
392+
XBiometricIdentify fingerprintIdentify = mFingerprintIdentify;
396393
if (fingerprintIdentify == null) {
397394
return;
398395
}
@@ -404,7 +401,7 @@ private void cancelFingerprintIdentify() {
404401

405402
private void resumeFingerprintIdentify() {
406403
L.d("resumeFingerprintIdentify");
407-
XFingerprintIdentify fingerprintIdentify = mFingerprintIdentify;
404+
XBiometricIdentify fingerprintIdentify = mFingerprintIdentify;
408405
if (fingerprintIdentify == null) {
409406
return;
410407
}

0 commit comments

Comments
 (0)