Skip to content

Commit c24f4e0

Browse files
committed
fix(app): add check for strongbox
1 parent 05a98d5 commit c24f4e0

File tree

2 files changed

+4
-35
lines changed

2 files changed

+4
-35
lines changed

flutter_secure_storage/android/src/main/java/com/it_nomads/fluttersecurestorage/FlutterSecureStorage.java

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -94,40 +94,6 @@ public void delete(String key) {
9494
public void deleteAll() {
9595
encryptedPreferences.edit().clear().apply();
9696
}
97-
98-
public boolean isStrongBoxAvailable() {
99-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
100-
try {
101-
// Check if the device supports StrongBox
102-
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
103-
keyStore.load(null);
104-
105-
String keyAlias = "strongboxCheck";
106-
KeyGenParameterSpec keyGenParameterSpec = new KeyGenParameterSpec.Builder(keyAlias,
107-
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
108-
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
109-
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
110-
.setKeySize(256)
111-
.build();
112-
113-
KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
114-
keyGenerator.init(keyGenParameterSpec);
115-
keyGenerator.generateKey();
116-
117-
// Check if the key was generated in StrongBox
118-
KeyInfo keyInfo = (KeyInfo) KeyFactory.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore")
119-
.getKeySpec(keyGenerator.generateKey(), KeyInfo.class);
120-
121-
return keyInfo.isInsideStrongBox();
122-
123-
} catch (Exception e) {
124-
Log.e(TAG, "StrongBox check failed", e);
125-
return false;
126-
}
127-
}
128-
129-
return false;
130-
}
13197

13298

13399
public Map<String, String> readAll() {

flutter_secure_storage/android/src/main/java/com/it_nomads/fluttersecurestorage/FlutterSecureStoragePlugin.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.it_nomads.fluttersecurestorage;
22

3+
import android.content.pm.PackageManager;
34
import android.os.Handler;
45
import android.os.HandlerThread;
56
import android.os.Looper;
@@ -24,6 +25,7 @@ public class FlutterSecureStoragePlugin implements MethodCallHandler, FlutterPlu
2425
private HandlerThread workerThread;
2526
private Handler workerThreadHandler;
2627
private FlutterPluginBinding binding;
28+
private boolean isStrongBoxAvailable;
2729

2830
@Override
2931
public void onAttachedToEngine(FlutterPluginBinding binding) {
@@ -52,6 +54,7 @@ private boolean initSecureStorage(Result result, Map<String, Object> options) {
5254
if (secureStorage != null) return true;
5355

5456
try {
57+
isStrongBoxAvailable = getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_STRONGBOX_KEYSTORE);
5558
secureStorage = new FlutterSecureStorage(binding.getApplicationContext(), options);
5659
return true;
5760
} catch (Exception e) {
@@ -168,7 +171,7 @@ private void handleDeleteAll(Result result) {
168171
}
169172

170173
private void handleStrongBoxAvailable(Result result) {
171-
result.success(secureStorage.isStrongBoxAvailable());
174+
result.success(isStrongBoxAvailable);
172175
}
173176

174177
@SuppressWarnings("unchecked")

0 commit comments

Comments
 (0)