|
@@ -41,10 +41,8 @@ impl<'a> PublicParameters<'a> {
|
|
|
pub fn serialize(&self) -> Vec<u8> {
|
|
|
let mut data = Vec::new();
|
|
|
for v in self.to_raw().iter() {
|
|
|
- println!("{} bytes", data.len());
|
|
|
serialize_vec_polymatrix(&mut data, v);
|
|
|
}
|
|
|
- println!("{} bytes", data.len());
|
|
|
data
|
|
|
}
|
|
|
}
|
|
@@ -220,20 +218,24 @@ impl<'a> Client<'a> {
|
|
|
// Params for expansion
|
|
|
|
|
|
pp.v_expansion_left = self.generate_expansion_params(self.g, params.t_exp_left);
|
|
|
- println!("dims exp left {} x {}", pp.v_expansion_left[0].rows, pp.v_expansion_left[0].cols);
|
|
|
pp.v_expansion_right = self.generate_expansion_params(self.stop_round + 1, params.t_exp_right);
|
|
|
|
|
|
// Params for converison
|
|
|
let g_conv = build_gadget(params, 2, 2 * m_conv);
|
|
|
- let sk_reg_squared_ntt = &self.sk_reg.ntt() * &self.sk_reg.ntt();
|
|
|
+ let sk_reg_ntt = self.sk_reg.ntt();
|
|
|
+ let sk_reg_squared_ntt = &sk_reg_ntt * &sk_reg_ntt;
|
|
|
pp.conversion = PolyMatrixNTT::zero(params, 2, 2 * m_conv);
|
|
|
for i in 0..2*m_conv {
|
|
|
+ let sigma;
|
|
|
if i % 2 == 0 {
|
|
|
let val = g_conv.get_poly(0, i)[0];
|
|
|
- let sigma = &sk_reg_squared_ntt * &single_poly(params, val).ntt();
|
|
|
- let ct = self.encrypt_matrix_reg(&sigma);
|
|
|
- pp.conversion.copy_into(&ct, 0, i);
|
|
|
+ sigma = &sk_reg_squared_ntt * &single_poly(params, val).ntt();
|
|
|
+ } else {
|
|
|
+ let val = g_conv.get_poly(1, i)[0];
|
|
|
+ sigma = &sk_reg_ntt * &single_poly(params, val).ntt();
|
|
|
}
|
|
|
+ let ct = self.encrypt_matrix_reg(&sigma);
|
|
|
+ pp.conversion.copy_into(&ct, 0, i);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -346,8 +348,6 @@ impl<'a> Client<'a> {
|
|
|
let mut res = ((r + sign*(denom/2)) as i128) / (denom as i128);
|
|
|
res = (res + (denom as i128/p_i128)*(p_i128) + 2*(p_i128)) % (p_i128);
|
|
|
result.data[i] = res as u64;
|
|
|
-
|
|
|
- // println!("{:?}, {:?} -> {:?}", val_first, val_rest, res as u64);
|
|
|
}
|
|
|
println!("{:?}", result.data);
|
|
|
|