import 'dart:convert'; import 'dart:math'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; class CryptoManager { static const _databaseKeyName = 'glp1_sqlcipher_master_key'; final FlutterSecureStorage _secureStorage; CryptoManager({FlutterSecureStorage? secureStorage}) : _secureStorage = secureStorage ?? const FlutterSecureStorage(); Future getOrCreateDatabaseEncryptionKey() async { final existingKey = await _secureStorage.read(key: _databaseKeyName); if (existingKey != null && existingKey.isNotEmpty) { return existingKey; } final random = Random.secure(); final values = List.generate(32, (i) => random.nextInt(256)); final newKey = base64UrlEncode(values); await _secureStorage.write(key: _databaseKeyName, value: newKey); return newKey; } }