f0a1552
ZhenYi
feat(chat): add chat module with room management, message handling, and session revocation
f0a1552
use base64::Engine;
use base64::engine::general_purpose::URL_SAFE_NO_PAD;
use rand::Rng;
use rand::rngs::OsRng;
use sha2::{Digest, Sha256};
pub fn generate_numeric_code(len: usize) -> String {
let mut rng = OsRng;
(0..len)
.map(|_| rng.gen_range(0..10u32).to_string())
.collect()
}
pub fn sha256_b64url(data: &[u8]) -> String {
URL_SAFE_NO_PAD.encode(Sha256::digest(data))
}
pub fn constant_time_eq(a: &[u8], b: &[u8]) -> bool {
if a.len() != b.len() {
return false;
}
let mut diff = 0u8;
for (x, y) in a.iter().zip(b.iter()) {
diff |= x ^ y;
}
diff == 0
}