quarterRound method

void quarterRound(
  1. int a,
  2. int b,
  3. int c,
  4. int d,
)

Performs a quarter round in place on the state words a, b, c, d, without allocating intermediate lists.

Implementation

void quarterRound(int a, int b, int c, int d) {
  final s = chaChaState;

  s[a] = (s[a] + s[b]) & 0xFFFFFFFF;
  s[d] = rotateLeft(s[d] ^ s[a], 16);

  s[c] = (s[c] + s[d]) & 0xFFFFFFFF;
  s[b] = rotateLeft(s[b] ^ s[c], 12);

  s[a] = (s[a] + s[b]) & 0xFFFFFFFF;
  s[d] = rotateLeft(s[d] ^ s[a], 8);

  s[c] = (s[c] + s[d]) & 0xFFFFFFFF;
  s[b] = rotateLeft(s[b] ^ s[c], 7);
}