use std::time::{Duration, SystemTime};
fn main() -> anyhow::Result<()> {
let private_key = moq_token::Key::generate(moq_token::Algorithm::ES256, Some(moq_token::KeyId::random()))?;
println!("Private key:\n{}\n", private_key.to_str()?);
let public_key = private_key.to_public()?;
println!("Public key (give this to the relay):\n{}\n", public_key.to_str()?);
let claims = moq_token::Claims {
root: "rooms/meeting-123".to_string(),
publish: vec!["alice".to_string()],
subscribe: vec!["".to_string()],
expires: Some(SystemTime::now() + Duration::from_secs(3600)),
issued: Some(SystemTime::now()),
..Default::default()
};
let token = private_key.encode(&claims)?;
println!("Signed token:\n{token}\n");
let verified = public_key.decode(&token)?;
println!("Verified with public key:");
println!(" root: {}", verified.root);
println!(" publish: {:?}", verified.publish);
println!(" subscribe: {:?}", verified.subscribe);
Ok(())
}