packRobust static method

Uint8List packRobust(
  1. Uint8List encryptedPackage, {
  2. required Uint8List keyBytes,
  3. int repetition = _defaultRepetition,
})

Implementation

static Uint8List packRobust(
  Uint8List encryptedPackage, {
  required Uint8List keyBytes,
  int repetition = _defaultRepetition,
}) {
  if (repetition < 1 || repetition > 15) {
    throw ArgumentError.value(repetition, 'repetition', 'must be in 1..15');
  }
  final repeated = _repeatEncodeBits(encryptedPackage, repetition);
  final seed = _seedFromKey(keyBytes);
  final interleaved = _permuteBytes(repeated, seed);
  final crc = _crc32(encryptedPackage);

  final out = Uint8List(_robustHeaderLen + interleaved.length);
  out.setRange(0, 4, robustMagic);
  out[4] = _robustVersion;
  out[5] = repetition & 0xff;
  out[6] = 0;
  out[7] = 0;
  _writeBe32(out, 8, encryptedPackage.length);
  _writeBe32(out, 12, interleaved.length);
  _writeBe32(out, 16, crc);
  out.setRange(_robustHeaderLen, out.length, interleaved);
  return out;
}