From 0c8dc3af959e999289c0aa33c2b4b587917b63c8 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Tue, 18 Feb 2025 13:19:09 +0530 Subject: [PATCH] [mob] Extract ente_crypto plugin --- mobile/ios/Podfile.lock | 96 ++++++++-------- mobile/lib/core/configuration.dart | 2 +- mobile/lib/core/errors.dart | 4 - mobile/lib/emergency/emergency_service.dart | 2 +- .../lib/emergency/recover_others_account.dart | 2 +- mobile/lib/main.dart | 2 +- .../lib/module/upload/service/multipart.dart | 3 +- mobile/lib/services/collections_service.dart | 2 +- mobile/lib/services/entity_service.dart | 2 +- mobile/lib/services/favorites_service.dart | 2 +- mobile/lib/services/file_magic_service.dart | 2 +- mobile/lib/services/hidden_service.dart | 2 +- mobile/lib/services/user_service.dart | 2 +- .../lib/ui/account/delete_account_page.dart | 2 +- .../account/login_pwd_verification_page.dart | 2 +- .../lib/ui/account/password_reentry_page.dart | 2 +- .../request_pwd_verification_page.dart | 2 +- .../lib/ui/account/two_factor_setup_page.dart | 2 +- .../lib/ui/account/verify_recovery_page.dart | 2 +- .../ui/settings/account_section_widget.dart | 2 +- .../settings/debug/debug_section_widget.dart | 2 +- .../lock_screen/lock_screen_password.dart | 2 +- .../settings/lock_screen/lock_screen_pin.dart | 2 +- .../ui/settings/security_section_widget.dart | 2 +- .../lib/ui/sharing/manage_links_widget.dart | 2 +- mobile/lib/ui/tabs/home_widget.dart | 2 +- mobile/lib/utils/diff_fetcher.dart | 8 +- mobile/lib/utils/file_download_util.dart | 2 +- mobile/lib/utils/file_key.dart | 2 +- mobile/lib/utils/file_uploader.dart | 3 +- mobile/lib/utils/file_uploader_util.dart | 2 +- mobile/lib/utils/gzip.dart | 2 +- mobile/lib/utils/lock_screen_settings.dart | 2 +- mobile/lib/utils/thumbnail_util.dart | 2 +- mobile/lib/utils/trash_diff_fetcher.dart | 2 +- mobile/plugins/ente_crypto/.metadata | 10 ++ .../plugins/ente_crypto/analysis_options.yaml | 1 + .../plugins/ente_crypto/lib/ente_crypto.dart | 4 + .../ente_crypto/lib/src/crypto.dart} | 12 +- .../lib/src}/models/derived_key_result.dart | 0 .../lib/src}/models/encryption_result.dart | 0 .../ente_crypto/lib/src/models/errors.dart | 3 + mobile/plugins/ente_crypto/pubspec.lock | 105 ++++++++++++++++++ mobile/plugins/ente_crypto/pubspec.yaml | 20 ++++ mobile/pubspec.lock | 11 +- mobile/pubspec.yaml | 4 +- 46 files changed, 245 insertions(+), 99 deletions(-) create mode 100644 mobile/plugins/ente_crypto/.metadata create mode 100644 mobile/plugins/ente_crypto/analysis_options.yaml create mode 100644 mobile/plugins/ente_crypto/lib/ente_crypto.dart rename mobile/{lib/utils/crypto_util.dart => plugins/ente_crypto/lib/src/crypto.dart} (98%) rename mobile/{lib => plugins/ente_crypto/lib/src}/models/derived_key_result.dart (100%) rename mobile/{lib => plugins/ente_crypto/lib/src}/models/encryption_result.dart (100%) create mode 100644 mobile/plugins/ente_crypto/lib/src/models/errors.dart create mode 100644 mobile/plugins/ente_crypto/pubspec.lock create mode 100644 mobile/plugins/ente_crypto/pubspec.yaml diff --git a/mobile/ios/Podfile.lock b/mobile/ios/Podfile.lock index 9903debdf8c..6769a1fcc81 100644 --- a/mobile/ios/Podfile.lock +++ b/mobile/ios/Podfile.lock @@ -457,77 +457,77 @@ SPEC CHECKSUMS: dart_ui_isolate: d5bcda83ca4b04f129d70eb90110b7a567aece14 device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6 ffmpeg-kit-ios-full-gpl: 80adc341962e55ef709e36baa8ed9a70cf4ea62b - ffmpeg_kit_flutter_full_gpl: ce18b888487c05c46ed252cd2e7956812f2e3bd1 - file_saver: 6cdbcddd690cb02b0c1a0c225b37cd805c2bf8b6 + ffmpeg_kit_flutter_full_gpl: 8d15c14c0c3aba616fac04fe44b3d27d02e3c330 + file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808 Firebase: 98e6bf5278170668a7983e12971a66b2cd57fc8c - firebase_core: 085320ddfaacb80d1a96eac3a87857afcc150db1 - firebase_messaging: d398edc15fe825f832836e74f6ac61e8cd2f3ad3 + firebase_core: 2bedc3136ec7c7b8561c6123ed0239387b53f2af + firebase_messaging: 15d114e1a41fc31e4fbabcd48d765a19eec94a38 FirebaseCore: a282032ae9295c795714ded2ec9c522fc237f8da FirebaseCoreInternal: d98ab91e2d80a56d7b246856a8885443b302c0c2 FirebaseInstallations: 6ef4a1c7eb2a61ee1f74727d7f6ce2e72acf1414 FirebaseMessaging: c9ec7b90c399c7a6100297e9d16f8a27fc7f7152 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_email_sender: cd533cdc7ea5eda6fabb2c7f78521c71207778a4 - flutter_image_compress: 4b058288a81f76e5e80340af37c709abafff34c4 - flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 - flutter_local_notifications: ad39620c743ea4c15127860f4b5641649a988100 - flutter_native_splash: 35ddbc7228eafcb3969dcc5f1fbbe27c1145a4f0 - flutter_secure_storage: 2c2ff13db9e0a5647389bff88b0ecac56e3f3418 - flutter_sodium: 152647449ba89a157fd48d7e293dcd6d29c6ab0e - fluttertoast: 76fea30fcf04176325f6864c87306927bd7d2038 + flutter_email_sender: 02d7443217d8c41483223627972bfdc09f74276b + flutter_image_compress: 5a5e9aee05b6553048b8df1c3bc456d0afaac433 + flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4 + flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 + flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778 + flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be + flutter_sodium: c84426b4de738514b5b66cfdeb8a06634e72fe0b + fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d - home_widget: f169fc41fd807b4d46ab6615dc44d62adbf9f64f - image_editor_common: 3de87e7c4804f4ae24c8f8a998362b98c105cac1 - image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a - in_app_purchase_storekit: e126ef1b89e4a9fdf07e28f005f82632b4609437 - integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e + home_widget: 0434835a4c9a75704264feff6be17ea40e0f0d57 + image_editor_common: d6f6644ae4a6de80481e89fe6d0a8c49e30b4b43 + image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 + in_app_purchase_storekit: 8c3b0b3eb1b0f04efbff401c3de6266d4258d433 + integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573 libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009 - local_auth_darwin: 553ce4f9b16d3fdfeafce9cf042e7c9f77c1c391 - local_auth_ios: f7a1841beef3151d140a967c2e46f30637cdf451 + local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3 + local_auth_ios: 5046a18c018dd973247a0564496c8898dbb5adf9 Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d - maps_launcher: edf829809ba9e894d70e569bab11c16352dedb45 - media_extension: a1fec16ee9c8241a6aef9613578ebf097d6c5e64 - media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854 - media_kit_native_event_loop: 5fba1a849a6c87a34985f1e178a0de5bd444a0cf - media_kit_video: 1746e198cb697d1ffb734b1d05ec429d1fcd1474 - motion_sensors: 741e702c17467b9569a92165dda8d4d88c6167f1 - motionphoto: 584b43031ead3060225cdff08fa49818879801d2 - move_to_background: 155f7bfbd34d43ad847cb630d2d2d87c17199710 + maps_launcher: 2e5b6a2d664ec6c27f82ffa81b74228d770ab203 + media_extension: 6d30dc1431ebaa63f43c397c37917b1a0a597a4c + media_kit_libs_ios_video: a5fe24bc7875ccd6378a0978c13185e1344651c1 + media_kit_native_event_loop: e6b2ab20cf0746eb1c33be961fcf79667304fa2a + media_kit_video: 5da63f157170e5bf303bf85453b7ef6971218a2e + motion_sensors: 03f55b7c637a7e365a0b5f9697a449f9059d5d91 + motionphoto: d4a432b8c8f22fb3ad966258597c0103c9c5ff16 + move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 native_video_player: d12af78a1a4a8cf09775a5177d5b392def6fd23c objective_c: 77e887b5ba1827970907e10e832eec1683f3431d onnxruntime: e7c2ae44385191eaad5ae64c935a72debaddc997 onnxruntime-c: a909204639a1f035f575127ac406f781ac797c9c onnxruntime-objc: b6fab0f1787aa6f7190c2013f03037df4718bd8b - open_mail_app: 06d5a4162866388a92b1df3deb96e56be20cf45c + open_mail_app: 794172f6a22cd16319d3ddaf45e945b2f74952b0 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 - package_info_plus: 566e1b7a2f3900e4b0020914ad3fc051dcc95596 - path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 - permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d - photo_manager: d2fbcc0f2d82458700ee6256a15018210a81d413 - privacy_screen: 3159a541f5d3a31bea916cfd4e58f9dc722b3fd4 + package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85 + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 + photo_manager: ff695c7a1dd5bc379974953a2b5c0a293f7c4c8a + privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - receive_sharing_intent: f6a12b7e8f7ed745f61c982de8a65de88db44a44 - screen_brightness_ios: 5ed898fa50fa82a26171c086ca5e28228f932576 + receive_sharing_intent: df9c334dc9feadcbd3266e5cb49c8443405e1c9f + screen_brightness_ios: 715ca807df953bf676d339f11464e438143ee625 SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8 SDWebImageWebPCoder: e38c0a70396191361d60c092933e22c20d5b1380 Sentry: f8374b5415bc38dfb5645941b3ae31230fbeae57 - sentry_flutter: 0a211008f52553ba5dd81ceb71f48d78f0f1f6ab - share_plus: 011d6fb4f9d2576b83179a3a5c5e323202cdabcf - shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 - sqflite_darwin: 44bb54cc302bff1fbe5752293aba1820b157cf1c + sentry_flutter: 0eb93e5279eb41e2392212afe1ccd2fecb4f8cbe + share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 + sqflite_darwin: a553b1fd6fe66f53bbb0fe5b4f5bab93f08d7a13 sqlite3: 0bb0e6389d824e40296f531b858a2a0b71c0d2fb - sqlite3_flutter_libs: 9379996d65aa23dcda7585a5b58766cebe0aa042 - system_info_plus: 555ce7047fbbf29154726db942ae785c29211740 + sqlite3_flutter_libs: c00457ebd31e59fa6bb830380ddba24d44fbcd3b + system_info_plus: 5393c8da281d899950d751713575fbf91c7709aa Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e - ua_client_hints: 0b48eae1134283f5b131ee0871fa878377f07a01 - uni_links: ed8c961e47ed9ce42b6d91e1de8049e38a4b3152 - url_launcher_ios: 694010445543906933d732453a59da0a173ae33d - video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b - video_thumbnail: b637e0ad5f588ca9945f6e2c927f73a69a661140 - volume_controller: ca1cde542ee70fad77d388f82e9616488110942b - wakelock_plus: 8c239121a007daa1d6759c6acdc507860273dd2f + ua_client_hints: 46bb5817a868f9e397c0ba7e3f2f5c5d90c35156 + uni_links: d97da20c7701486ba192624d99bffaaffcfc298a + url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe + video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 + video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1 + volume_controller: 531ddf792994285c9b17f9d8a7e4dcdd29b3eae9 + wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47 PODFILE CHECKSUM: 20e086e6008977d43a3d40260f3f9bffcac748dd diff --git a/mobile/lib/core/configuration.dart b/mobile/lib/core/configuration.dart index 03cfd6a16be..20fb02b57ac 100644 --- a/mobile/lib/core/configuration.dart +++ b/mobile/lib/core/configuration.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import "dart:io"; import 'package:bip39/bip39.dart' as bip39; +import "package:ente_crypto/ente_crypto.dart"; import "package:flutter/services.dart"; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:logging/logging.dart'; @@ -30,7 +31,6 @@ import "package:photos/services/machine_learning/face_ml/person/person_service.d import 'package:photos/services/memories_service.dart'; import 'package:photos/services/search_service.dart'; import 'package:photos/services/sync_service.dart'; -import 'package:photos/utils/crypto_util.dart'; import 'package:photos/utils/file_uploader.dart'; import "package:photos/utils/lock_screen_settings.dart"; import 'package:photos/utils/validator_util.dart'; diff --git a/mobile/lib/core/errors.dart b/mobile/lib/core/errors.dart index f1c7c24b3c4..8ea8aa6ad66 100644 --- a/mobile/lib/core/errors.dart +++ b/mobile/lib/core/errors.dart @@ -72,10 +72,6 @@ class InvalidStateError extends AssertionError { InvalidStateError(String message) : super(message); } -class KeyDerivationError extends Error {} - -class LoginKeyDerivationError extends Error {} - class SrpSetupNotCompleteError extends Error {} class SharingNotPermittedForFreeAccountsError extends Error {} diff --git a/mobile/lib/emergency/emergency_service.dart b/mobile/lib/emergency/emergency_service.dart index c22d27da367..537adaf5139 100644 --- a/mobile/lib/emergency/emergency_service.dart +++ b/mobile/lib/emergency/emergency_service.dart @@ -3,6 +3,7 @@ import "dart:math"; import "dart:typed_data"; import "package:dio/dio.dart"; +import "package:ente_crypto/ente_crypto.dart"; import "package:flutter/cupertino.dart"; import "package:logging/logging.dart"; import "package:photos/core/configuration.dart"; @@ -14,7 +15,6 @@ import "package:photos/models/api/user/set_keys_request.dart"; import "package:photos/models/api/user/srp.dart"; import "package:photos/services/user_service.dart"; import "package:photos/ui/common/user_dialogs.dart"; -import "package:photos/utils/crypto_util.dart"; import "package:photos/utils/dialog_util.dart"; import "package:photos/utils/email_util.dart"; import "package:pointycastle/pointycastle.dart"; diff --git a/mobile/lib/emergency/recover_others_account.dart b/mobile/lib/emergency/recover_others_account.dart index 1576a625046..5b7d658d616 100644 --- a/mobile/lib/emergency/recover_others_account.dart +++ b/mobile/lib/emergency/recover_others_account.dart @@ -1,5 +1,6 @@ import "dart:convert"; +import "package:ente_crypto/ente_crypto.dart"; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:logging/logging.dart'; @@ -10,7 +11,6 @@ import "package:photos/generated/l10n.dart"; import "package:photos/models/api/user/key_attributes.dart"; import "package:photos/models/api/user/set_keys_request.dart"; import 'package:photos/ui/common/dynamic_fab.dart'; -import "package:photos/utils/crypto_util.dart"; import 'package:photos/utils/dialog_util.dart'; import 'package:photos/utils/toast_util.dart'; diff --git a/mobile/lib/main.dart b/mobile/lib/main.dart index 70deb70cd74..7c5c92e4919 100644 --- a/mobile/lib/main.dart +++ b/mobile/lib/main.dart @@ -4,6 +4,7 @@ import 'dart:io'; import "package:adaptive_theme/adaptive_theme.dart"; import 'package:background_fetch/background_fetch.dart'; import "package:computer/computer.dart"; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -47,7 +48,6 @@ import "package:photos/services/sync_service.dart"; import "package:photos/services/user_service.dart"; import 'package:photos/ui/tools/app_lock.dart'; import 'package:photos/ui/tools/lock_screen.dart'; -import 'package:photos/utils/crypto_util.dart'; import "package:photos/utils/email_util.dart"; import 'package:photos/utils/file_uploader.dart'; import "package:photos/utils/lock_screen_settings.dart"; diff --git a/mobile/lib/module/upload/service/multipart.dart b/mobile/lib/module/upload/service/multipart.dart index 762d26301ec..e03c4315d8a 100644 --- a/mobile/lib/module/upload/service/multipart.dart +++ b/mobile/lib/module/upload/service/multipart.dart @@ -1,17 +1,16 @@ import "dart:io"; import "package:dio/dio.dart"; +import "package:ente_crypto/ente_crypto.dart"; import "package:ente_feature_flag/ente_feature_flag.dart"; import "package:flutter/foundation.dart"; import "package:logging/logging.dart"; import "package:photos/core/constants.dart"; import "package:photos/db/upload_locks_db.dart"; -import "package:photos/models/encryption_result.dart"; import "package:photos/module/upload/model/multipart.dart"; import "package:photos/module/upload/model/xml.dart"; import "package:photos/service_locator.dart"; import "package:photos/services/collections_service.dart"; -import "package:photos/utils/crypto_util.dart"; class MultiPartUploader { final Dio _enteDio; diff --git a/mobile/lib/services/collections_service.dart b/mobile/lib/services/collections_service.dart index f4b3f75421b..f3c1f8dbaee 100644 --- a/mobile/lib/services/collections_service.dart +++ b/mobile/lib/services/collections_service.dart @@ -4,6 +4,7 @@ import 'dart:math'; import 'package:collection/collection.dart'; import 'package:dio/dio.dart'; +import 'package:ente_crypto/ente_crypto.dart'; import "package:fast_base58/fast_base58.dart"; import 'package:flutter/foundation.dart'; import "package:flutter/material.dart"; @@ -39,7 +40,6 @@ import "package:photos/services/favorites_service.dart"; import 'package:photos/services/file_magic_service.dart'; import 'package:photos/services/local_sync_service.dart'; import 'package:photos/services/remote_sync_service.dart'; -import 'package:photos/utils/crypto_util.dart'; import "package:photos/utils/dialog_util.dart"; import "package:photos/utils/file_key.dart"; import "package:photos/utils/local_settings.dart"; diff --git a/mobile/lib/services/entity_service.dart b/mobile/lib/services/entity_service.dart index d3df225ca33..2986a33ef5f 100644 --- a/mobile/lib/services/entity_service.dart +++ b/mobile/lib/services/entity_service.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:math'; +import "package:ente_crypto/ente_crypto.dart"; import 'package:flutter/foundation.dart'; import 'package:logging/logging.dart'; import "package:photos/core/configuration.dart"; @@ -12,7 +13,6 @@ import "package:photos/models/api/entity/data.dart"; import "package:photos/models/api/entity/key.dart"; import "package:photos/models/api/entity/type.dart"; import "package:photos/models/local_entity_data.dart"; -import "package:photos/utils/crypto_util.dart"; import "package:photos/utils/gzip.dart"; import 'package:shared_preferences/shared_preferences.dart'; diff --git a/mobile/lib/services/favorites_service.dart b/mobile/lib/services/favorites_service.dart index 8623066247e..c8d2cb15f3a 100644 --- a/mobile/lib/services/favorites_service.dart +++ b/mobile/lib/services/favorites_service.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:typed_data'; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:flutter/material.dart'; import 'package:photos/core/configuration.dart'; import 'package:photos/core/event_bus.dart'; @@ -15,7 +16,6 @@ import 'package:photos/models/file/file.dart'; import 'package:photos/services/collections_service.dart'; import 'package:photos/services/remote_sync_service.dart'; import 'package:photos/ui/actions/collection/collection_sharing_actions.dart'; -import 'package:photos/utils/crypto_util.dart'; class FavoritesService { late Configuration _config; diff --git a/mobile/lib/services/file_magic_service.dart b/mobile/lib/services/file_magic_service.dart index 30e74d9c73e..99ffcfb622e 100644 --- a/mobile/lib/services/file_magic_service.dart +++ b/mobile/lib/services/file_magic_service.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'dart:typed_data'; import 'package:dio/dio.dart'; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:logging/logging.dart'; import 'package:photos/core/configuration.dart'; import 'package:photos/core/constants.dart'; @@ -16,7 +17,6 @@ import 'package:photos/models/file/file.dart'; import "package:photos/models/metadata/common_keys.dart"; import "package:photos/models/metadata/file_magic.dart"; import 'package:photos/services/remote_sync_service.dart'; -import 'package:photos/utils/crypto_util.dart'; import "package:photos/utils/file_key.dart"; class FileMagicService { diff --git a/mobile/lib/services/hidden_service.dart b/mobile/lib/services/hidden_service.dart index 8705ab7afae..069ee094f86 100644 --- a/mobile/lib/services/hidden_service.dart +++ b/mobile/lib/services/hidden_service.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'dart:typed_data'; import 'package:collection/collection.dart'; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:flutter/material.dart'; import 'package:logging/logging.dart'; import "package:photos/core/constants.dart"; @@ -18,7 +19,6 @@ import "package:photos/models/metadata/collection_magic.dart"; import "package:photos/models/metadata/common_keys.dart"; import 'package:photos/services/collections_service.dart'; import 'package:photos/services/file_magic_service.dart'; -import 'package:photos/utils/crypto_util.dart'; import 'package:photos/utils/dialog_util.dart'; extension HiddenService on CollectionsService { diff --git a/mobile/lib/services/user_service.dart b/mobile/lib/services/user_service.dart index 8949a271c80..5a1ef869101 100644 --- a/mobile/lib/services/user_service.dart +++ b/mobile/lib/services/user_service.dart @@ -4,6 +4,7 @@ import "dart:math"; import 'package:bip39/bip39.dart' as bip39; import 'package:dio/dio.dart'; +import 'package:ente_crypto/ente_crypto.dart'; import "package:flutter/foundation.dart"; import 'package:flutter/material.dart'; import 'package:logging/logging.dart'; @@ -40,7 +41,6 @@ import 'package:photos/ui/account/two_factor_recovery_page.dart'; import 'package:photos/ui/account/two_factor_setup_page.dart'; import "package:photos/ui/common/progress_dialog.dart"; import "package:photos/ui/tabs/home_widget.dart"; -import 'package:photos/utils/crypto_util.dart'; import 'package:photos/utils/dialog_util.dart'; import 'package:photos/utils/navigation_util.dart'; import 'package:photos/utils/toast_util.dart'; diff --git a/mobile/lib/ui/account/delete_account_page.dart b/mobile/lib/ui/account/delete_account_page.dart index e2b5fe7bc4e..7a433829b68 100644 --- a/mobile/lib/ui/account/delete_account_page.dart +++ b/mobile/lib/ui/account/delete_account_page.dart @@ -2,6 +2,7 @@ import "dart:async"; import 'dart:convert'; import "package:dropdown_button2/dropdown_button2.dart"; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:flutter/material.dart'; import "package:logging/logging.dart"; import 'package:photos/core/configuration.dart'; @@ -11,7 +12,6 @@ import 'package:photos/services/user_service.dart'; import 'package:photos/theme/ente_theme.dart'; import 'package:photos/ui/components/buttons/button_widget.dart'; import 'package:photos/ui/components/models/button_type.dart'; -import 'package:photos/utils/crypto_util.dart'; import 'package:photos/utils/dialog_util.dart'; import "package:photos/utils/toast_util.dart"; diff --git a/mobile/lib/ui/account/login_pwd_verification_page.dart b/mobile/lib/ui/account/login_pwd_verification_page.dart index 2d5e9237cee..c97f81c7f2b 100644 --- a/mobile/lib/ui/account/login_pwd_verification_page.dart +++ b/mobile/lib/ui/account/login_pwd_verification_page.dart @@ -1,9 +1,9 @@ import "package:dio/dio.dart"; +import "package:ente_crypto/ente_crypto.dart"; import "package:flutter/foundation.dart"; import 'package:flutter/material.dart'; import "package:logging/logging.dart"; import 'package:photos/core/configuration.dart'; -import "package:photos/core/errors.dart"; import "package:photos/generated/l10n.dart"; import "package:photos/models/api/user/srp.dart"; import "package:photos/services/user_service.dart"; diff --git a/mobile/lib/ui/account/password_reentry_page.dart b/mobile/lib/ui/account/password_reentry_page.dart index d3f6be56441..a93d4866a01 100644 --- a/mobile/lib/ui/account/password_reentry_page.dart +++ b/mobile/lib/ui/account/password_reentry_page.dart @@ -1,6 +1,7 @@ import 'dart:async'; import "dart:typed_data"; +import "package:ente_crypto/ente_crypto.dart"; import 'package:flutter/material.dart'; import 'package:logging/logging.dart'; import 'package:photos/core/configuration.dart'; @@ -14,7 +15,6 @@ import 'package:photos/ui/account/recovery_page.dart'; import 'package:photos/ui/common/dynamic_fab.dart'; import 'package:photos/ui/components/buttons/button_widget.dart'; import 'package:photos/ui/tabs/home_widget.dart'; -import "package:photos/utils/crypto_util.dart"; import 'package:photos/utils/dialog_util.dart'; import 'package:photos/utils/email_util.dart'; diff --git a/mobile/lib/ui/account/request_pwd_verification_page.dart b/mobile/lib/ui/account/request_pwd_verification_page.dart index e29d568867c..da96e97997d 100644 --- a/mobile/lib/ui/account/request_pwd_verification_page.dart +++ b/mobile/lib/ui/account/request_pwd_verification_page.dart @@ -1,13 +1,13 @@ import "dart:convert"; import "dart:typed_data"; +import "package:ente_crypto/ente_crypto.dart"; import 'package:flutter/material.dart'; import "package:logging/logging.dart"; import 'package:photos/core/configuration.dart'; import "package:photos/l10n/l10n.dart"; import "package:photos/theme/ente_theme.dart"; import 'package:photos/ui/common/dynamic_fab.dart'; -import "package:photos/utils/crypto_util.dart"; import "package:photos/utils/dialog_util.dart"; typedef OnPasswordVerifiedFn = Future Function(Uint8List bytes); diff --git a/mobile/lib/ui/account/two_factor_setup_page.dart b/mobile/lib/ui/account/two_factor_setup_page.dart index ac8c8eba0af..175ddd69669 100644 --- a/mobile/lib/ui/account/two_factor_setup_page.dart +++ b/mobile/lib/ui/account/two_factor_setup_page.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:ente_crypto/ente_crypto.dart'; import "package:flutter/material.dart"; import 'package:flutter/services.dart'; import 'package:photos/core/configuration.dart'; @@ -8,7 +9,6 @@ import "package:photos/generated/l10n.dart"; import 'package:photos/services/user_service.dart'; import 'package:photos/ui/account/recovery_key_page.dart'; import 'package:photos/ui/lifecycle_event_handler.dart'; -import 'package:photos/utils/crypto_util.dart'; import 'package:photos/utils/navigation_util.dart'; import 'package:photos/utils/toast_util.dart'; import "package:pinput/pinput.dart"; diff --git a/mobile/lib/ui/account/verify_recovery_page.dart b/mobile/lib/ui/account/verify_recovery_page.dart index 46585a734df..80fa00bae4f 100644 --- a/mobile/lib/ui/account/verify_recovery_page.dart +++ b/mobile/lib/ui/account/verify_recovery_page.dart @@ -1,5 +1,6 @@ import 'package:bip39/bip39.dart' as bip39; import 'package:dio/dio.dart'; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:flutter/material.dart'; import 'package:logging/logging.dart'; import 'package:photos/core/event_bus.dart'; @@ -13,7 +14,6 @@ import "package:photos/theme/ente_theme.dart"; import 'package:photos/ui/account/recovery_key_page.dart'; import 'package:photos/ui/common/gradient_button.dart'; import 'package:photos/ui/components/buttons/button_widget.dart'; -import 'package:photos/utils/crypto_util.dart'; import 'package:photos/utils/dialog_util.dart'; import 'package:photos/utils/navigation_util.dart'; diff --git a/mobile/lib/ui/settings/account_section_widget.dart b/mobile/lib/ui/settings/account_section_widget.dart index 2c67514268a..1182208aea4 100644 --- a/mobile/lib/ui/settings/account_section_widget.dart +++ b/mobile/lib/ui/settings/account_section_widget.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:ente_crypto/ente_crypto.dart'; import "package:flutter/foundation.dart"; import 'package:flutter/material.dart'; import "package:photos/emergency/emergency_page.dart"; @@ -16,7 +17,6 @@ import 'package:photos/ui/components/expandable_menu_item_widget.dart'; import 'package:photos/ui/components/menu_item_widget/menu_item_widget.dart'; import "package:photos/ui/payment/subscription.dart"; import 'package:photos/ui/settings/common_settings.dart'; -import "package:photos/utils/crypto_util.dart"; import 'package:photos/utils/dialog_util.dart'; import "package:photos/utils/navigation_util.dart"; import "package:url_launcher/url_launcher_string.dart"; diff --git a/mobile/lib/ui/settings/debug/debug_section_widget.dart b/mobile/lib/ui/settings/debug/debug_section_widget.dart index 55b0ef4f10f..5265e96f6b8 100644 --- a/mobile/lib/ui/settings/debug/debug_section_widget.dart +++ b/mobile/lib/ui/settings/debug/debug_section_widget.dart @@ -1,3 +1,4 @@ +import 'package:ente_crypto/ente_crypto.dart'; import 'package:flutter/material.dart'; import 'package:photos/core/configuration.dart'; import "package:photos/service_locator.dart"; @@ -9,7 +10,6 @@ import 'package:photos/ui/components/captioned_text_widget.dart'; import 'package:photos/ui/components/expandable_menu_item_widget.dart'; import 'package:photos/ui/components/menu_item_widget/menu_item_widget.dart'; import 'package:photos/ui/settings/common_settings.dart'; -import 'package:photos/utils/crypto_util.dart'; import 'package:photos/utils/toast_util.dart'; class DebugSectionWidget extends StatelessWidget { diff --git a/mobile/lib/ui/settings/lock_screen/lock_screen_password.dart b/mobile/lib/ui/settings/lock_screen/lock_screen_password.dart index 5341f21b667..3c8c2cc330f 100644 --- a/mobile/lib/ui/settings/lock_screen/lock_screen_password.dart +++ b/mobile/lib/ui/settings/lock_screen/lock_screen_password.dart @@ -1,5 +1,6 @@ import "dart:convert"; +import 'package:ente_crypto/ente_crypto.dart'; import "package:flutter/material.dart"; import "package:flutter/services.dart"; import "package:flutter_sodium/flutter_sodium.dart"; @@ -10,7 +11,6 @@ import "package:photos/ui/components/buttons/icon_button_widget.dart"; import "package:photos/ui/components/text_input_widget.dart"; import "package:photos/ui/settings/lock_screen/lock_screen_confirm_password.dart"; import "package:photos/ui/settings/lock_screen/lock_screen_options.dart"; -import "package:photos/utils/crypto_util.dart"; import "package:photos/utils/lock_screen_settings.dart"; class LockScreenPassword extends StatefulWidget { diff --git a/mobile/lib/ui/settings/lock_screen/lock_screen_pin.dart b/mobile/lib/ui/settings/lock_screen/lock_screen_pin.dart index 2f526751f23..039b9df242e 100644 --- a/mobile/lib/ui/settings/lock_screen/lock_screen_pin.dart +++ b/mobile/lib/ui/settings/lock_screen/lock_screen_pin.dart @@ -1,5 +1,6 @@ import "dart:convert"; +import 'package:ente_crypto/ente_crypto.dart'; import "package:flutter/material.dart"; import "package:flutter/services.dart"; import "package:flutter_sodium/flutter_sodium.dart"; @@ -11,7 +12,6 @@ import "package:photos/ui/components/buttons/icon_button_widget.dart"; import "package:photos/ui/settings/lock_screen/custom_pin_keypad.dart"; import "package:photos/ui/settings/lock_screen/lock_screen_confirm_pin.dart"; import "package:photos/ui/settings/lock_screen/lock_screen_options.dart"; -import "package:photos/utils/crypto_util.dart"; import "package:photos/utils/lock_screen_settings.dart"; import 'package:pinput/pinput.dart'; diff --git a/mobile/lib/ui/settings/security_section_widget.dart b/mobile/lib/ui/settings/security_section_widget.dart index 403a5506d47..8b73a1cc004 100644 --- a/mobile/lib/ui/settings/security_section_widget.dart +++ b/mobile/lib/ui/settings/security_section_widget.dart @@ -1,6 +1,7 @@ import 'dart:async'; import "dart:typed_data"; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:flutter/material.dart'; import "package:local_auth/local_auth.dart"; import "package:logging/logging.dart"; @@ -24,7 +25,6 @@ import 'package:photos/ui/components/toggle_switch_widget.dart'; import 'package:photos/ui/settings/common_settings.dart'; import "package:photos/ui/settings/lock_screen/lock_screen_options.dart"; import "package:photos/utils/auth_util.dart"; -import "package:photos/utils/crypto_util.dart"; import "package:photos/utils/dialog_util.dart"; import "package:photos/utils/navigation_util.dart"; import "package:photos/utils/toast_util.dart"; diff --git a/mobile/lib/ui/sharing/manage_links_widget.dart b/mobile/lib/ui/sharing/manage_links_widget.dart index 6e55fbfbb99..b77aa002118 100644 --- a/mobile/lib/ui/sharing/manage_links_widget.dart +++ b/mobile/lib/ui/sharing/manage_links_widget.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:collection/collection.dart'; +import 'package:ente_crypto/ente_crypto.dart'; import "package:fast_base58/fast_base58.dart"; import 'package:flutter/material.dart'; import "package:flutter/services.dart"; @@ -18,7 +19,6 @@ import 'package:photos/ui/components/menu_section_description_widget.dart'; import "package:photos/ui/components/toggle_switch_widget.dart"; import 'package:photos/ui/sharing/pickers/device_limit_picker_page.dart'; import 'package:photos/ui/sharing/pickers/link_expiry_picker_page.dart'; -import 'package:photos/utils/crypto_util.dart'; import 'package:photos/utils/date_time_util.dart'; import 'package:photos/utils/dialog_util.dart'; import 'package:photos/utils/navigation_util.dart'; diff --git a/mobile/lib/ui/tabs/home_widget.dart b/mobile/lib/ui/tabs/home_widget.dart index 28165ddd4fc..f48113923ca 100644 --- a/mobile/lib/ui/tabs/home_widget.dart +++ b/mobile/lib/ui/tabs/home_widget.dart @@ -66,7 +66,7 @@ import "package:photos/ui/viewer/gallery/shared_public_collection_page.dart"; import "package:photos/ui/viewer/search/search_widget.dart"; import 'package:photos/ui/viewer/search_tab/search_tab.dart'; import "package:photos/utils/collection_util.dart"; -import "package:photos/utils/crypto_util.dart"; +import "package:ente_crypto/ente_crypto.dart"; import 'package:photos/utils/dialog_util.dart'; import "package:photos/utils/diff_fetcher.dart"; import "package:photos/utils/navigation_util.dart"; diff --git a/mobile/lib/utils/diff_fetcher.dart b/mobile/lib/utils/diff_fetcher.dart index 3bcf22b7d00..405978f2f8f 100644 --- a/mobile/lib/utils/diff_fetcher.dart +++ b/mobile/lib/utils/diff_fetcher.dart @@ -1,16 +1,16 @@ import 'dart:convert'; import 'dart:math'; -import "package:dio/dio.dart"; -import "package:flutter/material.dart"; +import 'package:dio/dio.dart'; +import 'package:ente_crypto/ente_crypto.dart'; +import 'package:flutter/material.dart'; import 'package:logging/logging.dart'; import 'package:photos/core/network/network.dart'; import 'package:photos/db/files_db.dart'; -import "package:photos/generated/l10n.dart"; +import 'package:photos/generated/l10n.dart'; import 'package:photos/models/file/file.dart'; import "package:photos/models/metadata/file_magic.dart"; import "package:photos/services/collections_service.dart"; -import 'package:photos/utils/crypto_util.dart'; import "package:photos/utils/dialog_util.dart"; import "package:photos/utils/file_key.dart"; diff --git a/mobile/lib/utils/file_download_util.dart b/mobile/lib/utils/file_download_util.dart index b998c22db38..8958136c69c 100644 --- a/mobile/lib/utils/file_download_util.dart +++ b/mobile/lib/utils/file_download_util.dart @@ -3,6 +3,7 @@ import "dart:collection"; import 'dart:io'; import 'package:dio/dio.dart'; +import 'package:ente_crypto/ente_crypto.dart'; import "package:flutter/foundation.dart"; import 'package:logging/logging.dart'; import 'package:path/path.dart' as file_path; @@ -18,7 +19,6 @@ import "package:photos/models/ignored_file.dart"; import "package:photos/services/collections_service.dart"; import "package:photos/services/ignored_files_service.dart"; import "package:photos/services/local_sync_service.dart"; -import 'package:photos/utils/crypto_util.dart'; import "package:photos/utils/data_util.dart"; import "package:photos/utils/fake_progress.dart"; import "package:photos/utils/file_key.dart"; diff --git a/mobile/lib/utils/file_key.dart b/mobile/lib/utils/file_key.dart index 2a27d33bc20..345c6f6b1d8 100644 --- a/mobile/lib/utils/file_key.dart +++ b/mobile/lib/utils/file_key.dart @@ -1,9 +1,9 @@ import "dart:typed_data"; import "package:computer/computer.dart"; +import "package:ente_crypto/ente_crypto.dart"; import "package:photos/models/file/file.dart"; import "package:photos/services/collections_service.dart"; -import "package:photos/utils/crypto_util.dart"; Uint8List getFileKey(EnteFile file) { final encryptedKey = CryptoUtil.base642bin(file.encryptedKey!); diff --git a/mobile/lib/utils/file_uploader.dart b/mobile/lib/utils/file_uploader.dart index 659fd560f1a..78b31ff4f90 100644 --- a/mobile/lib/utils/file_uploader.dart +++ b/mobile/lib/utils/file_uploader.dart @@ -6,6 +6,7 @@ import 'dart:math' as math; import 'package:collection/collection.dart'; import 'package:dio/dio.dart'; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:flutter/foundation.dart'; import 'package:logging/logging.dart'; import "package:path/path.dart"; @@ -25,7 +26,6 @@ import 'package:photos/events/subscription_purchased_event.dart'; import 'package:photos/main.dart'; import "package:photos/models/backup/backup_item.dart"; import "package:photos/models/backup/backup_item_status.dart"; -import 'package:photos/models/encryption_result.dart'; import 'package:photos/models/file/file.dart'; import 'package:photos/models/file/file_type.dart'; import "package:photos/models/metadata/file_magic.dart"; @@ -39,7 +39,6 @@ import 'package:photos/services/local_sync_service.dart'; import "package:photos/services/preview_video_store.dart"; import 'package:photos/services/sync_service.dart'; import "package:photos/services/user_service.dart"; -import 'package:photos/utils/crypto_util.dart'; import 'package:photos/utils/data_util.dart'; import "package:photos/utils/exif_util.dart"; import "package:photos/utils/file_key.dart"; diff --git a/mobile/lib/utils/file_uploader_util.dart b/mobile/lib/utils/file_uploader_util.dart index 6f37236b8ee..8a7afb44e00 100644 --- a/mobile/lib/utils/file_uploader_util.dart +++ b/mobile/lib/utils/file_uploader_util.dart @@ -6,6 +6,7 @@ import 'dart:ui' as ui; import "package:archive/archive_io.dart"; import "package:computer/computer.dart"; +import 'package:ente_crypto/ente_crypto.dart'; import "package:exif/exif.dart"; import 'package:logging/logging.dart'; import "package:motion_photos/motion_photos.dart"; @@ -23,7 +24,6 @@ import 'package:photos/models/file/file_type.dart'; import "package:photos/models/location/location.dart"; import "package:photos/models/metadata/file_magic.dart"; import "package:photos/services/file_magic_service.dart"; -import 'package:photos/utils/crypto_util.dart'; import "package:photos/utils/exif_util.dart"; import 'package:photos/utils/file_util.dart'; import "package:uuid/uuid.dart"; diff --git a/mobile/lib/utils/gzip.dart b/mobile/lib/utils/gzip.dart index 8de71f49df6..3c8fbafe9ed 100644 --- a/mobile/lib/utils/gzip.dart +++ b/mobile/lib/utils/gzip.dart @@ -2,8 +2,8 @@ import "dart:convert"; import "dart:io"; import "package:computer/computer.dart"; +import "package:ente_crypto/ente_crypto.dart"; import "package:flutter/foundation.dart"; -import "package:photos/utils/crypto_util.dart"; class ChaChaEncryptionResult { final String encData; diff --git a/mobile/lib/utils/lock_screen_settings.dart b/mobile/lib/utils/lock_screen_settings.dart index 2a42b1d9306..f60ed485046 100644 --- a/mobile/lib/utils/lock_screen_settings.dart +++ b/mobile/lib/utils/lock_screen_settings.dart @@ -1,9 +1,9 @@ import "dart:convert"; +import "package:ente_crypto/ente_crypto.dart"; import "package:flutter/foundation.dart"; import "package:flutter_secure_storage/flutter_secure_storage.dart"; import "package:flutter_sodium/flutter_sodium.dart"; -import "package:photos/utils/crypto_util.dart"; import "package:privacy_screen/privacy_screen.dart"; import "package:shared_preferences/shared_preferences.dart"; diff --git a/mobile/lib/utils/thumbnail_util.dart b/mobile/lib/utils/thumbnail_util.dart index 77699768886..17d52c64321 100644 --- a/mobile/lib/utils/thumbnail_util.dart +++ b/mobile/lib/utils/thumbnail_util.dart @@ -4,6 +4,7 @@ import 'dart:io'; import "dart:typed_data"; import 'package:dio/dio.dart'; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:logging/logging.dart'; import 'package:photo_manager/photo_manager.dart'; import 'package:photos/core/cache/thumbnail_in_memory_cache.dart'; @@ -13,7 +14,6 @@ import 'package:photos/core/errors.dart'; import 'package:photos/core/network/network.dart'; import 'package:photos/models/file/file.dart'; import "package:photos/services/collections_service.dart"; -import 'package:photos/utils/crypto_util.dart'; import "package:photos/utils/file_key.dart"; import 'package:photos/utils/file_uploader_util.dart'; import 'package:photos/utils/file_util.dart'; diff --git a/mobile/lib/utils/trash_diff_fetcher.dart b/mobile/lib/utils/trash_diff_fetcher.dart index e525125a829..80041315c5b 100644 --- a/mobile/lib/utils/trash_diff_fetcher.dart +++ b/mobile/lib/utils/trash_diff_fetcher.dart @@ -2,10 +2,10 @@ import 'dart:convert'; import 'dart:math'; import "package:dio/dio.dart"; +import 'package:ente_crypto/ente_crypto.dart'; import 'package:logging/logging.dart'; import 'package:photos/models/file/trash_file.dart'; import "package:photos/models/metadata/file_magic.dart"; -import 'package:photos/utils/crypto_util.dart'; import "package:photos/utils/file_key.dart"; class TrashDiffFetcher { diff --git a/mobile/plugins/ente_crypto/.metadata b/mobile/plugins/ente_crypto/.metadata new file mode 100644 index 00000000000..9fc7ede54de --- /dev/null +++ b/mobile/plugins/ente_crypto/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: 0b8abb4724aa590dd0f429683339b1e045a1594d + channel: stable + +project_type: plugin diff --git a/mobile/plugins/ente_crypto/analysis_options.yaml b/mobile/plugins/ente_crypto/analysis_options.yaml new file mode 100644 index 00000000000..fac60e247cb --- /dev/null +++ b/mobile/plugins/ente_crypto/analysis_options.yaml @@ -0,0 +1 @@ +include: ../../analysis_options.yaml \ No newline at end of file diff --git a/mobile/plugins/ente_crypto/lib/ente_crypto.dart b/mobile/plugins/ente_crypto/lib/ente_crypto.dart new file mode 100644 index 00000000000..02b6d0bb588 --- /dev/null +++ b/mobile/plugins/ente_crypto/lib/ente_crypto.dart @@ -0,0 +1,4 @@ +export 'src/crypto.dart'; +export 'src/models/derived_key_result.dart'; +export 'src/models/encryption_result.dart'; +export 'src/models/errors.dart'; diff --git a/mobile/lib/utils/crypto_util.dart b/mobile/plugins/ente_crypto/lib/src/crypto.dart similarity index 98% rename from mobile/lib/utils/crypto_util.dart rename to mobile/plugins/ente_crypto/lib/src/crypto.dart index 52ed85f857a..7a3ec6c3c58 100644 --- a/mobile/lib/utils/crypto_util.dart +++ b/mobile/plugins/ente_crypto/lib/src/crypto.dart @@ -2,12 +2,12 @@ import "dart:convert"; import "dart:io"; import 'dart:typed_data'; -import 'package:computer/computer.dart'; -import 'package:flutter_sodium/flutter_sodium.dart'; -import 'package:logging/logging.dart'; -import "package:photos/core/errors.dart"; -import 'package:photos/models/derived_key_result.dart'; -import 'package:photos/models/encryption_result.dart'; +import "package:computer/computer.dart"; +import "package:ente_crypto/src/models/derived_key_result.dart"; +import "package:ente_crypto/src/models/encryption_result.dart"; +import "package:ente_crypto/src/models/errors.dart"; +import "package:flutter_sodium/flutter_sodium.dart"; +import "package:logging/logging.dart"; const int encryptionChunkSize = 4 * 1024 * 1024; final int decryptionChunkSize = diff --git a/mobile/lib/models/derived_key_result.dart b/mobile/plugins/ente_crypto/lib/src/models/derived_key_result.dart similarity index 100% rename from mobile/lib/models/derived_key_result.dart rename to mobile/plugins/ente_crypto/lib/src/models/derived_key_result.dart diff --git a/mobile/lib/models/encryption_result.dart b/mobile/plugins/ente_crypto/lib/src/models/encryption_result.dart similarity index 100% rename from mobile/lib/models/encryption_result.dart rename to mobile/plugins/ente_crypto/lib/src/models/encryption_result.dart diff --git a/mobile/plugins/ente_crypto/lib/src/models/errors.dart b/mobile/plugins/ente_crypto/lib/src/models/errors.dart new file mode 100644 index 00000000000..3d4a1864569 --- /dev/null +++ b/mobile/plugins/ente_crypto/lib/src/models/errors.dart @@ -0,0 +1,3 @@ +class KeyDerivationError extends Error {} + +class LoginKeyDerivationError extends Error {} diff --git a/mobile/plugins/ente_crypto/pubspec.lock b/mobile/plugins/ente_crypto/pubspec.lock new file mode 100644 index 00000000000..0807ae8a31d --- /dev/null +++ b/mobile/plugins/ente_crypto/pubspec.lock @@ -0,0 +1,105 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + collection: + dependency: "direct main" + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + computer: + dependency: "direct main" + description: + path: "." + ref: HEAD + resolved-ref: "82e365fed8a1a76f6eea0220de98389eed7b0445" + url: "https://github.com/ente-io/computer.git" + source: git + version: "3.2.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "13a6ccf6a459a125b3fcdb6ec73bd5ff90822e071207c663bfd1f70062d51d18" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + flutter_sodium: + dependency: "direct main" + description: + name: flutter_sodium + sha256: "0e8c475088f8c9a60fda0ef19ee42cdcb574f8549c8ea809f736ef60e8ad51a6" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + lints: + dependency: transitive + description: + name: lints + sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + logging: + dependency: "direct main" + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + url: "https://pub.dev" + source: hosted + version: "1.15.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" +sdks: + dart: ">=3.5.0 <4.0.0" + flutter: ">=1.12.0" diff --git a/mobile/plugins/ente_crypto/pubspec.yaml b/mobile/plugins/ente_crypto/pubspec.yaml new file mode 100644 index 00000000000..a3aea1ca8a2 --- /dev/null +++ b/mobile/plugins/ente_crypto/pubspec.yaml @@ -0,0 +1,20 @@ +name: ente_crypto +version: 0.0.1 +publish_to: none + +environment: + sdk: '>=3.3.0 <4.0.0' + +dependencies: + collection: + computer: + git: "https://github.com/ente-io/computer.git" + flutter: + sdk: flutter + flutter_sodium: ^0.2.0 + logging: ^1.3.0 + +dev_dependencies: + flutter_lints: + +flutter: \ No newline at end of file diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock index ab9c4cd2a44..bc7f1692147 100644 --- a/mobile/pubspec.lock +++ b/mobile/pubspec.lock @@ -511,6 +511,13 @@ packages: relative: true source: path version: "0.0.1" + ente_crypto: + dependency: "direct main" + description: + path: "plugins/ente_crypto" + relative: true + source: path + version: "0.0.1" ente_feature_flag: dependency: "direct main" description: @@ -1526,10 +1533,10 @@ packages: dependency: "direct main" description: name: logging - sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" lottie: dependency: "direct main" description: diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 2af747b753d..f5e6f65e94a 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -53,6 +53,8 @@ dependencies: path: plugins/ente_cast ente_cast_normal: path: plugins/ente_cast_normal + ente_crypto: + path: plugins/ente_crypto ente_feature_flag: path: plugins/ente_feature_flag equatable: ^2.0.5 @@ -111,7 +113,7 @@ dependencies: local_auth: ^2.1.5 local_auth_android: local_auth_ios: - logging: ^1.0.1 + logging: ^1.3.0 lottie: ^1.2.2 maps_launcher: ^2.2.1 media_extension: