///| Polyveck is a vector of polynomials and length is k.
pub struct Polyveck {
vec : Array[Poly]
} derive(Show)
///| deep clone
pub fn Polyveck::copy(self : Polyveck) -> Polyveck {
let new_vec = Array::new()
for poly in self.vec {
new_vec.push(poly.copy())
}
{ vec: new_vec }
}
///|
impl Default for Polyveck with default() -> Polyveck {
let k = dilithium_context.get_params_set().k
let vec = Array::new()
for _i in 0.. Polyvecl {
let new_vec = Array::new()
for poly in self.vec {
new_vec.push(poly.copy())
}
{ vec: new_vec }
}
///|
impl Default for Polyvecl with default() -> Polyvecl {
let l = dilithium_context.get_params_set().l
let vec = Array::new()
for _i in 0.. Unit {
let k = dilithium_context.get_params_set().k
let l = dilithium_context.get_params_set().l
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let l = dilithium_context.get_params_set().l
let mut nonce = nonce
for i in 0.. Unit {
let l = dilithium_context.get_params_set().l
let l_u16 = l.to_uint16()
for i in 0.. Unit {
let l = dilithium_context.get_params_set().l
for i in 0.. Unit {
let l = dilithium_context.get_params_set().l
for i in 0.. Unit {
let l = dilithium_context.get_params_set().l
for i in 0.. Unit {
let l = dilithium_context.get_params_set().l
for i in 0.. Unit {
let l = dilithium_context.get_params_set().l
for i in 0.. Unit {
let l = dilithium_context.get_params_set().l
let t = Poly::default()
w.pointwise_montgomery(u.vec[0], v.vec[0])
for i in 1.. Byte {
let l = dilithium_context.get_params_set().l
for i in 0.. 0 {
return 1
}
}
return 0
}
//*********** Vectors of polynomials of length K ****************************
///|
pub fn Polyveck::uniform_eta(
v : Polyveck,
seed : Array[Byte],
nonce : UInt16,
) -> Unit {
let k = dilithium_context.get_params_set().k
let mut nonce = nonce
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Byte {
let k = dilithium_context.get_params_set().k
for i in 0.. 0 {
return 1
}
}
return 0
}
///| For all coefficients a of polynomials in vector of length K,
/// compute a0, a1 such that a mod Q = a1*2^D + a0
/// with -2^{D-1} < a0 <= 2^{D-1}. Assumes coefficients to be
/// standard representatives.
pub fn Polyveck::power2round(v1 : Polyveck, v0 : Polyveck) -> Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Int {
let k = dilithium_context.get_params_set().k
let mut s = 0
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
for i in 0.. Unit {
let k = dilithium_context.get_params_set().k
let mut idx = 0
for i in 0..