mirror of
https://github.com/saymrwulf/curve25519-dalek-source.git
synced 2026-09-06 20:41:14 +00:00
Rename reduce_wide to from_bytes_mod_order_wide and keep it with the other constructors
This commit is contained in:
parent
a6b4467d23
commit
9e892dd5f3
1 changed files with 14 additions and 13 deletions
|
|
@ -95,6 +95,12 @@ impl Scalar {
|
||||||
s
|
s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Construct a `Scalar` by reducing a 512-bit little-endian integer
|
||||||
|
/// modulo the group order \\( \ell \\).
|
||||||
|
pub fn from_bytes_mod_order_wide(input: &[u8; 64]) -> Scalar {
|
||||||
|
UnpackedScalar::from_bytes_wide(input).pack()
|
||||||
|
}
|
||||||
|
|
||||||
/// Attempt to construct a `Scalar` from a canonical byte representation.
|
/// Attempt to construct a `Scalar` from a canonical byte representation.
|
||||||
///
|
///
|
||||||
/// # Return
|
/// # Return
|
||||||
|
|
@ -318,7 +324,7 @@ impl Scalar {
|
||||||
pub fn random<T: Rng>(rng: &mut T) -> Self {
|
pub fn random<T: Rng>(rng: &mut T) -> Self {
|
||||||
let mut scalar_bytes = [0u8; 64];
|
let mut scalar_bytes = [0u8; 64];
|
||||||
rng.fill_bytes(&mut scalar_bytes);
|
rng.fill_bytes(&mut scalar_bytes);
|
||||||
Scalar::reduce_wide(&scalar_bytes)
|
Scalar::from_bytes_mod_order_wide(&scalar_bytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Hash a slice of bytes into a scalar.
|
/// Hash a slice of bytes into a scalar.
|
||||||
|
|
@ -363,7 +369,7 @@ impl Scalar {
|
||||||
// XXX this seems clumsy
|
// XXX this seems clumsy
|
||||||
let mut output = [0u8; 64];
|
let mut output = [0u8; 64];
|
||||||
output.copy_from_slice(hash.result().as_slice());
|
output.copy_from_slice(hash.result().as_slice());
|
||||||
Scalar::reduce_wide(&output)
|
Scalar::from_bytes_mod_order_wide(&output)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Convert this `Scalar` to its underlying sequence of bytes.
|
/// Convert this `Scalar` to its underlying sequence of bytes.
|
||||||
|
|
@ -540,11 +546,6 @@ impl Scalar {
|
||||||
pub fn is_canonical(&self) -> bool {
|
pub fn is_canonical(&self) -> bool {
|
||||||
*self == self.reduce()
|
*self == self.reduce()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reduce a 512-bit little endian number mod l
|
|
||||||
pub fn reduce_wide(input: &[u8; 64]) -> Scalar {
|
|
||||||
UnpackedScalar::from_bytes_wide(input).pack()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UnpackedScalar {
|
impl UnpackedScalar {
|
||||||
|
|
@ -721,11 +722,11 @@ mod test {
|
||||||
|
|
||||||
// also_a = (a mod l)
|
// also_a = (a mod l)
|
||||||
tmp[0..32].copy_from_slice(&a_bytes[..]);
|
tmp[0..32].copy_from_slice(&a_bytes[..]);
|
||||||
let also_a = Scalar::reduce_wide(&tmp);
|
let also_a = Scalar::from_bytes_mod_order_wide(&tmp);
|
||||||
|
|
||||||
// also_b = (b mod l)
|
// also_b = (b mod l)
|
||||||
tmp[0..32].copy_from_slice(&b_bytes[..]);
|
tmp[0..32].copy_from_slice(&b_bytes[..]);
|
||||||
let also_b = Scalar::reduce_wide(&tmp);
|
let also_b = Scalar::from_bytes_mod_order_wide(&tmp);
|
||||||
|
|
||||||
let expected_c = &a * &b;
|
let expected_c = &a * &b;
|
||||||
let also_expected_c = &also_a * &also_b;
|
let also_expected_c = &also_a * &also_b;
|
||||||
|
|
@ -811,7 +812,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn reduce_wide() {
|
fn from_bytes_mod_order_wide() {
|
||||||
let mut bignum = [0u8; 64];
|
let mut bignum = [0u8; 64];
|
||||||
// set bignum = x + 2^256x
|
// set bignum = x + 2^256x
|
||||||
for i in 0..32 {
|
for i in 0..32 {
|
||||||
|
|
@ -828,7 +829,7 @@ mod test {
|
||||||
28, 82, 31, 197, 100, 165, 192, 8,
|
28, 82, 31, 197, 100, 165, 192, 8,
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
let test_red = Scalar::reduce_wide(&bignum);
|
let test_red = Scalar::from_bytes_mod_order_wide(&bignum);
|
||||||
for i in 0..32 {
|
for i in 0..32 {
|
||||||
assert!(test_red[i] == reduced[i]);
|
assert!(test_red[i] == reduced[i]);
|
||||||
}
|
}
|
||||||
|
|
@ -863,7 +864,7 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn montgomery_reduce_matches_reduce_wide() {
|
fn montgomery_reduce_matches_from_bytes_mod_order_wide() {
|
||||||
let mut bignum = [0u8; 64];
|
let mut bignum = [0u8; 64];
|
||||||
|
|
||||||
// set bignum = x + 2^256x
|
// set bignum = x + 2^256x
|
||||||
|
|
@ -881,7 +882,7 @@ mod test {
|
||||||
28, 82, 31, 197, 100, 165, 192, 8
|
28, 82, 31, 197, 100, 165, 192, 8
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
let reduced = Scalar::reduce_wide(&bignum);
|
let reduced = Scalar::from_bytes_mod_order_wide(&bignum);
|
||||||
|
|
||||||
// The reduced scalar should match the expected
|
// The reduced scalar should match the expected
|
||||||
assert_eq!(reduced.bytes, expected.bytes);
|
assert_eq!(reduced.bytes, expected.bytes);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue