reach_visual_key_identity/
lib.rs1use argon2::*;
5
6use reach_signatures::Digestible;
7
8mod v0 {
9 include!(concat!(env!("OUT_DIR"), "/visual_key_identity_v0.rs"));
10}
11
12pub fn visual_key_identity<D>(digestible: &D, salt: &[u8]) -> Result<String>
13where
14 D: Digestible,
15{
16 let mut identity = [0u8; 16];
17 let params = Params::new(8, 2, 1, Some(16))?;
18 Argon2::new(Algorithm::Argon2id, Version::V0x13, params).hash_password_into(
19 digestible.finalized_digest().as_slice(),
20 salt,
21 &mut identity,
22 )?;
23
24 Ok(identity
25 .iter()
26 .map(|c| v0::EMOJIS_V0[*c as usize])
27 .collect::<Vec<_>>()
28 .join(" "))
29}