Viewing version 0.3.2. Open the latest package page.
flutter_secure_storage_darwin
0.3.2Apple (ios and macos) implementation of flutter_secure_storage
Readme
flutter_secure_storage_darwin
This is the platform-specific implementation of flutter_secure_storage for iOS macOS.
Features
- Secure storage using the Keychain API.
- Fully integrated with iOS and macOS security features.
Installation
Add the dependency in your pubspec.yaml and run flutter pub get.
Configuration
You also need to add Keychain Sharing as capability to your iOS or macOS runner. To achieve this, please add the following in both your (ios/macos)/Runner/DebugProfile.entitlements and (ios/macos)/Runner/Release.entitlements.
<key>keychain-access-groups</key>
<array/>
If you have set your application up to use App Groups then you will need to add the name of the App Group to the keychain-access-groups argument above. Failure to do so will result in values appearing to be written successfully but never actually being written at all. For example if your app has an App Group named "aoeu" then your value for above would instead read:
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)aoeu</string>
</array>
If you are configuring this value through XCode then the string you set in the Keychain Sharing section would simply read "aoeu" with XCode appending the $(AppIdentifierPrefix) when it saves the configuration.
Usage
Refer to the main flutter_secure_storage README for common usage instructions.
License
This project is licensed under the BSD 3 License. See the LICENSE file for details.
Changelog
0.3.2
- Fixed
secStoreAvailabilitySinknot being called when protected data availability changes. - Fixed
kSecUseDataProtectionKeychainbeing added to Keychain queries unconditionally; it is now only set whenuseDataProtectionKeychainis explicitly enabled.
0.3.1
- Fixed iOS build by updating availability annotation for Secure Enclave methods from
iOS 11.3toiOS 13.0.
0.3.0
- Added
useSecureEnclavesupport for iOS and macOS to store encryption keys in the device's Secure Enclave for hardware-backed security. - Use shared
LAContextto reuse biometric authentication across Secure Enclave operations, avoiding double authentication prompts. - Secure Enclave keys now use hardcoded
.privateKeyUsageaccess control, preventing "ACL operation is not allowed" errors.
Fixes:
- Fixed
kSecAttrSynchronizablebeing silently dropped when no access control flags are set. - Fixed
readAllto correctly return Secure Enclave items. - Fixed macOS options keys alignment with iOS options.
- Added plain-text fallback when a Secure Enclave wrapped key is missing.
0.2.0
- Remove keys regardless of synchronizable state or accessibility constraints.
0.1.1
- Fix warnings with Privacy Manifest
0.1.0
This package combines flutter_secure_storage_macos together with the ios part of flutter_secure_storage.
Other changes:
- Code has been rebuild from the ground up
- Lots of missing attributes have been added to the IOSOptions and MacOsOptions classes.
Installing
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add 'flutter_secure_storage_darwin:0.3.2'pubspec.yaml
name: flutter_secure_storage_darwin
description: "Apple (ios and macos) implementation of flutter_secure_storage"
version: 0.3.2
homepage: https://github.com/juliansteenbakker/flutter_secure_storage
environment:
sdk: '>=3.3.0 <4.0.0'
flutter: '>=3.19.0'
dependencies:
flutter:
sdk: flutter
plugin_platform_interface: ^2.0.2
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter packages.
flutter:
# This section identifies this Flutter project as a plugin project.
# The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.)
# which should be registered in the plugin registry. This is required for
# using method channels.
# The Android 'package' specifies package in which the registered class is.
# This is required for using method channels on Android.
# The 'ffiPlugin' specifies that native code should be built and bundled.
# This is required for using `dart:ffi`.
# All these are used by the tooling to maintain consistency when
# adding or updating assets for this project.
plugin:
platforms:
ios:
pluginClass: FlutterSecureStorageDarwinPlugin
sharedDarwinSource: true
macos:
pluginClass: FlutterSecureStorageDarwinPlugin
sharedDarwinSource: true
# To add assets to your plugin package, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
#
# For details regarding assets in packages, see
# https://flutter.dev/to/asset-from-package
#
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/to/resolution-aware-images
# To add custom fonts to your plugin package, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts in packages, see
# https://flutter.dev/to/font-from-package
Version history
| Version | Published | Archive | SHA-256 |
|---|---|---|---|
| 0.1.0 | On demand | Download | f226f2a5…951845 |
| 0.1.1 | On demand | Download | 81ef5abf…200051 |
| 0.2.0 | On demand | Download | 8878c251…69aee3 |
| 0.3.0 | On demand | Download | 3af15a3c…1fb320 |
| 0.3.1 | On demand | Download | 67cd1ff6…d73fcb |
| 0.3.2 | Cached · Upstream SHA-256 matched | Download | 82329fa5…7e8149 |
| 0.4.0 | On demand | Download | ac6d76a7…c02ac0 |
| 0.4.1 | On demand | Download | d1021ca4…b2cabc |
| 0.4.2 | On demand | Download | d0b136b1…2cc044 |
| 0.4.3 | Cached · Upstream SHA-256 matched | Download | a031ceac…797a21 |
Dependencies
flutter {
"sdk": "flutter"
}
plugin_platform_interface "^2.0.2"