38 lines
865 B
Rust
38 lines
865 B
Rust
use macros::RmcSerialize;
|
|
|
|
#[derive(RmcSerialize, Clone)]
|
|
pub struct Account {
|
|
pub pid: u32,
|
|
pub username: String,
|
|
pub kerbros_password: [u8; 16],
|
|
}
|
|
|
|
impl Account {
|
|
pub fn new(pid: u32, username: &str, passwd: &str) -> Self {
|
|
let passwd_data = passwd.as_bytes();
|
|
|
|
let mut passwd = [0u8; 16];
|
|
|
|
for (idx, byte) in passwd_data.iter().enumerate() {
|
|
passwd[idx] = *byte;
|
|
}
|
|
|
|
Self {
|
|
kerbros_password: passwd,
|
|
username: username.into(),
|
|
pid,
|
|
}
|
|
}
|
|
|
|
pub fn new_raw_password(pid: u32, username: &str, passwd: [u8; 16]) -> Self {
|
|
Self {
|
|
kerbros_password: passwd,
|
|
username: username.into(),
|
|
pid,
|
|
}
|
|
}
|
|
|
|
pub fn get_login_data(&self) -> (u32, &[u8]) {
|
|
(self.pid, &self.kerbros_password)
|
|
}
|
|
}
|