function getRandomScalar()

in src/ristretto255.js [875:895]


function getRandomScalar() {
  let r = new Uint8Array(32);
  let c = 0;
  // rejection sampling loop with constant-time body
  do {
    r = nacl.randomBytes(32);
    // lowlevel.randombytes(r, 32);
    r[31] &= 0x1f;

    // constant-time check for r < L, if so break and return r
    let i = 32;
    let n = 1;
    do {
      i--;
      c |= ((r[i] - lowlevel.L[i]) >> 8) & n;
      n &= ((r[i] ^ lowlevel.L[i]) - 1) >> 8;
    } while (i !== 0);
  } while (c === 0);

  return r;
}