Skip to main content
. 2022 Oct 18;24(10):1489. doi: 10.3390/e24101489
Algorithm 5 CRYSTAL-Kyber poly2msg
1 void poly2msg(uint8_t *m, const poly *a)
2 {
3  size_t i, j;
4  uint16_t t;
5  for (i = 0; i < CRYSTAL-KYBER_N / 8; i++)
6  {
7   m[i] = 0;
8   for (j = 0; j < 8; j++)
9   {
10    t = a->coeffs[8 * i + j];
11    t += ((int16_t)t >> 15) & CRYSTAL-KYBER_Q;
12    t = (((t << 1) + CRYSTAL-KYBER_Q / 2) / CRYSTAL-KYBER_Q) & 1;
13    m[i] |= t << j;
14   }
15  }
16 }