use super::store::AgentRegistry;
#[derive(Debug, thiserror::Error)]
pub enum TokenError {
#[error("agent not found: {0:?}")]
AgentNotFound([u8; 16]),
#[error("invalid credential token")]
InvalidToken,
}
pub fn generate_credential_token() -> String {
uuid::Uuid::new_v4().to_string()
}
pub fn validate_token(registry: &AgentRegistry, agent_id: &[u8; 16], token: &str) -> Result<(), TokenError> {
let record = registry.get(agent_id).ok_or(TokenError::AgentNotFound(*agent_id))?;
if record.credential_token == token {
Ok(())
} else {
Err(TokenError::InvalidToken)
}
}