azalea_crypto/offline.rs
1//! Offline-mode UUID generation.
2
3use md5::{Digest, Md5};
4use uuid::Uuid;
5
6/// Return what the offline-mode UUIDv3 for the given username would be.
7pub fn generate_uuid(username: &str) -> Uuid {
8 uuid::Builder::from_md5_bytes(hash(format!("OfflinePlayer:{username}").as_bytes())).into_uuid()
9}
10
11fn hash(data: &[u8]) -> [u8; 16] {
12 let mut hasher = Md5::new();
13
14 hasher.update(data);
15
16 let mut bytes = [0; 16];
17 bytes.copy_from_slice(&hasher.finalize()[..16]);
18
19 bytes
20}