talk_api_internal/auth/xvc/
default.rs1use sha2::{Digest, Sha512};
2
3use super::XvcHasher;
4
5#[derive(Debug, Clone, Copy)]
9pub struct Win32XVCHasher<'a>(pub &'a str, pub &'a str);
10
11impl XvcHasher for Win32XVCHasher<'_> {
12 fn full_xvc_hash(&self, device_uuid: &str, user_agent: &str, email: &str) -> Vec<u8> {
13 let mut hasher = Sha512::new();
14
15 hasher.update(self.0);
16 hasher.update("|");
17 hasher.update(user_agent);
18 hasher.update("|");
19 hasher.update(self.1);
20 hasher.update("|");
21 hasher.update(email);
22 hasher.update("|");
23 hasher.update(device_uuid);
24
25 hasher.finalize().to_vec()
26 }
27}
28
29#[derive(Debug, Clone, Copy)]
33pub struct AndroidSubXVCHasher<'a>(pub &'a str, pub &'a str, pub &'a str);
34
35impl XvcHasher for AndroidSubXVCHasher<'_> {
36 fn full_xvc_hash(&self, _: &str, user_agent: &str, email: &str) -> Vec<u8> {
37 let mut hasher = Sha512::new();
38
39 hasher.update(self.0);
40 hasher.update("|");
41 hasher.update(user_agent);
42 hasher.update("|");
43 hasher.update(self.1);
44 hasher.update("|");
45 hasher.update(email);
46 hasher.update("|");
47 hasher.update(self.2);
48
49 hasher.finalize().to_vec()
50 }
51}