encryptBatch static method
EncryptedScanData
encryptBatch(
- List<
ScanResult> results, { - required String password,
- Duration? ttl,
Encrypts a list of ScanResult items into a single encrypted bundle.
Implementation
static EncryptedScanData encryptBatch(
List<ScanResult> results, {
required String password,
Duration? ttl,
}) {
final salt = _generateSecureBytes(16);
final iv = _generateSecureBytes(16);
final key = _deriveKey(password, salt, keyLength: 32);
final jsonList = results.map((r) => r.toJson()).toList();
final plaintext = jsonEncode({'batch': jsonList, 'count': results.length});
final plaintextBytes = utf8.encode(plaintext);
final ciphertext = _xorEncrypt(Uint8List.fromList(plaintextBytes), key, iv);
return EncryptedScanData(
ciphertext: ciphertext,
iv: iv,
salt: salt,
encryptedAt: DateTime.now(),
expiresAt: ttl != null ? DateTime.now().add(ttl) : null,
modeHint: 'batch_${results.length}',
);
}