poulpy/rlwe/src/plaintext.rs
rlwe/src/plaintext.rsRaw
1use crate::ciphertext::Ciphertext;
2use crate::elem::Elem;
3use base2k::VecZnx;
4
5pub struct Plaintext(pub Elem);
6
7/*
8impl Parameters {
9 pub fn new_plaintext(&self, log_q: usize) -> Plaintext {
10 Plaintext(self.new_elem(0, log_q))
11 }
12}
13*/
14
15impl Plaintext {
16 pub fn new(n: usize, log_base2k: usize, log_q: usize) -> Self {
17 Self(Elem::new(n, log_base2k, log_q, 0))
18 }
19
20 pub fn n(&self) -> usize {
21 self.0.n()
22 }
23
24 pub fn degree(&self) -> usize {
25 self.0.degree()
26 }
27
28 pub fn log_q(&self) -> usize {
29 self.0.log_q()
30 }
31
32 pub fn limbs(&self) -> usize {
33 self.0.limbs()
34 }
35
36 pub fn at(&self, i: usize) -> &VecZnx {
37 self.0.at(i)
38 }
39
40 pub fn at_mut(&mut self, i: usize) -> &mut VecZnx {
41 self.0.at_mut(i)
42 }
43
44 pub fn log_base2k(&self) -> usize {
45 self.0.log_base2k()
46 }
47
48 pub fn as_ciphertext(&self) -> Ciphertext {
49 unsafe { Ciphertext(std::ptr::read(&self.0)) }
50 }
51}