getOrCreateDbKey function

Future<List<int>> getOrCreateDbKey([
  1. FlutterSecureStorage? storage
])

Loads or creates a 32-byte key for database encryption.

Uses FlutterSecureStorage to persist the key.

Implementation

Future<List<int>> getOrCreateDbKey([FlutterSecureStorage? storage]) async {
  final store = storage ?? const FlutterSecureStorage();
  var stored = await store.read(key: _plexDbKeyStorageKey);
  if (stored != null) {
    try {
      final bytes = base64Decode(stored);
      if (bytes.length == 32) return bytes.toList();
    } catch (_) {}
  }
  final newKey = _generateAesKey();
  await store.write(key: _plexDbKeyStorageKey, value: base64Encode(newKey));
  return newKey;
}