decrypt method

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

inputFile encrypted file name

outputFile output file name

After decryption returns decrypted File instance

Implementation

@override
Future<File> decrypt({
  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();

  var compressedContent;

  if (_useCompress) {
    compressedContent = GZipDecoder().decodeBytes(_fileContents.toList());
  }

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

  final _encryptedFile =
      Encrypted((_useCompress ? compressedContent : _fileContents));
  final _decryptedFile = _encrypter.decryptBytes(_encryptedFile, iv: _iv);

  return await _outputFile.writeAsBytes(_decryptedFile);
}