pub struct Utils;Expand description
The core API provides a clean interface that:
- Defines cryptographic operation traits (KemOperations, SignatureOperations, etc.)
- Uses dependency injection via CryptoProvider trait
- Returns
ProviderNotConfiguredwhen no provider is set on a context - Maintains no circular dependencies with implementation crates
- Provides proper validation and error handling
Real implementations are provided by the main lib-q crate through LibQCryptoProvider.
Utility functions that work consistently across platforms
Implementations§
Source§impl Utils
impl Utils
Sourcepub fn random_bytes(length: usize) -> Result<Vec<u8>>
pub fn random_bytes(length: usize) -> Result<Vec<u8>>
Generate cryptographically secure random bytes
This function works in both std and no_std environments:
- In std environments with the “rand” feature: Uses rand::rng()
- In no_std environments with the “getrandom” feature: Uses getrandom directly
- In no_std environments without getrandom: Returns an error
Sourcepub fn bytes_to_hex(bytes: &[u8]) -> String
pub fn bytes_to_hex(bytes: &[u8]) -> String
Convert bytes to hex string
Sourcepub fn hex_to_bytes(hex: &str) -> Result<Vec<u8>>
pub fn hex_to_bytes(hex: &str) -> Result<Vec<u8>>
Convert hex string to bytes
§Errors
Returns crate::error::Error::HexDecode with a crate::error::HexDecodeError reason when the
trimmed input is not valid hexadecimal (odd length or non-hex digit).
Sourcepub fn constant_time_compare(a: &[u8], b: &[u8]) -> bool
pub fn constant_time_compare(a: &[u8], b: &[u8]) -> bool
Constant-time comparison of two byte slices
Auto Trait Implementations§
impl Freeze for Utils
impl RefUnwindSafe for Utils
impl Send for Utils
impl Sync for Utils
impl Unpin for Utils
impl UnsafeUnpin for Utils
impl UnwindSafe for Utils
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more