encryptFileChunks static method

List<Map<String, dynamic>> encryptFileChunks(
  1. Uint8List fileBytes,
  2. String senderId,
  3. String receiverId, {
  4. String? timestamp,
})

Encrypt file as chunks

Implementation

static List<Map<String, dynamic>> encryptFileChunks(
  Uint8List fileBytes,
  String senderId,
  String receiverId, {
  String? timestamp,
}) {
  final chunks = <Map<String, dynamic>>[];
  final totalChunks = (fileBytes.length / chunkSize).ceil();
  for (var i = 0; i < totalChunks; i++) {
    final start = i * chunkSize;
    final end = ((i + 1) * chunkSize).clamp(0, fileBytes.length);
    final chunkBytes = fileBytes.sublist(start, end);
    final chunkTime = timestamp ?? DateTime.now().toUtc().toIso8601String();
    final chunkEnvelope = KaalkaProtocol.encryptEnvelope(
      base64.encode(chunkBytes),
      senderId,
      receiverId,
      timestamp: chunkTime,
      seq: i + 1,
    );
    chunkEnvelope['chunkIndex'] = i;
    chunks.add(chunkEnvelope);
  }
  return chunks;
}