aboutsummaryrefslogtreecommitdiff
path: root/azalea-crypto/src
diff options
context:
space:
mode:
authormat <git@matdoes.dev>2025-12-09 01:27:44 +0000
committermat <git@matdoes.dev>2025-12-09 13:26:12 +1100
commitba3a88336a074f902667d3e13471af62b431da04 (patch)
tree4c7052376abfccff8c090192c90d92280154f9c5 /azalea-crypto/src
parent4fde1ecd61c0f67057df0c55a45ba398da580ae1 (diff)
downloadazalea-drasl-ba3a88336a074f902667d3e13471af62b431da04.tar.xz
move offline-mode uuid generation to azalea-crypto
Diffstat (limited to 'azalea-crypto/src')
-rw-r--r--azalea-crypto/src/lib.rs1
-rw-r--r--azalea-crypto/src/offline.rs17
2 files changed, 18 insertions, 0 deletions
diff --git a/azalea-crypto/src/lib.rs b/azalea-crypto/src/lib.rs
index 738c4899..da10f530 100644
--- a/azalea-crypto/src/lib.rs
+++ b/azalea-crypto/src/lib.rs
@@ -1,5 +1,6 @@
#![doc = include_str!("../README.md")]
+pub mod offline;
mod signing;
use aes::{
diff --git a/azalea-crypto/src/offline.rs b/azalea-crypto/src/offline.rs
new file mode 100644
index 00000000..737555e8
--- /dev/null
+++ b/azalea-crypto/src/offline.rs
@@ -0,0 +1,17 @@
+use md5::{Digest, Md5};
+use uuid::Uuid;
+
+pub fn generate_uuid(username: &str) -> Uuid {
+ uuid::Builder::from_md5_bytes(hash(format!("OfflinePlayer:{username}").as_bytes())).into_uuid()
+}
+
+fn hash(data: &[u8]) -> [u8; 16] {
+ let mut hasher = Md5::new();
+
+ hasher.update(data);
+
+ let mut bytes = [0; 16];
+ bytes.copy_from_slice(&hasher.finalize()[..16]);
+
+ bytes
+}