Skip to content

Commit c823543

Browse files
committed
Add more tests for Scalar canonical checks
1 parent 9350d4d commit c823543

File tree

1 file changed

+36
-9
lines changed

1 file changed

+36
-9
lines changed

curve25519-dalek/src/scalar.rs

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1650,15 +1650,42 @@ pub(crate) mod test {
16501650
0, 0, 128,
16511651
];
16521652

1653-
assert!(bool::from(
1654-
Scalar::from_canonical_bytes(canonical_bytes).is_some()
1655-
));
1656-
assert!(bool::from(
1657-
Scalar::from_canonical_bytes(non_canonical_bytes_because_unreduced).is_none()
1658-
));
1659-
assert!(bool::from(
1660-
Scalar::from_canonical_bytes(non_canonical_bytes_because_highbit).is_none()
1661-
));
1653+
let canonical_l_minus_one = [
1654+
237, 211, 245, 92, 26, 99, 18, 88, 214, 156, 247, 162, 222, 249, 222, 20, 0, 0, 0, 0,
1655+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
1656+
];
1657+
let canonical_zero = [0u8; 32];
1658+
let canonical_255_minus_1 = [
1659+
132, 52, 71, 117, 71, 74, 127, 151, 35, 182, 58, 139, 233, 42, 231, 109, 255, 255, 255,
1660+
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15,
1661+
];
1662+
let non_canonical_l = [
1663+
237, 211, 245, 92, 26, 99, 18, 88, 214, 156, 247, 162, 222, 249, 222, 20, 0, 0, 0, 0,
1664+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
1665+
];
1666+
let non_canonical_l_plus_one = [
1667+
237, 211, 245, 92, 26, 99, 18, 88, 214, 156, 247, 162, 222, 249, 222, 20, 0, 0, 0, 0,
1668+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
1669+
];
1670+
let non_canonical_full = [0xFF; 32];
1671+
let non_canonical_255_minus_1 = {
1672+
let mut non_canonical_255_minus_1 = [0xFF; 32];
1673+
non_canonical_255_minus_1[31] = 0b0111_1111;
1674+
non_canonical_255_minus_1
1675+
};
1676+
1677+
let from_canonical_option = |b| Option::<Scalar>::from(Scalar::from_canonical_bytes(b));
1678+
1679+
assert!(from_canonical_option(canonical_bytes).is_some());
1680+
assert!(from_canonical_option(canonical_l_minus_one).is_some());
1681+
assert!(from_canonical_option(canonical_zero).is_some());
1682+
assert!(from_canonical_option(canonical_255_minus_1).is_some());
1683+
assert!(from_canonical_option(non_canonical_bytes_because_unreduced).is_none());
1684+
assert!(from_canonical_option(non_canonical_bytes_because_highbit).is_none());
1685+
assert!(from_canonical_option(non_canonical_l).is_none());
1686+
assert!(from_canonical_option(non_canonical_l_plus_one).is_none());
1687+
assert!(from_canonical_option(non_canonical_full).is_none());
1688+
assert!(from_canonical_option(non_canonical_255_minus_1).is_none());
16621689
}
16631690

16641691
#[test]

0 commit comments

Comments
 (0)