void updateHash()

in lib/src/sha512_fastsinks.dart [49:96]


  void updateHash(Uint32List chunk) {
    assert(chunk.length == 32);

    // Prepare message schedule.
    for (var i = 0, x = 0; i < 32; i += 2, x++) {
      _extended[x] = (chunk[i] << 32) | chunk[i + 1];
    }

    for (var t = 16; t < 80; t++) {
      _extended[t] = _ssig1(_extended[t - 2]) +
          _extended[t - 7] +
          _ssig0(_extended[t - 15]) +
          _extended[t - 16];
    }

    // Shuffle around the bits.
    var a = _digest[0];
    var b = _digest[1];
    var c = _digest[2];
    var d = _digest[3];
    var e = _digest[4];
    var f = _digest[5];
    var g = _digest[6];
    var h = _digest[7];

    for (var i = 0; i < 80; i++) {
      var temp1 = h + _bsig1(e) + _ch(e, f, g) + _noise64[i] + _extended[i];
      var temp2 = _bsig0(a) + _maj(a, b, c);
      h = g;
      g = f;
      f = e;
      e = d + temp1;
      d = c;
      c = b;
      b = a;
      a = temp1 + temp2;
    }

    // Update hash values after iteration.
    _digest[0] += a;
    _digest[1] += b;
    _digest[2] += c;
    _digest[3] += d;
    _digest[4] += e;
    _digest[5] += f;
    _digest[6] += g;
    _digest[7] += h;
  }