aboutsummaryrefslogtreecommitdiff
path: root/azalea-crypto/src
diff options
context:
space:
mode:
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
+}