use subtle::ConstantTimeEq;
pub fn constant_time_eq(a: &[u8], b: &[u8]) -> bool {
if a.len() != b.len() {
return false;
}
a.ct_eq(b).into()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn equal_slices_match() {
assert!(constant_time_eq(b"abc123", b"abc123"));
}
#[test]
fn different_slices_do_not_match() {
assert!(!constant_time_eq(b"abc123", b"abc124"));
}
#[test]
fn different_lengths_do_not_match() {
assert!(!constant_time_eq(b"abc", b"abcd"));
}
}