processBytes method
void
processBytes()
override
Process len bytes of data given by inp and starting at offset inpOff.
The resulting cipher text is put in out beginning at position outOff.
Implementation
@override
void processBytes(
Uint8List? inp, int inpOff, int len, Uint8List? out, int outOff) {
if (!_initialised) {
throw StateError('Salsa20 not initialized: please call init() first');
}
if ((inpOff + len) > inp!.length) {
throw ArgumentError(
'Input buffer too short or requested length too long');
}
if ((outOff + len) > out!.length) {
throw ArgumentError(
'Output buffer too short or requested length too long');
}
for (var i = 0; i < len; i++) {
if (_keyStreamOffset == 0) {
_generateKeyStream(_keyStream);
if (++_state[8] == 0) {
++_state[9];
}
}
out[i + outOff] = clip8(_keyStream[_keyStreamOffset] ^ inp[i + inpOff]);
_keyStreamOffset = (_keyStreamOffset + 1) & 63;
}
}