From 980659325cdd6801b22f3c4e1f2886631ce05d51 Mon Sep 17 00:00:00 2001 From: Vitaliy Zarubin Date: Fri, 23 Jun 2023 19:01:05 +0300 Subject: [PATCH] [flutter_secure_storage] Implement flutter_secure_storage plugin. OMP#OS-17088 --- .../flutter_secure_storage_aurora/.gitignore | 30 ++ .../flutter_secure_storage_aurora/README.md | 47 +++ .../analysis_options.yaml | 4 + .../data/preview.png | Bin 0 -> 85497 bytes .../example/.gitignore | 47 +++ .../example/README.md | 21 + .../example/analysis_options.yaml | 4 + .../example/aurora/.gitignore | 1 + .../example/aurora/CMakeLists.txt | 50 +++ ...tter_secure_storage_aurora_example.desktop | 12 + .../example/aurora/icons/108x108.png | Bin 0 -> 9954 bytes .../example/aurora/icons/128x128.png | Bin 0 -> 13645 bytes .../example/aurora/icons/172x172.png | Bin 0 -> 23377 bytes .../example/aurora/icons/86x86.png | Bin 0 -> 6632 bytes .../example/aurora/main.cpp | 13 + ...flutter_secure_storage_aurora_example.spec | 31 ++ .../example/lib/main.dart | 156 +++++++ .../example/pubspec.lock | 380 ++++++++++++++++++ .../example/pubspec.yaml | 26 ++ .../lib/flutter_secure_storage_aurora.dart | 80 ++++ .../flutter_secure_storage_aurora_api.dart | 103 +++++ .../lib/null_secret_exception.dart | 10 + .../pubspec.yaml | 35 ++ 23 files changed, 1050 insertions(+) create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/.gitignore create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/README.md create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/analysis_options.yaml create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/data/preview.png create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/.gitignore create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/README.md create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/analysis_options.yaml create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/.gitignore create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/CMakeLists.txt create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/desktop/com.example.flutter_secure_storage_aurora_example.desktop create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/108x108.png create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/128x128.png create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/172x172.png create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/86x86.png create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/main.cpp create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/rpm/com.example.flutter_secure_storage_aurora_example.spec create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/lib/main.dart create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.lock create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.yaml create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora.dart create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora_api.dart create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/null_secret_exception.dart create mode 100644 packages/flutter_secure_storage/flutter_secure_storage_aurora/pubspec.yaml diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/.gitignore b/packages/flutter_secure_storage/flutter_secure_storage_aurora/.gitignore new file mode 100644 index 0000000..96486fd --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/.gitignore @@ -0,0 +1,30 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.packages +build/ diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/README.md b/packages/flutter_secure_storage/flutter_secure_storage_aurora/README.md new file mode 100644 index 0000000..fcf3a1f --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/README.md @@ -0,0 +1,47 @@ +# flutter_secure_storage_aurora + +The Aurora implementation of [`flutter_secure_storage`][https://pub.dev/packages/flutter_secure_storage]. + +## Usage + +This package is not an _endorsed_ implementation of `flutter_secure_storage`. +Therefore, you have to include `flutter_secure_storage_aurora` alongside `flutter_secure_storage` as dependencies in your `pubspec.yaml` file. + +**pubspec.yaml** + +```yaml +dependencies: + flutter_secure_storage: ^8.0.0 + flutter_secure_storage_aurora: + path: # path to folder with plugin +``` + +***.dart** + +```dart +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:flutter_secure_storage_aurora/flutter_secure_storage_aurora.dart'; + +// https://pub.dev/packages/encrypt +// Encrypter(AES(key)) +// secure-random --length 16 --base 16 +// You can generate a secret key based on user data, as an example of a hash pincode +FlutterSecureStorageAurora.setSecret('5872747ed1ceda363808efb8b2b18b20'); + +final storage = const FlutterSecureStorage(); + +const key = 'my_key'; +const data = 'Something secret'; + +// Write value +await storage.write(key: key, value: data); + +// Read value +String? value = await storage.read(key: key); + +// Read all values +Map allValues = await storage.readAll(); + +// Delete all +await storage.deleteAll(); +``` diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/analysis_options.yaml b/packages/flutter_secure_storage/flutter_secure_storage_aurora/analysis_options.yaml new file mode 100644 index 0000000..566c597 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/analysis_options.yaml @@ -0,0 +1,4 @@ +# Copyright (c) 2023. Open Mobile Platform LLC. +# License: Proprietary. + +include: package:flutter_lints/flutter.yaml diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/data/preview.png b/packages/flutter_secure_storage/flutter_secure_storage_aurora/data/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..5108a2572683b1f403d08e88648b2b29caebb14f GIT binary patch literal 85497 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%0D;}t*;aoOSNFu$8!t!*{ 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 z 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%0D4$qPqcz?z7vCI8iXKEph7 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 literal 0 HcmV?d00001 diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/.gitignore b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/.gitignore new file mode 100644 index 0000000..3db3823 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/.gitignore @@ -0,0 +1,47 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release + +# Aurora generated +/aurora/flutter diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/README.md b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/README.md new file mode 100644 index 0000000..2e79332 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/README.md @@ -0,0 +1,21 @@ +# flutter_secure_storage_aurora_example + +Demonstrates how to use the flutter_secure_storage_aurora plugin. + +## Build + +```shell +# Add an alias if it doesn't already exist +alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter +# Get dependencies +flutter-aurora pub get +# Run build +flutter-aurora build aurora --release # [--release|--debug|--profile] +``` + +You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` +More information in `build_example.sh`. + +### Preview example + +![preview.png](../data/preview.png) diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/analysis_options.yaml b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/analysis_options.yaml new file mode 100644 index 0000000..566c597 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/analysis_options.yaml @@ -0,0 +1,4 @@ +# Copyright (c) 2023. Open Mobile Platform LLC. +# License: Proprietary. + +include: package:flutter_lints/flutter.yaml diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/.gitignore b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/CMakeLists.txt b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/CMakeLists.txt new file mode 100644 index 0000000..44c0ad2 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/CMakeLists.txt @@ -0,0 +1,50 @@ +# Copyright (c) 2023. Open Mobile Platform LLC. +# License: Proprietary. + +cmake_minimum_required(VERSION 3.10) +project(com.example.flutter_secure_storage_aurora_example LANGUAGES CXX) + +include(GNUInstallDirs) + +set(BINARY_NAME ${CMAKE_PROJECT_NAME}) +set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_CXX_FLAGS "-Wall -Wextra") +set(CMAKE_CXX_FLAGS_RELEASE "-O3") + +set(CMAKE_SKIP_RPATH OFF) +set(CMAKE_INSTALL_RPATH "\$ORIGIN/../share/${BINARY_NAME}/lib") + +find_package(PkgConfig REQUIRED) +pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) + +add_executable(${BINARY_NAME} main.cpp ${FLUTTER_DIR}/generated_plugin_registrant.cpp) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::FlutterEmbedder) +target_include_directories(${BINARY_NAME} PRIVATE ${FLUTTER_DIR}) + +include(flutter/generated_plugins.cmake) + +set(PACKAGE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}) +set(DESKTOP_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/applications) +set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor) + +add_custom_command(TARGET ${BINARY_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libflutter-embedder.so + ${PROJECT_BINARY_DIR}/bundle/lib/libflutter-embedder.so) + +install(FILES ${PROJECT_BINARY_DIR}/bundle/icudtl.dat DESTINATION ${PACKAGE_INSTALL_DIR}) +install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR}) +install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib DESTINATION ${PACKAGE_INSTALL_DIR}) + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR}) + +foreach(ICONS_SIZE 86x86 108x108 128x128 172x172) + install(FILES icons/${ICONS_SIZE}.png + RENAME ${BINARY_NAME}.png + DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/) +endforeach(ICONS_SIZE) diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/desktop/com.example.flutter_secure_storage_aurora_example.desktop b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/desktop/com.example.flutter_secure_storage_aurora_example.desktop new file mode 100644 index 0000000..6441560 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/desktop/com.example.flutter_secure_storage_aurora_example.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Type=Application +Name=flutter_secure_storage_aurora_example +Comment=Demonstrates how to use the flutter_secure_storage_aurora plugin. +Icon=com.example.flutter_secure_storage_aurora_example +Exec=/usr/bin/com.example.flutter_secure_storage_aurora_example +X-Nemo-Application-Type=silica-qt5 + +[X-Application] +Permissions= +OrganizationName=com.example +ApplicationName=flutter_secure_storage_aurora_example diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/108x108.png b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/108x108.png new file mode 100644 index 0000000000000000000000000000000000000000..984893df6c30793313b2b3d3912a6e95977e2333 GIT binary patch literal 9954 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�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φ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 literal 0 HcmV?d00001 diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/172x172.png b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/172x172.png new file mode 100644 index 0000000000000000000000000000000000000000..9dc271ba73a05054cdcb09780a4cc56cc05d5ea7 GIT binary patch literal 23377 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 literal 0 HcmV?d00001 diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/86x86.png b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/86x86.png new file mode 100644 index 0000000000000000000000000000000000000000..5923bb1113acac37ae5d280245b152cc4a1b242d GIT binary patch literal 6632 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 mdnuQ%0#85i!0Z3VDE}Y+awRoL1wwQH0000 +#include "generated_plugin_registrant.h" + +int main(int argc, char *argv[]) { + Application::Initialize(argc, argv); + RegisterPlugins(); + Application::Launch(); + return 0; +} diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/rpm/com.example.flutter_secure_storage_aurora_example.spec b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/rpm/com.example.flutter_secure_storage_aurora_example.spec new file mode 100644 index 0000000..278fb13 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/rpm/com.example.flutter_secure_storage_aurora_example.spec @@ -0,0 +1,31 @@ +%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ +%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ + +Name: com.example.flutter_secure_storage_aurora_example +Summary: Demonstrates how to use the flutter_secure_storage_aurora plugin. +Version: 0.1.0 +Release: 1 +License: Proprietary +Source0: %{name}-%{version}.tar.zst + +BuildRequires: cmake +BuildRequires: pkgconfig(flutter-embedder) + +%description +%{summary}. + +%prep +%autosetup + +%build +%cmake -DCMAKE_BUILD_TYPE=%{_flutter_build_type} +%make_build + +%install +%make_install + +%files +%{_bindir}/%{name} +%{_datadir}/%{name}/* +%{_datadir}/applications/%{name}.desktop +%{_datadir}/icons/hicolor/*/apps/%{name}.png diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/lib/main.dart b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/lib/main.dart new file mode 100644 index 0000000..fb7cf59 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/lib/main.dart @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'dart:async'; + +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:flutter_secure_storage_aurora/flutter_secure_storage_aurora.dart'; + +void main() { + runApp(const MyApp()); +} + +class MyApp extends StatefulWidget { + const MyApp({super.key}); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + final _flutterSecureStorage = const FlutterSecureStorage(); + String? _error; + String? _data; + String? _all; + + @override + void initState() { + super.initState(); + initPlatformState(); + } + + Future initPlatformState() async { + try { + // https://pub.dev/packages/encrypt + // Encrypter(AES(key)) + // secure-random --length 16 --base 16 + // You can generate a secret key based on user data, as an example of a hash pincode + FlutterSecureStorageAurora.setSecret('5872747ed1ceda363808efb8b2b18b20'); + + const key = 'my_key'; + const data = 'Something secret'; + + // Write value + await _flutterSecureStorage.write(key: key, value: data); + + // Read value + String? value = await _flutterSecureStorage.read(key: key); + + // Read all values + Map allValues = await _flutterSecureStorage.readAll(); + + setState(() { + _data = value; + _all = allValues.toString(); + }); + } on Exception catch (e) { + setState(() { + _error = e.toString(); + }); + } + } + + @override + Widget build(BuildContext context) { + const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); + const textStyleTitle = TextStyle(fontSize: 20, color: Colors.black); + const textStylePath = TextStyle(fontSize: 18, color: Colors.black54); + + const spaceMedium = SizedBox(height: 20); + const spaceSmall = SizedBox(height: 10); + + return MaterialApp( + home: Scaffold( + appBar: AppBar( + title: const Text('Example flutter_secure_storage'), + ), + body: Stack( + children: [ + // Error message + Visibility( + visible: _error != null, + child: Center( + child: Padding( + padding: const EdgeInsets.all(16), + child: Container( + padding: const EdgeInsets.all(20), + decoration: const BoxDecoration( + color: Colors.redAccent, + borderRadius: BorderRadius.all(Radius.circular(10.0)), + ), + child: Text( + _error ?? '', + style: textStyleWhite, + ), + ), + ), + ), + ), + // List directories path + Visibility( + visible: _error == null, + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(16), + child: Center( + child: Column( + children: [ + // Info + Container( + padding: const EdgeInsets.all(20), + decoration: const BoxDecoration( + color: Colors.green, + borderRadius: BorderRadius.all(Radius.circular(10.0)), + ), + child: const Text( + 'Demo application demonstration implementation of flutter_secure_storage', + style: textStyleWhite, + textAlign: TextAlign.center, + ), + ), + const SizedBox(height: 30), + + const Text( + 'After write/read secret data', + style: textStyleTitle, + ), + spaceSmall, + Text( + _data.toString(), + style: textStylePath, + ), + + spaceMedium, + const Text( + 'All data', + style: textStyleTitle, + ), + spaceSmall, + Text( + _all.toString(), + style: textStylePath, + ), + ], + ), + ), + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.lock b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.lock new file mode 100644 index 0000000..dc902b2 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.lock @@ -0,0 +1,380 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.1" + asn1lib: + dependency: transitive + description: + name: asn1lib + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.0" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.9.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + encrypt: + dependency: transitive + description: + name: encrypt + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.1" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.4" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + flutter_secure_storage: + dependency: "direct main" + description: + name: flutter_secure_storage + url: "https://pub.dartlang.org" + source: hosted + version: "8.0.0" + flutter_secure_storage_aurora: + dependency: "direct main" + description: + path: ".." + relative: true + source: path + version: "0.0.1" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.3" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.12" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.15" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.27" + path_provider_aurora: + dependency: transitive + description: + path: "packages/path_provider/path_provider_aurora" + ref: dev + resolved-ref: "7120c2554963ce9e7600730b2657b387d3a86d9c" + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.3" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.11" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + pointycastle: + dependency: transitive + description: + name: pointycastle + url: "https://pub.dartlang.org" + source: hosted + version: "3.7.3" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.12" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + xdga_directories: + dependency: transitive + description: + path: "packages/xdga_directories" + ref: dev + resolved-ref: "7120c2554963ce9e7600730b2657b387d3a86d9c" + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" +sdks: + dart: ">=2.18.6 <3.0.0" + flutter: ">=3.3.0" diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.yaml b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.yaml new file mode 100644 index 0000000..50e5e47 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.yaml @@ -0,0 +1,26 @@ +# Copyright (c) 2023. Open Mobile Platform LLC. +# License: Proprietary. + +name: flutter_secure_storage_aurora_example +description: Demonstrates how to use the flutter_secure_storage_aurora plugin. + +publish_to: 'none' + +environment: + sdk: '>=2.18.6 <3.0.0' + +dependencies: + flutter: + sdk: flutter + flutter_secure_storage: ^8.0.0 + flutter_secure_storage_aurora: + path: ../ + cupertino_icons: ^1.0.2 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0 + +flutter: + uses-material-design: true diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora.dart b/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora.dart new file mode 100644 index 0000000..e7e4f29 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora.dart @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_secure_storage_platform_interface/flutter_secure_storage_platform_interface.dart'; +import 'package:flutter/foundation.dart'; +import 'package:path_provider_aurora/path_provider_aurora.dart'; +import 'null_secret_exception.dart'; +import 'flutter_secure_storage_aurora_api.dart'; + +class FlutterSecureStorageAurora extends FlutterSecureStoragePlatform { + static FlutterSecureStorageAuroraApi? _api; + + /// Before use, you need to specify the encryption key + /// https://pub.dev/packages/encrypt + /// Encrypter(AES(key)) + /// secure-random --length 16 --base 16 + /// You can generate a secret key based on user data, as an example of a hash pincode + static void setSecret(String secret) { + _api = FlutterSecureStorageAuroraApi( + secret, + '.flutter_secure_storage.json', + ); + } + + static void registerWith() async { + if (TargetPlatform.aurora == defaultTargetPlatform) { + PathProviderAurora.registerWith(); + FlutterSecureStoragePlatform.instance = FlutterSecureStorageAurora(); + } + } + + static FlutterSecureStorageAuroraApi _getAPI() { + if (_api == null) { + throw NullSecretException(); + } + return _api!; + } + + @override + Future containsKey({ + required String key, + required Map options, + }) async => + _getAPI().containsKey(key); + + @override + Future delete({ + required String key, + required Map options, + }) async => + _getAPI().remove(key); + + @override + Future deleteAll({ + required Map options, + }) async => + _getAPI().clear(); + + @override + Future read({ + required String key, + required Map options, + }) async => + await _getAPI().getData(key); + + @override + Future> readAll({ + required Map options, + }) async => + (await _getAPI().getAll()).cast(); + + @override + Future write({ + required String key, + required String value, + required Map options, + }) async => + _getAPI().setData(key, value); +} diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora_api.dart b/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora_api.dart new file mode 100644 index 0000000..55c24c3 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora_api.dart @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'dart:convert'; +import 'dart:io'; +import 'package:path/path.dart' as p; +import 'package:path_provider/path_provider.dart'; +import 'package:encrypt/encrypt.dart' as encrypt; + +class FlutterSecureStorageAuroraApi { + final JsonDecoder decoder = const JsonDecoder(); + + final String _secret; + final String _fileName; + Map? _data; + + FlutterSecureStorageAuroraApi(this._secret, this._fileName); + + /// Get value + Future getData(String key) async { + final map = await _read(); + return map[key]; + } + + /// Get all data + Future> getAll() async { + return await _read(); + } + + /// Check has value + Future containsKey(String key) async { + final map = await _read(); + return map.containsKey(key); + } + + /// Add value and save data + Future setData(String key, dynamic value) async { + final map = await _read(); + map[key] = value; + await _save(map); + return true; + } + + /// Remove one value + Future remove(String key) async { + final map = await _read(); + if (map.containsKey(key)) { + map.remove(key); + await _save(map); + return true; + } + return false; + } + + /// Clear all data - remove file + Future clear() async { + final file = await _getFile(); + await file.delete(); + _data = null; + return true; + } + + /// Get file with data + Future _getFile() async { + return File(p.join( + (await getTemporaryDirectory()).path, + _fileName, + )).create(recursive: true); + } + + /// Read file or get from cache + Future> _read() async { + if (_data == null) { + final file = await _getFile(); + final read = await file.readAsString(); + final value = read.isEmpty ? '' : _decrypt(read); + _data = value.isEmpty ? {} : decoder.convert(value); + } + return Future.value(_data); + } + + /// Save data to file + Future _save(Map data) async { + final file = await _getFile(); + final value = json.encode(data); + await file.writeAsString(_encrypt(value)); + } + + /// Encrypt data in file + String _encrypt(String value) { + final key = encrypt.Key.fromUtf8(_secret); + final iv = encrypt.IV.fromLength(16); + return encrypt.Encrypter(encrypt.AES(key)).encrypt(value, iv: iv).base64; + } + + /// Decrypt data in file + String _decrypt(String value) { + final key = encrypt.Key.fromUtf8(_secret); + final iv = encrypt.IV.fromLength(16); + return encrypt.Encrypter(encrypt.AES(key)).decrypt64(value, iv: iv); + } +} diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/null_secret_exception.dart b/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/null_secret_exception.dart new file mode 100644 index 0000000..71490d8 --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/null_secret_exception.dart @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +class NullSecretException implements Exception { + @override + String toString() { + return 'NullSecretException: Oops! Before use, you need to specify the encryption key'; + } +} diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/pubspec.yaml b/packages/flutter_secure_storage/flutter_secure_storage_aurora/pubspec.yaml new file mode 100644 index 0000000..a6bebce --- /dev/null +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/pubspec.yaml @@ -0,0 +1,35 @@ +# Copyright (c) 2023. Open Mobile Platform LLC. +# License: Proprietary. + +name: flutter_secure_storage_aurora +description: The Aurora OS implementation of flutter_secure_storage. +version: 0.0.1 + +environment: + sdk: '>=2.18.6 <3.0.0' + flutter: ">=2.5.0" + +dependencies: + flutter: + sdk: flutter + encrypt: ^5.0.1 + plugin_platform_interface: ^2.0.2 + flutter_secure_storage_platform_interface: ^1.0.1 + path: ^1.8.2 + path_provider: ^2.0.14 + path_provider_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: dev + path: packages/path_provider/path_provider_aurora + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0 + +flutter: + plugin: + platforms: + aurora: + dartPluginClass: FlutterSecureStorageAurora