decodeMessageFromImage function

DecodeResponse decodeMessageFromImage (DecodeRequest req)

Implementation

DecodeResponse decodeMessageFromImage(DecodeRequest req) {
  Uint16List img = Uint16List.fromList(req.original.getBytes().toList());
  Uint16List extracted = extractBitsFromImg(img);
  Uint16List padded = padToBytes(extracted);
  Uint16List byteMsg = bits2bytes(padded);
  Uint16List sanitized = sanitizePaddingZeros(byteMsg);
  String msg = bytes2msg(sanitized);
  String token = req.token;
  if (req.shouldDecrypt()) {
    crypto.Key key = crypto.Key.fromUtf8(padCryptionKey(token));
    crypto.IV iv = crypto.IV.fromLength(16);
    crypto.Encrypter encrypter = crypto.Encrypter(crypto.AES(key));
    crypto.Encrypted encryptedMsg = crypto.Encrypted.fromBase64(msg);
    msg = encrypter.decrypt(encryptedMsg, iv: iv);
  }
  DecodeResponse response = DecodeResponse(msg);
  return response;
}