Function openssl::memcmp::eq

source ·
pub fn eq(a: &[u8], b: &[u8]) -> bool
Expand description

Returns true iff a and b contain the same bytes.

This operation takes an amount of time dependent on the length of the two arrays given, but is independent of the contents of a and b.

§Panics

This function will panic the current task if a and b do not have the same length.

§Examples

To perform a constant-time comparison of two arrays of the same length but different values:

use openssl::memcmp::eq;

// We want to compare `a` to `b` and `c`, without giving
// away through timing analysis that `c` is more similar to `a`
// than `b`.
let a = [0, 0, 0];
let b = [1, 1, 1];
let c = [0, 0, 1];

// These statements will execute in the same amount of time.
assert!(!eq(&a, &b));
assert!(!eq(&a, &c));

This corresponds to CRYPTO_memcmp.