| 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 } |