polytomsg function

void polytomsg(
  1. Uint8List msg,
  2. Poly p
)

Converts a polynomial into a message (byte array). Groups of 8 coefficients are converted back into a single byte.

Implementation

void polytomsg(Uint8List msg, Poly p) {
  for (int i = 0; i < KYBER_SYMBYTES; i++) {
    msg[i] = 0;
    for (int j = 0; j < 8; j++) {
      int t = p.coeffs[8 * i + j];
      t = (t + (KYBER_Q ~/ 2)) % KYBER_Q;
      int bit = ((2 * t) ~/ KYBER_Q) & 1;
      msg[i] |= (bit << j);
    }
  }
}