mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Solve VerifyError exception for old device
This commit is contained in:
@@ -20,7 +20,6 @@
|
||||
package com.keepassdroid.fingerprint;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.KeyguardManager;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
@@ -32,8 +31,6 @@ import android.support.v4.hardware.fingerprint.FingerprintManagerCompat;
|
||||
import android.support.v4.os.CancellationSignal;
|
||||
import android.util.Base64;
|
||||
|
||||
import com.keepassdroid.compat.BuildCompat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
@@ -47,6 +44,7 @@ import javax.crypto.KeyGenerator;
|
||||
import javax.crypto.SecretKey;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
public class FingerPrintHelper {
|
||||
|
||||
private static final String FINGERPRINT_KEYSTORE_KEY = "example-key";
|
||||
@@ -89,7 +87,6 @@ public class FingerPrintHelper {
|
||||
}
|
||||
}
|
||||
|
||||
@TargetApi(BuildCompat.VERSION_CODE_M)
|
||||
public FingerPrintHelper(
|
||||
final Context context,
|
||||
final FingerPrintCallback fingerPrintCallback) {
|
||||
@@ -123,8 +120,7 @@ public class FingerPrintHelper {
|
||||
}
|
||||
|
||||
public static boolean isFingerprintSupported(FingerprintManagerCompat fingerprintManager) {
|
||||
return Build.VERSION.SDK_INT >= BuildCompat.VERSION_CODE_M
|
||||
&& fingerprintManager != null
|
||||
return fingerprintManager != null
|
||||
&& fingerprintManager.isHardwareDetected();
|
||||
}
|
||||
|
||||
@@ -141,7 +137,6 @@ public class FingerPrintHelper {
|
||||
return isFingerprintInit;
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
public void initEncryptData() {
|
||||
if (!isFingerprintInitialized()) {
|
||||
return;
|
||||
@@ -182,7 +177,6 @@ public class FingerPrintHelper {
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
||||
public void initDecryptData(final String ivSpecValue) {
|
||||
if (!isFingerprintInitialized()) {
|
||||
return;
|
||||
|
||||
@@ -107,8 +107,14 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat {
|
||||
}
|
||||
});
|
||||
|
||||
SwitchPreference fingerprintEnablePreference = (SwitchPreference) findPreference(getString(R.string.fingerprint_enable_key));
|
||||
if (!FingerPrintHelper.isFingerprintSupported(FingerprintManagerCompat.from(getContext()))) {
|
||||
SwitchPreference fingerprintEnablePreference =
|
||||
(SwitchPreference) findPreference(getString(R.string.fingerprint_enable_key));
|
||||
// < M solve verifyError exception
|
||||
boolean fingerprintSupported = false;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
|
||||
fingerprintSupported = FingerPrintHelper.isFingerprintSupported(
|
||||
FingerprintManagerCompat.from(getContext()));
|
||||
if (!fingerprintSupported) {
|
||||
// False if under Marshmallow
|
||||
fingerprintEnablePreference.setChecked(false);
|
||||
fingerprintEnablePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
@@ -123,45 +129,49 @@ public class NestedSettingsFragment extends PreferenceFragmentCompat {
|
||||
}
|
||||
|
||||
Preference deleteKeysFingerprints = findPreference(getString(R.string.fingerprint_delete_all_key));
|
||||
deleteKeysFingerprints.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
new AlertDialog.Builder(getContext())
|
||||
.setMessage(getResources().getString(R.string.fingerprint_delete_all_warning))
|
||||
.setIcon(getResources().getDrawable(
|
||||
android.R.drawable.ic_dialog_alert))
|
||||
.setPositiveButton(
|
||||
getResources().getString(android.R.string.yes),
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog,
|
||||
int which) {
|
||||
FingerPrintHelper.deleteEntryKeyInKeystoreForFingerprints(
|
||||
getContext(),
|
||||
new FingerPrintHelper.FingerPrintErrorCallback() {
|
||||
@Override
|
||||
public void onInvalidKeyException(Exception e) {}
|
||||
|
||||
@Override
|
||||
public void onFingerPrintException(Exception e) {
|
||||
Toast.makeText(getContext(), R.string.fingerprint_error, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
PrefsUtil.deleteAllValuesFromNoBackupPreferences(getContext());
|
||||
}
|
||||
})
|
||||
.setNegativeButton(
|
||||
getResources().getString(android.R.string.no),
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog,
|
||||
int which) {
|
||||
}
|
||||
}).show();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
if (!fingerprintSupported) {
|
||||
deleteKeysFingerprints.setEnabled(false);
|
||||
} else {
|
||||
deleteKeysFingerprints.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
new AlertDialog.Builder(getContext())
|
||||
.setMessage(getResources().getString(R.string.fingerprint_delete_all_warning))
|
||||
.setIcon(getResources().getDrawable(
|
||||
android.R.drawable.ic_dialog_alert))
|
||||
.setPositiveButton(
|
||||
getResources().getString(android.R.string.yes),
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog,
|
||||
int which) {
|
||||
FingerPrintHelper.deleteEntryKeyInKeystoreForFingerprints(
|
||||
getContext(),
|
||||
new FingerPrintHelper.FingerPrintErrorCallback() {
|
||||
@Override
|
||||
public void onInvalidKeyException(Exception e) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFingerPrintException(Exception e) {
|
||||
Toast.makeText(getContext(), R.string.fingerprint_error, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
});
|
||||
PrefsUtil.deleteAllValuesFromNoBackupPreferences(getContext());
|
||||
}
|
||||
})
|
||||
.setNegativeButton(
|
||||
getResources().getString(android.R.string.no),
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog,
|
||||
int which) {
|
||||
}
|
||||
}).show();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
||||
case NESTED_SCREEN_DB_KEY:
|
||||
|
||||
Reference in New Issue
Block a user