From cfd1cb3a3771e0a04c7db8e7884663da2e107ffa Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Tue, 19 Aug 2025 13:48:54 -0400 Subject: [PATCH] Add FieldElement::wide_reduce to dalek-ff-group --- crypto/dalek-ff-group/src/field.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crypto/dalek-ff-group/src/field.rs b/crypto/dalek-ff-group/src/field.rs index cedf98b5..e0ef473a 100644 --- a/crypto/dalek-ff-group/src/field.rs +++ b/crypto/dalek-ff-group/src/field.rs @@ -223,6 +223,13 @@ impl FieldElement { FieldElement(Residue::new(u256)) } + /// Create a `FieldElement` from the reduction of a 512-bit number. + /// + /// The bytes are interpreted in little-endian format. + pub fn wide_reduce(value: [u8; 64]) -> Self { + FieldElement(reduce(U512::from_le_bytes(value))) + } + /// Interpret the value as a little-endian integer, square it, and reduce it into a FieldElement. pub fn from_square(value: [u8; 32]) -> FieldElement { let value = U256::from_le_bytes(value);