aep-core 0.1.0

Transport-independent protocol primitives for the Agent Enrollment Protocol.
Documentation
use std::time::Duration;

use crate::ClaimName;

pub const VERSION: &str = "1.0";
pub const MEDIA_TYPE: &str = "application/aep+json";
pub const PROBLEM_MEDIA_TYPE: &str = "application/problem+json";
pub const AUTHORIZATION_SCHEME: &str = "AEP";
pub const AUTHORIZATION_HEADER: &str = "AEP-Authorization";
pub const WELL_KNOWN_PATH: &str = "/.well-known/aep";
pub const DEFAULT_HTTP_ENDPOINT_BASE: &str = "/aep/";
pub const MAX_AUTHENTICATION_METHODS: usize = 16;
pub const MAX_ASSERTION_LIFETIME: Duration = Duration::from_secs(300);
pub const RECOMMENDED_CLOCK_SKEW: Duration = Duration::from_secs(30);
pub const DEFAULT_INSPECT_FRESHNESS: Duration = Duration::from_secs(300);
pub const MINIMUM_IDEMPOTENCY_TTL: Duration = Duration::from_secs(3600);

pub fn registered_claims() -> Vec<ClaimName> {
    vec![
        ClaimName::ContactAddressPrimary,
        ClaimName::ContactEmail,
        ClaimName::ContactMobile,
        ClaimName::PersonBirthdate,
        ClaimName::PersonFirstName,
        ClaimName::PersonLastName,
        ClaimName::PersonUsername,
    ]
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn lists_each_registered_claim() {
        let claims = registered_claims();
        assert_eq!(claims.len(), 7);
        assert!(claims.contains(&ClaimName::ContactAddressPrimary));
    }
}