first commit
This commit is contained in:
52
lib/services/core/enc_keys_service.dart
Normal file
52
lib/services/core/enc_keys_service.dart
Normal file
@@ -0,0 +1,52 @@
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user