update method

SHA3 update(
  1. List<int> message
)

Implementation

SHA3 update(List<int> message) {
  if (finalized) {
    throw Exception(FINALIZE_ERROR);
  }

  var blocks = this.blocks,
      byteCount = this.byteCount,
      length = message.length,
      blockCount = this.blockCount,
      index = 0,
      s = this.s,
      i;

  while (index < length) {
    if (reset) {
      reset = false;
      blocks![0] = block;
      for (i = 1; i < blockCount! + 1; ++i) {
        blocks[i] = 0;
      }
    }

    for (i = start; index < length && i < byteCount; ++index) {
      blocks![i >> 2] |= message[index] << SHIFT[i++ & 3];
    }

    lastByteIndex = i;
    if (i >= byteCount) {
      start = i - byteCount;
      block = blocks![blockCount!];
      for (i = 0; i < blockCount; ++i) {
        s![i] ^= blocks[i];
      }
      f(s!);
      reset = true;
    } else {
      start = i;
    }
  }

  return this;
}