Skip to content

Commit 4f9af66

Browse files
authored
fix(android): Error is null on invalidateEnrollment set to false (#258)
* fix(android): Error is null on invalidated biometric enrollment * fix: fixing gradle setup in project * fix: further gradle improvements
1 parent 3bbe789 commit 4f9af66

File tree

5 files changed

+32
-12
lines changed

5 files changed

+32
-12
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ example/node_modules
3939

4040
android/build/
4141
android/local.properties
42+
android/.gradle/
4243
android.yml
4344
*.iml
4445

android/build.gradle

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,17 @@ apply plugin: 'com.android.library'
33
def DEFAULT_COMPILE_SDK_VERSION = 29
44
def DEFAULT_BUILD_TOOLS_VERSION = "29.0.2"
55
def DEFAULT_TARGET_SDK_VERSION = 29
6-
def DEFAULT_MIN_SDK_VERSION = 16
6+
def DEFAULT_MIN_SDK_VERSION = 23
7+
8+
buildscript {
9+
repositories {
10+
jcenter()
11+
google() //in newer versions of Android Studio
12+
}
13+
dependencies {
14+
classpath 'com.android.tools.build:gradle:3.4.1'
15+
}
16+
}
717

818
android {
919
compileSdkVersion project.hasProperty('compileSdkVersion') ? project.compileSdkVersion : DEFAULT_COMPILE_SDK_VERSION
@@ -23,6 +33,13 @@ android {
2333
}
2434
}
2535

36+
allprojects {
37+
repositories {
38+
maven { url "$rootDir/../node_modules/react-native/android" } // All of React Native (JS, Android binaries) is installed from npm
39+
jcenter()
40+
google()
41+
}
42+
}
2643
dependencies {
2744
implementation 'androidx.biometric:biometric:1.0.1'
2845
implementation 'com.facebook.react:react-native:+'
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Tue May 16 10:45:51 BRT 2017
1+
#Thu Jan 14 21:51:10 CET 2021
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip

android/src/main/java/dev/mcodex/RNSensitiveInfoModule.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,53 +6,51 @@
66
import android.hardware.fingerprint.FingerprintManager;
77
import android.os.Build;
88
import android.os.CancellationSignal;
9+
import android.security.KeyPairGeneratorSpec;
910
import android.security.keystore.KeyGenParameterSpec;
1011
import android.security.keystore.KeyInfo;
11-
12-
import java.security.InvalidKeyException;
13-
14-
import android.security.KeyPairGeneratorSpec;
1512
import android.security.keystore.KeyProperties;
1613
import android.util.Base64;
1714
import android.util.Log;
15+
1816
import androidx.annotation.NonNull;
1917
import androidx.biometric.BiometricConstants;
2018
import androidx.biometric.BiometricManager;
2119
import androidx.biometric.BiometricPrompt;
20+
import androidx.fragment.app.FragmentActivity;
2221

2322
import com.facebook.react.bridge.Promise;
2423
import com.facebook.react.bridge.ReactApplicationContext;
2524
import com.facebook.react.bridge.ReactContextBaseJavaModule;
2625
import com.facebook.react.bridge.ReactMethod;
2726
import com.facebook.react.bridge.ReadableMap;
27+
import com.facebook.react.bridge.UiThreadUtil;
2828
import com.facebook.react.bridge.WritableMap;
2929
import com.facebook.react.bridge.WritableNativeMap;
30-
import com.facebook.react.bridge.UiThreadUtil;
3130
import com.facebook.react.modules.core.DeviceEventManagerModule;
3231

3332
import java.math.BigInteger;
33+
import java.security.InvalidKeyException;
3434
import java.security.Key;
3535
import java.security.KeyPairGenerator;
3636
import java.security.KeyStore;
37-
import java.security.InvalidKeyException;
3837
import java.security.PrivateKey;
3938
import java.security.PublicKey;
40-
import java.util.Calendar;
4139
import java.security.UnrecoverableKeyException;
40+
import java.util.Calendar;
4241
import java.util.HashMap;
4342
import java.util.Map;
4443
import java.util.concurrent.Executor;
4544
import java.util.concurrent.Executors;
4645

46+
import javax.crypto.BadPaddingException;
4747
import javax.crypto.Cipher;
4848
import javax.crypto.IllegalBlockSizeException;
4949
import javax.crypto.KeyGenerator;
5050
import javax.crypto.SecretKey;
5151
import javax.crypto.SecretKeyFactory;
5252
import javax.crypto.spec.GCMParameterSpec;
5353
import javax.crypto.spec.IvParameterSpec;
54-
55-
import androidx.fragment.app.FragmentActivity;
5654
import javax.security.auth.x500.X500Principal;
5755

5856
import dev.mcodex.RNSensitiveInfo.utils.AppConstants;
@@ -618,6 +616,9 @@ public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult re
618616
} else {
619617
pm.reject(e);
620618
}
619+
} catch (BadPaddingException e){
620+
Log.d("RNSensitiveInfo", "Biometric key invalid");
621+
pm.reject(AppConstants.E_BIOMETRICS_INVALIDATED, e.getCause().getMessage());
621622
} catch (SecurityException e) {
622623
pm.reject(e);
623624
} catch (Exception e) {

android/src/main/java/dev/mcodex/utils/AppConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ public interface AppConstants {
1111
String E_AUTHENTICATION_CANCELLED = "E_AUTHENTICATION_CANCELLED";
1212
String E_BIOMETRIC_NOT_SUPPORTED = "E_BIOMETRIC_NOT_SUPPORTED";
1313
String E_INIT_FAILURE = "E_INIT_FAILURE";
14+
String E_BIOMETRICS_INVALIDATED = "E_BIOMETRICS_INVALIDATED";
1415
}

0 commit comments

Comments
 (0)