Embedded SDK
Embedded SDK
Loading...
Searching...
No Matches
Classes | Functions
cx_mldsa_polyvec.h File Reference
#include "cx_mldsa_poly.h"
#include "lcx_mldsa.h"
Include dependency graph for cx_mldsa_polyvec.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  mldsa_polyvecl
 Polynomial vector of up to MLDSA_MAX_L polynomials. More...
 
struct  mldsa_polyveck
 Polynomial vector of up to MLDSA_MAX_K polynomials. More...
 

Functions

void MLDSA_POLYVEC_ntt_l (mldsa_polyvecl *v, uint8_t l)
 Apply NTT to all polynomials in an L-vector.
 
void MLDSA_POLYVEC_ntt_k (mldsa_polyveck *v, uint8_t k)
 Apply NTT to all polynomials in a K-vector.
 
void MLDSA_POLYVEC_invntt_tomont_k (mldsa_polyveck *v, uint8_t k)
 Apply inverse NTT to all polynomials in a K-vector.
 
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_POLYVEC_add_k (mldsa_polyveck *a, const mldsa_polyveck *b, uint8_t k)
 Add K-vector b to K-vector a.
 
void MLDSA_POLYVEC_sub_k (mldsa_polyveck *a, const mldsa_polyveck *b, uint8_t k)
 Subtract K-vector b from K-vector a.
 
void MLDSA_POLYVEC_reduce_k (mldsa_polyveck *v, uint8_t k)
 Apply reduce to all polynomials in a K-vector.
 
void MLDSA_POLYVEC_caddq_k (mldsa_polyveck *v, uint8_t k)
 Apply caddq to all polynomials in a K-vector.
 
int MLDSA_POLYVEC_chknorm_l (const mldsa_polyvecl *v, int32_t B, uint8_t l)
 Check infinity norm of an L-vector.
 
int MLDSA_POLYVEC_chknorm_k (const mldsa_polyveck *v, int32_t B, uint8_t k)
 Check infinity norm of a K-vector.
 
void MLDSA_POLYVEC_shiftl_k (mldsa_polyveck *v, uint8_t k)
 Shift left all polynomials in K-vector by D bits.
 
void MLDSA_POLYVEC_power2round_k (mldsa_polyveck *v1, mldsa_polyveck *v0, const mldsa_polyveck *v, uint8_t k)
 Power2round all polynomials in K-vector.
 
void MLDSA_POLYVEC_decompose_k (mldsa_polyveck *v1, mldsa_polyveck *v0, const mldsa_polyveck *v, int32_t gamma2, uint8_t k)
 Decompose all polynomials in K-vector.
 
uint32_t MLDSA_POLYVEC_make_hint_k (mldsa_polyveck *h, const mldsa_polyveck *v0, const mldsa_polyveck *v1, int32_t gamma2, uint8_t k)
 Make hint for K-vectors.
 
void MLDSA_POLYVEC_use_hint_k (mldsa_polyveck *w, const mldsa_polyveck *u, const mldsa_polyveck *h, int32_t gamma2, uint8_t k)
 Use hint to correct high bits of K-vector.
 
void MLDSA_POLYVEC_pack_w1 (uint8_t *r, const mldsa_polyveck *w1, int32_t gamma2, uint8_t k)
 Pack w1 vector.
 

Function Documentation

◆ MLDSA_POLYVEC_add_k()

void MLDSA_POLYVEC_add_k ( mldsa_polyveck a,
const mldsa_polyveck b,
uint8_t  k 
)

Add K-vector b to K-vector a.

Definition at line 57 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_caddq_k()

void MLDSA_POLYVEC_caddq_k ( mldsa_polyveck v,
uint8_t  k 
)

Apply caddq to all polynomials in a K-vector.

Definition at line 78 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_chknorm_k()

int MLDSA_POLYVEC_chknorm_k ( const mldsa_polyveck v,
int32_t  B,
uint8_t  k 
)

