fix: Add test for rosenpass_constant_time::compare being little endian

This commit is contained in:
Karolin Varner
2024-03-10 19:25:00 +01:00
parent 1b233bc600
commit d58aa363cd

View File

@@ -1,10 +1,11 @@
/// compares two slices of memory content and returns an integer indicating the relationship between /// Compares two slices of memory containing arbitrary-length little endian unsigned integers
/// the slices /// and returns an integer indicating the relationship between the slices.
/// ///
/// ## Returns /// ## Returns
/// - <0 if the first byte that does not match both slices has a lower value in `a` than in `b` ///
/// - 0 if the contents are equal /// - -1 if a < b
/// - >0 if the first byte that does not match both slices has a higher value in `a` than in `b` /// - 0 if a = b
/// - 1 if a > b
/// ///
/// ## Leaks /// ## Leaks
/// If the two slices have differents lengths, the function will return immediately. This /// If the two slices have differents lengths, the function will return immediately. This
@@ -15,6 +16,23 @@
/// considered safe. /// considered safe.
/// ///
/// ## Tests /// ## Tests
///
/// ```rust
/// use rosenpass_constant_time::compare;
/// assert_eq!(compare(&[], &[]), 0);
///
/// assert_eq!(compare(&[0], &[1]), -1);
/// assert_eq!(compare(&[0], &[0]), 0);
/// assert_eq!(compare(&[1], &[0]), 1);
///
/// assert_eq!(compare(&[0, 0], &[1, 0]), -1);
/// assert_eq!(compare(&[0, 0], &[0, 0]), 0);
/// assert_eq!(compare(&[1, 0], &[0, 0]), 1);
///
/// assert_eq!(compare(&[1, 0], &[0, 1]), -1);
/// assert_eq!(compare(&[0, 1], &[0, 0]), 1);
/// ```
///
/// For discussion on how to ensure the constant-time execution of this function, see /// For discussion on how to ensure the constant-time execution of this function, see
/// <https://github.com/rosenpass/rosenpass/issues/232> /// <https://github.com/rosenpass/rosenpass/issues/232>
#[inline] #[inline]