mirror of
https://github.com/serai-dex/serai.git
synced 2025-03-12 09:26:51 +00:00
3.2.2 Use a hash to point for random points in dfg
This commit is contained in:
parent
74647b1b52
commit
d929a8d96e
3 changed files with 9 additions and 9 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -1517,6 +1517,7 @@ dependencies = [
|
|||
"ff-group-tests",
|
||||
"group",
|
||||
"rand_core 0.6.4",
|
||||
"sha2 0.9.9",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
]
|
||||
|
|
|
@ -23,6 +23,8 @@ ff = "0.12"
|
|||
group = "0.12"
|
||||
|
||||
crypto-bigint = "0.4"
|
||||
|
||||
sha2 = "0.9"
|
||||
curve25519-dalek = "3.2"
|
||||
|
||||
[dev-dependencies]
|
||||
|
|
|
@ -354,15 +354,12 @@ macro_rules! dalek_group {
|
|||
type Scalar = Scalar;
|
||||
fn random(mut rng: impl RngCore) -> Self {
|
||||
loop {
|
||||
let mut bytes = field::FieldElement::random(&mut rng).to_repr();
|
||||
bytes[31] |= u8::try_from(rng.next_u32() % 2).unwrap() << 7;
|
||||
let opt = Self::from_bytes(&bytes);
|
||||
if opt.is_some().into() {
|
||||
let opt = opt.unwrap();
|
||||
// Ban identity, per the trait specification
|
||||
if !bool::from(opt.is_identity()) {
|
||||
return opt;
|
||||
}
|
||||
let mut bytes = [0; 64];
|
||||
rng.fill_bytes(&mut bytes);
|
||||
let point = $Point($DPoint::hash_from_bytes::<sha2::Sha512>(&bytes));
|
||||
// Ban identity, per the trait specification
|
||||
if !bool::from(point.is_identity()) {
|
||||
return point;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue