update method

poly1305 update(
  1. Uint8List m,
  2. int mpos,
  3. int bytes
)

Implementation

poly1305 update(Uint8List m, int mpos, int bytes) {
  int i, want;

  if (_leftover != 0) {
    want = (16 - _leftover);
    if (want > bytes) want = bytes;
    for (i = 0; i < want; i++) _buffer[_leftover + i] = m[mpos + i];
    bytes -= want;
    mpos += want;
    _leftover += want;
    if (_leftover < 16) return this;
    blocks(_buffer, 0, 16);
    _leftover = 0;
  }

  if (bytes >= 16) {
    want = bytes - (bytes % 16);
    blocks(m, mpos, want);
    mpos += want;
    bytes -= want;
  }

  if (bytes != 0) {
    for (i = 0; i < bytes; i++)
      _buffer[_leftover + i] = m[mpos + i];
    _leftover += bytes;
  }

  return this;
}