encrypt method

  1. @override
Future<File> encrypt({
  1. String? inputFile,
  2. String? outputFile,
  3. bool? useCompress,
})

inputFile input file name

outputFile encrypted file name

After encryption returns encrypted File instance

Implementation

@override
Future<File> encrypt({
  String? inputFile,
  String? outputFile,
  bool? useCompress,
}) async {
  bool _useCompress = useCompress == null ? this.useCompress : useCompress;
  File _inputFile = File(p.join(dir, inputFile));
  File _outputFile = File(p.join(dir, outputFile));

  bool _outputFileExists = await _outputFile.exists();
  bool _inputFileExists = await _inputFile.exists();

  if (!_outputFileExists) {
    await _outputFile.create();
  }

  if (!_inputFileExists) {
    throw Exception("Input file not found.");
  }

  final _fileContents = _inputFile.readAsBytesSync();

  final Encrypter _encrypter = Encrypter(AES(_key));

  final Encrypted _encrypted = _encrypter.encryptBytes(
    _fileContents,
    iv: _iv,
  );

  var compressedContent;

  if (_useCompress) {
    compressedContent = GZipEncoder().encode(_encrypted.bytes.toList())!;
  }

  File _encryptedFile = await _outputFile
      .writeAsBytes(_useCompress ? compressedContent : _encrypted.bytes);

  return _encryptedFile;
}