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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#![allow(non_snake_case)]
use num_bigint::BigInt;
use num_traits::identities::Zero;
use std::collections::BTreeMap;
use std::vec::Vec;
#[derive(Debug, Clone, Default)]
pub struct ShareBox {
pub publickey: BigInt,
pub share: BigInt,
pub challenge: BigInt,
pub response: BigInt,
}
impl ShareBox {
pub fn new() -> Self {
ShareBox {
publickey: BigInt::zero(),
share: BigInt::zero(),
challenge: BigInt::zero(),
response: BigInt::zero(),
}
}
pub fn init(
&mut self,
publickey: BigInt,
share: BigInt,
challenge: BigInt,
response: BigInt,
) {
self.publickey = publickey;
self.share = share;
self.challenge = challenge;
self.response = response;
}
}
#[derive(Debug, Clone, Default)]
pub struct DistributionSharesBox {
pub commitments: Vec<BigInt>,
pub positions: BTreeMap<BigInt, i64>,
pub shares: BTreeMap<BigInt, BigInt>,
pub publickeys: Vec<BigInt>,
pub challenge: BigInt,
pub responses: BTreeMap<BigInt, BigInt>,
pub U: BigInt,
}
impl DistributionSharesBox {
pub fn new() -> Self {
DistributionSharesBox {
commitments: Vec::new(),
positions: BTreeMap::new(),
shares: BTreeMap::new(),
publickeys: Vec::new(),
challenge: BigInt::zero(),
responses: BTreeMap::new(),
U: BigInt::zero(),
}
}
#[allow(clippy::too_many_arguments)]
pub fn init(
&mut self,
commitments: &[BigInt],
positions: BTreeMap<BigInt, i64>,
shares: BTreeMap<BigInt, BigInt>,
publickeys: &[BigInt],
challenge: &BigInt,
responses: BTreeMap<BigInt, BigInt>,
U: &BigInt,
) {
self.commitments = commitments.to_vec();
self.positions = positions;
self.shares = shares;
self.publickeys = publickeys.to_vec();
self.challenge = challenge.clone();
self.responses = responses;
self.U = U.clone();
}
}