fix DKG challenge hashing order to match paper (#484)
This commit is contained in:
parent
fcd0e31e6b
commit
5d97cf126d
|
@ -6,6 +6,10 @@ Entries are listed in reverse chronological order.
|
|||
|
||||
## 0.7.0
|
||||
|
||||
* Challenge hashing during DKG computation was changed to match the paper.
|
||||
This means that code running this version won't interoperate with code
|
||||
running previous versions.
|
||||
|
||||
## Released
|
||||
|
||||
## 0.6.0
|
||||
|
|
|
@ -263,7 +263,7 @@ pub fn part1<C: Ciphersuite, R: RngCore + CryptoRng>(
|
|||
let k = <<C::Group as Group>::Field>::random(&mut rng);
|
||||
let R_i = <C::Group>::generator() * k;
|
||||
let c_i =
|
||||
challenge::<C>(identifier, &R_i, &commitment.first()?.0).ok_or(Error::DKGNotSupported)?;
|
||||
challenge::<C>(identifier, &commitment.first()?.0, &R_i).ok_or(Error::DKGNotSupported)?;
|
||||
let a_i0 = *coefficients
|
||||
.get(0)
|
||||
.expect("coefficients must have at least one element");
|
||||
|
@ -287,8 +287,8 @@ pub fn part1<C: Ciphersuite, R: RngCore + CryptoRng>(
|
|||
/// Generates the challenge for the proof of knowledge to a secret for the DKG.
|
||||
fn challenge<C>(
|
||||
identifier: Identifier<C>,
|
||||
R: &Element<C>,
|
||||
verifying_key: &Element<C>,
|
||||
R: &Element<C>,
|
||||
) -> Option<Challenge<C>>
|
||||
where
|
||||
C: Ciphersuite,
|
||||
|
@ -296,8 +296,8 @@ where
|
|||
let mut preimage = vec![];
|
||||
|
||||
preimage.extend_from_slice(identifier.serialize().as_ref());
|
||||
preimage.extend_from_slice(<C::Group>::serialize(R).as_ref());
|
||||
preimage.extend_from_slice(<C::Group>::serialize(verifying_key).as_ref());
|
||||
preimage.extend_from_slice(<C::Group>::serialize(R).as_ref());
|
||||
|
||||
Some(Challenge(C::HDKG(&preimage[..])?))
|
||||
}
|
||||
|
@ -341,7 +341,7 @@ pub fn part2<C: Ciphersuite>(
|
|||
let R_ell = round1_package.proof_of_knowledge.R;
|
||||
let mu_ell = round1_package.proof_of_knowledge.z;
|
||||
let phi_ell0 = round1_package.commitment.first()?.0;
|
||||
let c_ell = challenge::<C>(ell, &R_ell, &phi_ell0).ok_or(Error::DKGNotSupported)?;
|
||||
let c_ell = challenge::<C>(ell, &phi_ell0, &R_ell).ok_or(Error::DKGNotSupported)?;
|
||||
|
||||
if R_ell != <C::Group>::generator() * mu_ell - phi_ell0 * c_ell.0 {
|
||||
return Err(Error::InvalidProofOfKnowledge { culprit: ell });
|
||||
|
|
Loading…
Reference in New Issue