diff --git a/ed448-goldilocks/src/decaf/points.rs b/ed448-goldilocks/src/decaf/points.rs index 5f8b7c010..e075604a4 100644 --- a/ed448-goldilocks/src/decaf/points.rs +++ b/ed448-goldilocks/src/decaf/points.rs @@ -177,8 +177,11 @@ impl Group for DecafPoint { let mut bytes = DecafPointRepr::default(); loop { - rng.try_fill_bytes(bytes.as_mut())?; - if let Some(point) = Self::from_bytes(&bytes).into() { + rng.try_fill_bytes(&mut bytes)?; + if let Some(point) = Self::from_bytes(&bytes) + .into_option() + .filter(|&point| point != Self::IDENTITY) + { return Ok(point); } } diff --git a/ed448-goldilocks/src/edwards/extended.rs b/ed448-goldilocks/src/edwards/extended.rs index 2b63e56ea..e0275609f 100644 --- a/ed448-goldilocks/src/edwards/extended.rs +++ b/ed448-goldilocks/src/edwards/extended.rs @@ -344,8 +344,11 @@ impl Group for EdwardsPoint { let mut bytes = Array::default(); loop { - rng.try_fill_bytes(bytes.as_mut())?; - if let Some(point) = Self::from_bytes(&bytes).into() { + rng.try_fill_bytes(&mut bytes)?; + if let Some(point) = Self::from_bytes(&bytes) + .into_option() + .filter(|&point| point != Self::IDENTITY) + { return Ok(point); } }