Files
Remever/lib/services/core/enc_keys_service.dart
2025-03-03 20:59:42 +03:00

53 lines
1.3 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Dart imports:
import 'dart:convert';
import 'dart:typed_data';
import 'package:hive_ce/hive.dart';
import 'package:remever/common/storage.dart';
import 'core_service.dart';
///
/// Сервис для работы с ключами шифрования
///
class EncKeysService extends CoreService {
///
/// Получение ключа для шифрования
///
Future<String> getRawKey(String keyFor) async {
String? encKey = await hiveKeysStorage.read(key: keyFor);
if (encKey == null) {
final List<int> hiveKey = Hive.generateSecureKey();
encKey = base64UrlEncode(hiveKey);
await hiveKeysStorage.write(key: keyFor, value: encKey);
}
return encKey;
}
///
/// Получение ключа шифрования
///
/// Если ключа ранее не существовало - он будет создан
///
Future<Uint8List> getKey(String keyFor) async {
String? encKey = await getRawKey(keyFor);
return base64Url.decode(encKey);
}
///
/// Получение ключа шифрования в виде строки
///
/// Если ключа ранее не существовало - он будет создан
///
Future<String> getStringKey(String keyFor) async {
final Uint8List key = await getKey(keyFor);
return String.fromCharCodes(key);
}
}