//! Dev helper: print SQL to create a vmangos account, computing the SRP6 verifier/salt with //! `benilla-srp`. vmangos stores `v`/`s` as big-endian hex, while we compute //! little-endian, so we reverse. Usage: //! //! ```text //! cargo run -p benilla-protocol --example make_account -- \ //! | docker exec -i mariadb -uroot -ppassword realmd //! ``` use benilla_srp::NormalizedString; fn big_endian_hex(little_endian_bytes: &[u8]) -> String { little_endian_bytes .iter() .rev() .map(|b| format!("{b:02X}")) .collect() } fn main() { let args: Vec = std::env::args().collect(); let user = args.get(1).expect("usage: make_account "); let pass = args.get(2).expect("usage: make_account "); let username = NormalizedString::new(user).expect("invalid username"); let password = NormalizedString::new(pass).expect("invalid password"); let (salt, verifier) = benilla_srp::generate_account(&username, &password); println!( "INSERT INTO account (username, v, s, gmlevel, expansion) VALUES ('{}', '{}', '{}', 3, 0);", user.to_uppercase(), big_endian_hex(&verifier), big_endian_hex(&salt), ); }