encryptBatch static method

EncryptedScanData encryptBatch(
  1. List<ScanResult> results, {
  2. required String password,
  3. 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}',
  );
}