pub(crate) mod cbor_types;
mod debug_byte_slice;
pub(crate) use debug_byte_slice::DebugByteSlice;
mod ephemeral_cert;
pub mod ephemeral_signer;
#[allow(dead_code)]
pub(crate) mod hash_utils;
pub(crate) mod io_utils;
pub(crate) mod merkle;
pub(crate) mod mime;
#[allow(dead_code)] pub(crate) mod patch;
pub(crate) mod path_utils;
#[cfg(feature = "add_thumbnails")]
pub(crate) mod thumbnail;
pub(crate) mod time_it;
#[allow(dead_code)] pub(crate) mod xmp_inmemory_utils;
#[cfg(test)]
#[allow(dead_code)] pub mod test;
#[cfg(test)]
pub(crate) mod test_signer;
pub(crate) fn is_zero(bytes: &[u8]) -> bool {
if bytes.is_empty() {
return true;
}
unsafe {
let (prefix, aligned, suffix) = bytes.align_to::<u64>();
prefix.iter().all(|&x| x == 0)
&& aligned.iter().all(|&x| x == 0u64)
&& suffix.iter().all(|&x| x == 0u8)
}
}