#[cfg(feature = "v3")]
pub use crate::v3::Metadata;
#[cfg(not(feature = "v3"))]
#[path = "../v3/metadata.rs"]
mod metadata;
#[cfg(not(feature = "v3"))]
pub use metadata::Metadata;
#[cfg(feature = "cli")]
mod dig;
#[cfg(feature = "cli")]
pub use dig::dig;
use ed25519_dalek::{Signer, SigningKey};
pub fn generate(metadata: &Metadata) -> (String, String) {
let unhashed_det: &[u8] = &[
metadata.designation.as_bytes(),
b"-",
&metadata.timestamp.to_bytes(),
]
.concat();
let det = blake3::hash(unhashed_det);
let keypair = SigningKey::from_bytes(metadata.seed);
let sig = keypair.sign(det.as_bytes());
let short = &format!("{sig:x}")[..7];
let long = z32::encode(&sig.to_bytes()[..10]);
(short.to_string(), long)
}