joy_biometric_storage

Last updated:

0 purchases

joy_biometric_storage Image
joy_biometric_storage Images
Add to Cart

Description:

joy biometric storage

biometric_storage #

Encrypted file store, optionally secured by biometric lock
for Android, iOS, MacOS and partial support for Linux, Windows and Web.
Meant as a way to store small data in a hardware encrypted fashion. E.g. to
store passwords, secret keys, etc. but not massive amounts
of data.

Android: Uses androidx with KeyStore.
iOS and MacOS: LocalAuthentication with KeyChain.
Linux: Stores values in Keyring using libsecret. (No biometric authentication support).
Windows: Uses wincreds.h to store into read/write into credential store.
Web: Warning Uses unauthenticated, unencrypted storage in localStorage.
If you have a better idea for secure storage on web platform, please open an Issue.

Check out AuthPass Password Manager for a app which
makes heavy use of this plugin.
Getting Started #
Installation #
Android

Requirements:


Android: API Level >= 23 (android/app/build.gradle minSdkVersion 23)


Make sure to use the latest kotlin version:

android/build.gradle: ext.kotlin_version = '1.4.31'



MainActivity must extend FlutterFragmentActivity


Theme for the main activity must use Theme.AppCompat thme.
(Otherwise there will be crases on Android < 29)
For example:
AndroidManifest.xml:
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
copied to clipboard
xml/styles.xml:
<style name="LaunchTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>

<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
copied to clipboard




Resources

https://developer.android.com/topic/security/data
https://developer.android.com/topic/security/best-practices

iOS
https://developer.apple.com/documentation/localauthentication/logging_a_user_into_your_app_with_face_id_or_touch_id

include the NSFaceIDUsageDescription key in your app’s Info.plist file
Requires at least iOS 9

Known Issue: since iOS 15 the simulator seem to no longer support local authentication:
https://developer.apple.com/forums/thread/685773
Mac OS

include the NSFaceIDUsageDescription key in your app’s Info.plist file
enable keychain sharing and signing. (not sure why this is required. but without it
You will probably see an error like:

SecurityError, Error while writing data: -34018: A required entitlement isn't present.


Requires at least Mac OS 10.12

Usage #

You basically only need 4 methods.


Check whether biometric authentication is supported by the device

final response = await BiometricStorage().canAuthenticate()
if (response != CanAuthenticateResponse.success) {
// panic..
}
copied to clipboard

Create the access object

final store = BiometricStorage().getStorage('mystorage');
copied to clipboard

Read data

final data = await storageFile.read();
copied to clipboard

Write data

final myNewData = 'Hello World';
await storageFile.write(myNewData);
copied to clipboard
See also the API documentation: https://pub.dev/documentation/biometric_storage/latest/biometric_storage/BiometricStorageFile-class.html#instance-methods

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.