packRobust static method
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;
}