Ver código fonte

Be able to set the coalition size independently of n and t

Ian Goldberg 3 meses atrás
pai
commit
30386c4314
1 arquivos alterados com 10 adições e 5 exclusões
  1. 10 5
      src/bin/arctic.rs

+ 10 - 5
src/bin/arctic.rs

@@ -32,12 +32,13 @@ fn stddev(vals: &[f64]) -> f64 {
 fn main() {
     let args: Vec<String> = env::args().collect();
     if args.len() < 4 || args.len() > 5 {
-        println!("Usage: {} n t msglen [reps]", args[0]);
+        println!("Usage: {} n t Csize [reps]", args[0]);
         return;
     }
     let n: u32 = args[1].parse().unwrap();
     let t: u32 = args[2].parse().unwrap();
-    let msglen: usize = args[3].parse().unwrap();
+    let msglen: usize = 100;
+    let coalitionsize: u32 = args[3].parse().unwrap();
     let mut reps = 1usize;
     if args.len() > 4 {
         reps = args[4].parse().unwrap();
@@ -45,15 +46,19 @@ fn main() {
     let mut msg: Vec<u8> = Vec::new();
     let mut rng = rand::thread_rng();
     msg.resize(msglen, 0);
+    assert!(t >= 1);
+    assert!(coalitionsize >= 2*t-1);
+    assert!(n >= coalitionsize);
 
-    let (pubkey, seckeys) = arctic::keygen(n, t);
+    let (pubkey, mut seckeys) = arctic::keygen(n, t);
     let delta = seckeys[0].delta();
 
     let mut sign1_timings: Vec<f64> = Vec::new();
     let mut sign2_timings: Vec<f64> = Vec::new();
     let mut combine_timings: Vec<f64> = Vec::new();
 
-    let coalition = (1..=n).collect::<Vec<u32>>();
+    let coalition = (1..=coalitionsize).collect::<Vec<u32>>();
+    seckeys.truncate(coalitionsize as usize);
 
     for _ in 0..reps {
         rng.fill_bytes(&mut msg);
@@ -97,7 +102,7 @@ fn main() {
         "{} {} {} {} {} {:.1} ± {:.1} {:.1} ± {:.1} {:.1} ± {:.1}",
         n,
         t,
-        msglen,
+        coalitionsize,
         reps,
         delta,
         sign1_mean,