ans_types/lib.rs
1#![warn(missing_docs)]
2
3//! Shared types for the Agent Name Service (ANS) ecosystem.
4//!
5//! This crate provides common data structures and types used across ANS crates:
6//!
7//! - [`Fqdn`] - Fully Qualified Domain Name validation
8//! - [`Version`] - Semantic versioning for ANS agents
9//! - [`AnsName`] - ANS URI format (e.g., `ans://v1.0.0.agent.example.com`)
10//! - [`Badge`] - Badge data from the Transparency Log API
11//! - [`CertFingerprint`] - SHA-256 certificate fingerprints
12//!
13//! # Example
14//!
15//! ```rust
16//! use ans_types::{Fqdn, AnsName, Version};
17//!
18//! // Parse an FQDN
19//! let fqdn = Fqdn::new("agent.example.com").unwrap();
20//! assert_eq!(fqdn.ans_badge_name(), "_ans-badge.agent.example.com");
21//!
22//! // Parse an ANS name
23//! let name = AnsName::parse("ans://v1.0.0.agent.example.com").unwrap();
24//! assert_eq!(*name.version(), Version::new(1, 0, 0));
25//! assert_eq!(name.to_string(), "ans://v1.0.0.agent.example.com");
26//! ```
27
28pub mod badge;
29pub mod error;
30pub mod fingerprint;
31pub mod types;
32
33// Re-export commonly used types at crate root
34pub use badge::{
35 AgentEvent, AgentInfo, Attestations, Badge, BadgePayload, BadgeStatus, CertAttestation,
36 EventType, MerkleProof, Producer,
37};
38pub use error::{CryptoError, ParseError};
39pub use fingerprint::CertFingerprint;
40pub use types::{AnsName, Fqdn, Version};