1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use std::ops::{Add, Mul, Sub};
mod batch;
mod domain;
mod recon;
mod share;
pub use batch::BatchGF2 as Batch;
pub use domain::DomainGF2 as Domain;
pub use recon::ReconGF2 as Recon;
pub use share::ShareGF2 as Share;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_mul_add() {
let r1 = Recon::from("1010 1010");
let r2 = Recon::from("1110 1010");
let s1 = Share::from("[0001 0001][1010 0110][0011 1101][0101 1000][1010 1010][0010 0001][0111 0101][1101 0001]");
let s2 = Share::from("[1000 1010][0100 1101][0001 0011][1101 0000][1010 1111][1000 0100][0011 1101][1011 1000]");
let s3 = Share::from("[0001 0001][1100 1100][1001 0111][0000 0100][0100 1010][1010 0100][0110 1001][1011 0010]");
let s4 = Share::from("[1100 0001][0010 0111][1001 0101][0000 1000][0100 1100][1010 1000][0011 0110][0100 0000]");
println!("r1 = {:?}", r1);
println!("r2 = {:?}", r2);
println!("s1 = {:?}", s1);
println!("s2 = {:?}", s2);
println!("s4 = {:?}", s3);
println!("s5 = {:?}", s4);
println!(" | = {:?}", s2 * r1 + s1 * r2 + s3 + s4);
}
}