Check infinity norm of a K-vector.

Returns
0 if within bound, 1 otherwise.

Definition at line 95 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_chknorm_l()

int MLDSA_POLYVEC_chknorm_l ( const mldsa_polyvecl v,
int32_t  B,
uint8_t  l 
)

Check infinity norm of an L-vector.

Returns
0 if within bound, 1 otherwise.

Definition at line 85 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_decompose_k()

void MLDSA_POLYVEC_decompose_k ( mldsa_polyveck v1,
mldsa_polyveck v0,
const mldsa_polyveck v,
int32_t  gamma2,
uint8_t  k 
)

Decompose all polynomials in K-vector.

Definition at line 122 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_invntt_tomont_k()

void MLDSA_POLYVEC_invntt_tomont_k ( mldsa_polyveck v,
uint8_t  k 
)

Apply inverse NTT to all polynomials in a K-vector.

Definition at line 39 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_make_hint_k()

uint32_t MLDSA_POLYVEC_make_hint_k ( mldsa_polyveck h,
const mldsa_polyveck v0,
const mldsa_polyveck v1,
int32_t  gamma2,
uint8_t  k 
)

Make hint for K-vectors.

Parameters
[out]hHint K-vector.
[in]v0Low bits K-vector.
[in]v1High bits K-vector.
[in]gamma2Low-order rounding range.
[in]kNumber of polynomials.
Returns
Number of ones in hint.

Definition at line 133 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_ntt_k()

void MLDSA_POLYVEC_ntt_k ( mldsa_polyveck v,
uint8_t  k 
)

Apply NTT to all polynomials in a K-vector.

Definition at line 32 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_ntt_l()

void MLDSA_POLYVEC_ntt_l ( mldsa_polyvecl v,
uint8_t  l 
)

Apply NTT to all polynomials in an L-vector.

Definition at line 25 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_pack_w1()

void MLDSA_POLYVEC_pack_w1 ( uint8_t *  r,
const mldsa_polyveck w1,
int32_t  gamma2,
uint8_t  k 
)

Pack w1 vector.

Parameters
[out]rOutput byte array.
[in]w1Input K-vector.
[in]gamma2Low-order rounding range.
[in]kNumber of polynomials.

Definition at line 161 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_pointwise_acc_montgomery()

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.

Parameters
[out]wOutput polynomial.
[in]uFirst input L-vector.
[in]vSecond input L-vector.
[in]lNumber of polynomials.

Definition at line 46 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_power2round_k()

void MLDSA_POLYVEC_power2round_k ( mldsa_polyveck v1,
mldsa_polyveck v0,
const mldsa_polyveck v,
uint8_t  k 
)

Power2round all polynomials in K-vector.

Parameters
[out]v1High bits output K-vector.
[out]v0Low bits output K-vector.
[in]vInput K-vector.
[in]kNumber of polynomials.

Definition at line 112 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_reduce_k()

void MLDSA_POLYVEC_reduce_k ( mldsa_polyveck v,
uint8_t  k 
)

Apply reduce to all polynomials in a K-vector.

Definition at line 71 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_shiftl_k()

void MLDSA_POLYVEC_shiftl_k ( mldsa_polyveck v,
uint8_t  k 
)

Shift left all polynomials in K-vector by D bits.

Definition at line 105 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_sub_k()

void MLDSA_POLYVEC_sub_k ( mldsa_polyveck a,
const mldsa_polyveck b,
uint8_t  k 
)

Subtract K-vector b from K-vector a.

Definition at line 64 of file cx_mldsa_polyvec.c.

◆ MLDSA_POLYVEC_use_hint_k()

void MLDSA_POLYVEC_use_hint_k ( mldsa_polyveck w,
const mldsa_polyveck u,
const mldsa_polyveck h,
int32_t  gamma2,
uint8_t  k 
)

Use hint to correct high bits of K-vector.

Definition at line 150 of file cx_mldsa_polyvec.c.