aauth 0.0.2

Rust implementation of the AAuth authorization protocol
Documentation
use jsonwebtoken::{
    Algorithm, DecodingKey, TokenData, Validation, dangerous::insecure_decode, decode,
};
use serde::de::DeserializeOwned;

use crate::error::{JwtError, Result};

const CLOCK_SKEW: u64 = 60;

pub fn decode_unverified<T: DeserializeOwned>(jwt: &str) -> Result<TokenData<T>> {
    insecure_decode(jwt).map_err(|e| JwtError::Decode(e.to_string()).into())
}

pub fn decode_verified<T: DeserializeOwned>(
    jwt: &str,
    key: &DecodingKey,
    validation: &Validation,
) -> Result<TokenData<T>> {
    decode(jwt, key, validation).map_err(|e| JwtError::Decode(e.to_string()).into())
}

pub fn verified_validation() -> Validation {
    let mut validation = Validation::new(Algorithm::EdDSA);
    validation.validate_aud = false;
    validation.leeway = CLOCK_SKEW;
    validation
}