{"id":13784688,"url":"https://github.com/authpass/biometric_storage","last_synced_at":"2025-05-15T23:02:32.021Z","repository":{"id":38308000,"uuid":"205848077","full_name":"authpass/biometric_storage","owner":"authpass","description":"Flutter plugin to store data behind biometric authentication (ie. fingerprint)","archived":false,"fork":false,"pushed_at":"2025-01-16T10:20:10.000Z","size":1036,"stargazers_count":190,"open_issues_count":48,"forks_count":109,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-08T09:12:25.199Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/biometric_storage","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/authpass.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["hpoul"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://paypal.me/hpoul"]}},"created_at":"2019-09-02T12:03:07.000Z","updated_at":"2025-02-28T22:32:47.000Z","dependencies_parsed_at":"2024-01-18T18:25:31.825Z","dependency_job_id":"1ad3ede5-4254-43c2-873c-d37725c81dac","html_url":"https://github.com/authpass/biometric_storage","commit_stats":{"total_commits":175,"total_committers":11,"mean_commits":"15.909090909090908","dds":"0.25142857142857145","last_synced_commit":"a0933ca40e8ad9cf028c9f7698e98fcf5f861c9c"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authpass%2Fbiometric_storage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authpass%2Fbiometric_storage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authpass%2Fbiometric_storage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authpass%2Fbiometric_storage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/authpass","download_url":"https://codeload.github.com/authpass/biometric_storage/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254436932,"owners_count":22070944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T19:00:51.033Z","updated_at":"2025-05-15T23:02:31.976Z","avatar_url":"https://github.com/authpass.png","language":"Dart","readme":"# biometric_storage\n\n[![Pub](https://img.shields.io/pub/v/biometric_storage?color=green)](https://pub.dev/packages/biometric_storage/)\n\nEncrypted file store, **optionally** secured by biometric lock \nfor Android, iOS, MacOS and partial support for Linux, Windows and Web. \n\nMeant as a way to store small data in a hardware encrypted fashion. E.g. to \nstore passwords, secret keys, etc. but not massive amounts\nof data.\n\n* Android: Uses androidx with KeyStore.\n* iOS and MacOS: LocalAuthentication with KeyChain.\n* Linux: Stores values in Keyring using libsecret. (No biometric authentication support).\n* Windows: Uses [wincreds.h to store into read/write into credential store](https://docs.microsoft.com/en-us/windows/win32/api/wincred/).\n* Web: **Warning** Uses unauthenticated, **unencrypted** storage in localStorage.\n  If you have a better idea for secure storage on web platform, [please open an Issue](https://github.com/authpass/biometric_storage/issues).\n\nCheck out [AuthPass Password Manager](https://authpass.app/) for a app which \nmakes heavy use of this plugin.\n\n## Getting Started\n\n### Installation\n\n#### Android\n* Requirements:\n  * Android: API Level \u003e= 23 (android/app/build.gradle `minSdkVersion 23`)\n  * Make sure to use the latest kotlin version: \n    * `android/build.gradle`: `ext.kotlin_version = '1.4.31'`\n  * MainActivity must extend FlutterFragmentActivity\n  * Theme for the main activity must use `Theme.AppCompat` thme.\n    (Otherwise there will be crashes on Android \u003c 29)\n    For example: \n    \n    **android/app/src/main/AndroidManifest.xml**:\n    ```xml\n    \u003cactivity\n        android:name=\".MainActivity\"\n        android:launchMode=\"singleTop\"\n        android:theme=\"@style/LaunchTheme\"\u003e\n        [...]\n        \u003cmeta-data\n              android:name=\"io.flutter.embedding.android.NormalTheme\"\n              android:resource=\"@style/NormalTheme\"\n              /\u003e\n    \u003c/activity\u003e\n    ```\n\n    **android/app/src/main/res/values/styles.xml**:\n    ```xml\n    \u003cresources\u003e\n      \u003cstyle name=\"LaunchTheme\" parent=\"Theme.AppCompat.NoActionBar\"\u003e\n        ...\n      \u003c/style\u003e\n      \u003cstyle name=\"NormalTheme\" parent=\"Theme.AppCompat.NoActionBar\"\u003e\n        ...\n      \u003c/style\u003e\n    \u003c/resources\u003e\n    ```\n\n##### Resources\n\n* https://developer.android.com/topic/security/data\n* https://developer.android.com/topic/security/best-practices\n\n#### iOS\n\nhttps://developer.apple.com/documentation/localauthentication/logging_a_user_into_your_app_with_face_id_or_touch_id\n\n* include the NSFaceIDUsageDescription key in your app’s Info.plist file\n* Supports all iOS versions supported by Flutter. (ie. iOS 12)\n\n**Known Issue**: since iOS 15 the simulator seem to no longer support local authentication:\n    https://developer.apple.com/forums/thread/685773\n\n#### Mac OS\n\n* include the NSFaceIDUsageDescription key in your app’s Info.plist file\n* enable keychain sharing and signing. (not sure why this is required. but without it\n    You will probably see an error like: \n    \u003e SecurityError, Error while writing data: -34018: A required entitlement isn't present.\n* Supports all MacOS Versions supported by Flutter (ie. \u003e= MacOS 10.14)\n\n### Usage\n\n\u003e You basically only need 4 methods.\n\n1. Check whether biometric authentication is supported by the device\n\n```dart\n  final response = await BiometricStorage().canAuthenticate()\n  if (response != CanAuthenticateResponse.success) {\n    // panic..\n  }\n```\n\n2. Create the access object\n\n```dart\n  final store = BiometricStorage().getStorage('mystorage');\n```\n\n3. Read data\n\n```dart\n  final data = await storageFile.read();\n```\n\n4. Write data\n\n```dart\n  final myNewData = 'Hello World';\n  await storageFile.write(myNewData);\n```\n\nSee also the API documentation: https://pub.dev/documentation/biometric_storage/latest/biometric_storage/BiometricStorageFile-class.html#instance-methods\n","funding_links":["https://github.com/sponsors/hpoul","https://paypal.me/hpoul"],"categories":["Packages"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauthpass%2Fbiometric_storage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fauthpass%2Fbiometric_storage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauthpass%2Fbiometric_storage/lists"}