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 scitt;
32pub mod types;
33
34// Re-export commonly used types at crate root
35pub use badge::{
36 AgentEvent, AgentInfo, Attestations, Badge, BadgePayload, BadgeStatus, CertAttestation,
37 EventType, MerkleProof, Producer,
38};
39pub use error::{CryptoError, ParseError};
40pub use fingerprint::CertFingerprint;
41pub use scitt::{CertEntry, CertType, StatusTokenPayload, VerificationTier};
42pub use types::{AnsName, Fqdn, Version};