Skip to content

Commit

Permalink
fix(dkg): use Outcome::index instead of hardcoding 0
Browse files Browse the repository at this point in the history
  • Loading branch information
davidrusu committed Aug 19, 2021
1 parent 5b5ef05 commit 0650b37
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 52 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ hex = "0.4.3"
version = "0.8.0"

[dependencies.bls_dkg]
version = "~0.5"
version = "~0.6"
optional = true

[dependencies.tiny-keccak]
Expand Down
22 changes: 7 additions & 15 deletions src/dbc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ mod tests {

let sig = dbc_owner
.public_key_set
.combine_signatures(vec![(0, &sig_share)])
.combine_signatures(vec![(dbc_owner.index, &sig_share)])
.unwrap();

let dbc_owner_key = dbc_owner.public_key_set.public_key();
Expand Down Expand Up @@ -135,7 +135,7 @@ mod tests {

let id = crate::bls_dkg_id();
let key_manager = SimpleKeyManager::new(
SimpleSigner::new(id.public_key_set.clone(), (0, id.secret_key_share.clone())),
SimpleSigner::from(id.clone()),
id.public_key_set.public_key(),
);

Expand Down Expand Up @@ -164,10 +164,7 @@ mod tests {
let genesis_key = genesis_owner.public_key_set.public_key();

let key_manager = SimpleKeyManager::new(
SimpleSigner::new(
genesis_owner.public_key_set.clone(),
(0, genesis_owner.secret_key_share.clone()),
),
SimpleSigner::from(genesis_owner.clone()),
genesis_owner.public_key_set.public_key(),
);
let mut genesis_node = Mint::new(key_manager, SimpleSpendBook::new());
Expand Down Expand Up @@ -243,7 +240,7 @@ mod tests {

let input_owner_key_set = input_owner.public_key_set.clone();
let sig = input_owner_key_set
.combine_signatures(vec![(0, &sig_share)])
.combine_signatures(vec![(input_owner.index, &sig_share)])
.unwrap();

let input_ownership_proofs = HashMap::from_iter(reissue_tx.inputs.iter().map(|input| {
Expand Down Expand Up @@ -313,10 +310,8 @@ mod tests {
for _ in 0..n_wrong_signer_sigs.coerce() {
if let Some(input) = repeating_inputs.next() {
let id = crate::bls_dkg_id();
let key_manager = SimpleKeyManager::new(
SimpleSigner::new(id.public_key_set.clone(), (0, id.secret_key_share.clone())),
genesis_key,
);
let key_manager =
SimpleKeyManager::new(SimpleSigner::from(id.clone()), genesis_key);
let trans_sig_share = key_manager.sign(&transaction.hash()).unwrap();
let trans_sig = id
.public_key_set
Expand Down Expand Up @@ -354,10 +349,7 @@ mod tests {
};

let id = crate::bls_dkg_id();
let key_manager = SimpleKeyManager::new(
SimpleSigner::new(id.public_key_set.clone(), (0, id.secret_key_share)),
genesis_key,
);
let key_manager = SimpleKeyManager::new(SimpleSigner::from(id), genesis_key);
let validation_res = dbc.confirm_valid(&key_manager);

let dbc_amount = DbcHelper::decrypt_amount(&input_owner, &dbc.content)?;
Expand Down
10 changes: 10 additions & 0 deletions src/key_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,16 @@ pub struct SimpleSigner {
secret_key_share: (u64, SerdeSecret<SecretKeyShare>),
}

#[cfg(feature = "dkg")]
impl From<bls_dkg::outcome::Outcome> for SimpleSigner {
fn from(outcome: bls_dkg::outcome::Outcome) -> Self {
Self {
public_key_set: outcome.public_key_set,
secret_key_share: (outcome.index as u64, SerdeSecret(outcome.secret_key_share)),
}
}
}

impl SimpleSigner {
pub fn new(public_key_set: PublicKeySet, secret_key_share: (u64, SecretKeyShare)) -> Self {
Self {
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ impl DbcHelper {
) -> Result<AmountSecrets, Error> {
let mut shares: std::collections::BTreeMap<usize, bls_dkg::SecretKeyShare> =
Default::default();
shares.insert(0, owner.secret_key_share.clone());
shares.insert(owner.index, owner.secret_key_share.clone());

dbcc.amount_secrets_by_secret_key_shares(&owner.public_key_set, &shares)
}
Expand Down
49 changes: 14 additions & 35 deletions src/mint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -366,10 +366,7 @@ mod tests {
let genesis_key = genesis_owner.public_key_set.public_key();

let key_manager = SimpleKeyManager::new(
SimpleSigner::new(
genesis_owner.public_key_set.clone(),
(0, genesis_owner.secret_key_share.clone()),
),
SimpleSigner::from(genesis_owner.clone()),
genesis_owner.public_key_set.public_key(),
);
let mut genesis_node = Mint::new(key_manager, SimpleSpendBook::new());
Expand Down Expand Up @@ -408,13 +405,8 @@ mod tests {

let genesis_owner = crate::bls_dkg_id();
let genesis_key = genesis_owner.public_key_set.public_key();
let key_manager = SimpleKeyManager::new(
SimpleSigner::new(
genesis_owner.public_key_set.clone(),
(0, genesis_owner.secret_key_share.clone()),
),
genesis_key,
);
let key_manager =
SimpleKeyManager::new(SimpleSigner::from(genesis_owner.clone()), genesis_key);
let mut genesis_node = Mint::new(key_manager.clone(), SimpleSpendBook::new());

let (gen_dbc_content, gen_dbc_tx, (gen_key_set, gen_node_sig)) =
Expand Down Expand Up @@ -451,7 +443,7 @@ mod tests {

let sig = genesis_owner
.public_key_set
.combine_signatures(vec![(0, &sig_share)])?;
.combine_signatures(vec![(genesis_owner.index, &sig_share)])?;

let reissue_req = ReissueRequest {
transaction: reissue_tx,
Expand Down Expand Up @@ -524,13 +516,8 @@ mod tests {
fn test_double_spend_protection() -> Result<()> {
let genesis_owner = crate::bls_dkg_id();
let genesis_key = genesis_owner.public_key_set.public_key();
let key_manager = SimpleKeyManager::new(
SimpleSigner::new(
genesis_owner.public_key_set.clone(),
(0, genesis_owner.secret_key_share.clone()),
),
genesis_key,
);
let key_manager =
SimpleKeyManager::new(SimpleSigner::from(genesis_owner.clone()), genesis_key);
let mut genesis_node = Mint::new(key_manager, SimpleSpendBook::new());

let (gen_dbc_content, gen_dbc_tx, (gen_key_set, gen_node_sig)) =
Expand Down Expand Up @@ -648,10 +635,7 @@ mod tests {
let genesis_owner = crate::bls_dkg_id();
let genesis_key = genesis_owner.public_key_set.public_key();
let key_manager = SimpleKeyManager::new(
SimpleSigner::new(
genesis_owner.public_key_set.clone(),
(0, genesis_owner.secret_key_share.clone()),
),
SimpleSigner::from(genesis_owner.clone()),
genesis_owner.public_key_set.public_key(),
);
let mut genesis_node = Mint::new(key_manager, SimpleSpendBook::new());
Expand Down Expand Up @@ -787,7 +771,7 @@ mod tests {
let owner = &owners[&dbc.name()];
let sig_share = owner.secret_key_share.sign(&reissue_tx.blinded().hash());
let owner_key_set = &owner.public_key_set;
let sig = owner_key_set.combine_signatures(vec![(0, &sig_share)])?;
let sig = owner_key_set.combine_signatures(vec![(owner.index, &sig_share)])?;
Ok((dbc.name(), (owner_key_set.public_key(), sig)))
})
.collect::<Result<HashMap<_, _>, Error>>()?;
Expand All @@ -801,7 +785,8 @@ mod tests {
.secret_key_share
.sign(&reissue_tx.blinded().hash());
let owner_key_set = random_owner.public_key_set;
let sig = owner_key_set.combine_signatures(vec![(0, &sig_share)])?;
let sig =
owner_key_set.combine_signatures(vec![(random_owner.index, &sig_share)])?;

Ok((dbc.name(), (owner_key_set.public_key(), sig)))
})
Expand Down Expand Up @@ -937,10 +922,7 @@ mod tests {
fn test_inputs_are_validated() -> Result<(), Error> {
let genesis_owner = crate::bls_dkg_id();
let key_manager = SimpleKeyManager::new(
SimpleSigner::new(
genesis_owner.public_key_set.clone(),
(0, genesis_owner.secret_key_share.clone()),
),
SimpleSigner::from(genesis_owner.clone()),
genesis_owner.public_key_set.public_key(),
);
let mut genesis_node = Mint::new(key_manager, SimpleSpendBook::new());
Expand Down Expand Up @@ -1010,10 +992,7 @@ mod tests {
let genesis_key = genesis_owner.public_key_set.public_key();

let key_manager = SimpleKeyManager::new(
SimpleSigner::new(
genesis_owner.public_key_set.clone(),
(0, genesis_owner.secret_key_share.clone()),
),
SimpleSigner::from(genesis_owner.clone()),
genesis_owner.public_key_set.public_key(),
);
let mut genesis_node = Mint::new(key_manager.clone(), SimpleSpendBook::new());
Expand Down Expand Up @@ -1187,7 +1166,7 @@ mod tests {

let sig = outputs_owner
.public_key_set
.combine_signatures(vec![(0, &sig_share)])?;
.combine_signatures(vec![(outputs_owner.index, &sig_share)])?;

let reissue_req = ReissueRequest {
transaction,
Expand Down Expand Up @@ -1222,7 +1201,7 @@ mod tests {

let sig = outputs_owner
.public_key_set
.combine_signatures(vec![(0, &sig_share)])?;
.combine_signatures(vec![(outputs_owner.index, &sig_share)])?;

let reissue_req = ReissueRequest {
transaction,
Expand Down

0 comments on commit 0650b37

Please sign in to comment.