正在查看: SpeedCash v6.5.1482 应用的 FingerprintActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: SpeedCash v6.5.1482 应用的 FingerprintActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.bm.sc.bebasbayar.ui.activity.auth;
import android.annotation.TargetApi;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.security.keystore.KeyGenParameterSpec;
import android.security.keystore.KeyPermanentlyInvalidatedException;
import android.util.Base64;
import android.view.View;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.biometric.BiometricPrompt;
import androidx.core.content.ContextCompat;
import com.bm.sc.auth.ui.BridgeActivity;
import com.bm.sc.bebasbayar.R;
import com.bm.sc.bebasbayar.helper.Affinity;
import com.bm.sc.bebasbayar.helper.FirebaseHelper;
import com.bm.sc.bebasbayar.iface.BBCallback;
import com.bm.sc.bebasbayar.setting.session.AppSession;
import com.bm.sc.bebasbayar.ui.activity.auth.FingerprintActivity;
import com.bm.sc.util.android.Device;
import java.io.IOException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.Objects;
import java.util.concurrent.Executor;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
public class FingerprintActivity extends AuthActivity implements View.OnClickListener {
public KeyStore d;
public Cipher e;
public AppSession f;
public ArrayList<String> g;
public Uri h;
public Executor i;
public BiometricPrompt j;
public BiometricPrompt.PromptInfo k;
public class a extends BiometricPrompt.AuthenticationCallback {
public a() {
}
public void b(int i, Boolean bool) {
if (!bool.booleanValue()) {
FingerprintActivity.this.j.cancelAuthentication();
} else {
FingerprintActivity.this.startActivityForResult(new Intent("android.settings.SETTINGS"), 11111);
}
}
public void onAuthenticationError(int i, @NonNull CharSequence charSequence) {
super.onAuthenticationError(i, charSequence);
if (i == 11) {
AppCompatActivity appCompatActivity = FingerprintActivity.this;
Affinity.confirm(appCompatActivity, appCompatActivity.getString(R.string.title_warning), FingerprintActivity.this.getString(R.string.title_lock_finger3), new BBCallback() {
@Override
public final void do_callback(int i2, Object obj) {
FingerprintActivity.a.this.b(i2, (Boolean) obj);
}
});
}
}
public void onAuthenticationFailed() {
super.onAuthenticationFailed();
}
public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult authenticationResult) {
super.onAuthenticationSucceeded(authenticationResult);
AppSession appSession = FingerprintActivity.this.f;
BiometricPrompt.CryptoObject cryptoObject = authenticationResult.getCryptoObject();
Objects.requireNonNull(cryptoObject);
Cipher cipher = cryptoObject.getCipher();
Objects.requireNonNull(cipher);
appSession.store(AppSession.PROPERTY_FINGERPRINT, Base64.encodeToString(cipher.getIV(), 0));
FingerprintActivity.this.r();
}
}
public static Bundle getBundle(ArrayList<String> arrayList, Uri uri) {
Bundle bundle = new Bundle();
bundle.putStringArrayList("login_data", arrayList);
bundle.putParcelable("uri_data", uri);
return bundle;
}
public void p(int i, Boolean bool) {
if (bool.booleanValue()) {
startActivityForResult(new Intent("android.settings.SETTINGS"), 11111);
} else {
this.j.cancelAuthentication();
}
}
public void q(int i, Boolean bool) {
if (bool.booleanValue()) {
startActivity(new Intent("android.settings.SETTINGS"));
}
}
@Override
public int getLayoutResource() {
return R.layout.activity_fingerprint;
}
@Override
public int getRootLayoutId() {
return R.id.layout_root;
}
public final void m() {
Executor mainExecutor = ContextCompat.getMainExecutor(this);
this.i = mainExecutor;
this.j = new BiometricPrompt(this, mainExecutor, new a());
this.k = new BiometricPrompt.PromptInfo.Builder().setTitle(getString(R.string.label_dialog_login_title)).setSubtitle(getString(R.string.label_dialog_login_subtitle)).setNegativeButtonText("Kembali").build();
if (Affinity.checkFingerprint(this) != 0 && Affinity.checkFingerprint(this) != -1) {
if (Affinity.checkFingerprint(this) == 11) {
Affinity.confirm(this, getString(R.string.title_warning), getString(R.string.title_lock_finger3), new BBCallback() {
@Override
public final void do_callback(int i, Object obj) {
FingerprintActivity.this.p(i, (Boolean) obj);
}
});
}
} else {
o();
if (n()) {
this.j.authenticate(this.k, new BiometricPrompt.CryptoObject(this.e));
}
}
}
@TargetApi(23)
public final boolean n() {
try {
this.e = Cipher.getInstance("AES/CBC/PKCS7Padding");
try {
this.d.load(null);
this.e.init(1, (SecretKey) this.d.getKey("BebasBayar", null));
return true;
} catch (KeyPermanentlyInvalidatedException unused) {
return false;
} catch (IOException e) {
e = e;
throw new RuntimeException("Failed to init Cipher", e);
} catch (InvalidKeyException e2) {
e = e2;
throw new RuntimeException("Failed to init Cipher", e);
} catch (KeyStoreException e3) {
e = e3;
throw new RuntimeException("Failed to init Cipher", e);
} catch (NoSuchAlgorithmException e4) {
e = e4;
throw new RuntimeException("Failed to init Cipher", e);
} catch (UnrecoverableKeyException e5) {
e = e5;
throw new RuntimeException("Failed to init Cipher", e);
} catch (CertificateException e6) {
e = e6;
throw new RuntimeException("Failed to init Cipher", e);
}
} catch (NoSuchAlgorithmException | NoSuchPaddingException e7) {
throw new RuntimeException("Failed to get Cipher!", e7);
}
}
@TargetApi(23)
public final void o() {
try {
this.d = KeyStore.getInstance("AndroidKeyStore");
} catch (Exception e) {
e.printStackTrace();
}
try {
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES", "AndroidKeyStore");
try {
this.d.load(null);
keyGenerator.init(new KeyGenParameterSpec.Builder("BebasBayar", 3).setBlockModes("CBC").setUserAuthenticationRequired(false).setEncryptionPaddings("PKCS7Padding").build());
keyGenerator.generateKey();
} catch (IOException | InvalidAlgorithmParameterException | NoSuchAlgorithmException | CertificateException e2) {
throw new RuntimeException(e2);
}
} catch (NoSuchAlgorithmException | NoSuchProviderException e3) {
throw new RuntimeException("Failed to get KeyGenerator instance", e3);
}
}
public void onActivityResult(int i, int i2, @Nullable Intent intent) {
super/*androidx.fragment.app.FragmentActivity*/.onActivityResult(i, i2, intent);
if (i == 11111) {
if (Affinity.checkFingerprint(this) != 0 && Affinity.checkFingerprint(this) != -1) {
this.j.cancelAuthentication();
return;
}
o();
if (n()) {
this.j.authenticate(this.k, new BiometricPrompt.CryptoObject(this.e));
}
}
}
public void onBackPressed() {
r();
}
@Override
public void onClick(View view) {
if (view.getId() == 2131362424) {
r();
} else if (view.getId() == 2131362462) {
if (Device.isFingerprintAuthAvailable(this)) {
m();
} else {
Affinity.info(this, 2, getString(R.string.title_warning), getString(R.string.title_lock_finger3), new BBCallback() {
@Override
public final void do_callback(int i, Object obj) {
FingerprintActivity.this.q(i, (Boolean) obj);
}
});
}
}
}
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
if (bundle != null) {
this.g = bundle.getStringArrayList("login_data");
this.h = (Uri) bundle.getParcelable("uri_data");
} else if (getIntent().getExtras() != null) {
this.g = getIntent().getExtras().getStringArrayList("login_data");
this.h = (Uri) getIntent().getExtras().getParcelable("uri_data");
} else {
this.g = new ArrayList<>();
this.h = null;
}
this.i = ContextCompat.getMainExecutor(this);
this.f = new AppSession(this);
findViewById(R.id.btn_skip).setOnClickListener(this);
findViewById(R.id.btn_verify).setOnClickListener(this);
}
@Override
@CallSuper
public void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
bundle.putStringArrayList("login_data", this.g);
bundle.putParcelable("uri_data", this.h);
}
public final void r() {
FirebaseHelper.sendFCMRegId(this, this.f.retrieve(AppSession.PROPERTY_MERCHANT_ID));
Affinity.runAllServices(this, true);
Affinity.purge(this, BridgeActivity.class, BridgeActivity.INSTANCE.getBundle(this.g, this.h));
}
}