28 for (uint8_t i = 0U; i < p->
k; i++) {
29 for (uint8_t j = 0U; j < p->
l; j++) {
30 uint16_t nonce = ((uint16_t) i << 8U) | (uint16_t) j;
41 for (uint8_t i = 0U; i < p->
k; i++) {
52 for (uint8_t i = 0U; i < p->
k; i++) {
53 for (uint8_t j = 0U; j < p->
l; j++) {
54 uint16_t nonce = ((uint16_t) i << 8U) | (uint16_t) j;
void MLDSA_POLY_pointwise_montgomery(mldsa_poly *c, const mldsa_poly *a, const mldsa_poly *b, int first)
Pointwise multiplication (Montgomery) with accumulation.
void MLDSA_POLYMAT_expand_and_multiply(mldsa_polyveck *t, const uint8_t rho[MLDSA_SEEDBYTES], const mldsa_polyvecl *s, const MLDSA_param_info_t *p)
On-the-fly A expansion with matrix-vector multiply.
void MLDSA_POLYMAT_expand(mldsa_polyvecl *mat, const uint8_t rho[MLDSA_SEEDBYTES], const MLDSA_param_info_t *p)
Expand the k x l matrix A from a seed rho using SHAKE128. Each polynomial A[i][j] is stored as mat[i]...
void MLDSA_POLYMAT_pointwise_montgomery(mldsa_polyveck *t, const mldsa_polyvecl *mat, const mldsa_polyvecl *s, const MLDSA_param_info_t *p)
Matrix-vector multiply: t = A * s (in NTT domain). Both A and s must already be in NTT domain....
void MLDSA_POLYVEC_pointwise_acc_montgomery(mldsa_poly *w, const mldsa_polyvecl *u, const mldsa_polyvecl *v, uint8_t l)
Inner product of L-vectors in NTT domain with accumulation.
void MLDSA_SAMPLE_uniform(mldsa_poly *a, const uint8_t seed[MLDSA_SEEDBYTES], uint16_t nonce)
Sample polynomial with uniformly random coefficients in [0, q-1] by performing rejection sampling on ...
ML-DSA parameter set descriptor holding all derived sizes.
Polynomial with MLDSA_N int32_t coefficients.
Polynomial vector of up to MLDSA_MAX_K polynomials.
mldsa_poly vec[MLDSA_MAX_K]
Polynomial vector of up to MLDSA_MAX_L polynomials.
mldsa_poly vec[MLDSA_MAX_L]