min_jwt 0.10.0

Minimal JSON Web Token library
Documentation
#[cfg(test)]
mod tests {
    #[cfg(all(feature = "serde", feature = "serde_json"))]
    #[test]
    fn test_es256() -> crate::error::Result<()> {
        use crate::BasicHeader;

        const HEADER: &str = "{\"alg\":\"ES256\",\"typ\":\"JWT\"}";
        let claims = crate::tests::jwt_claims_str();

        let signing_key = ::p256::ecdsa::SigningKey::random(&mut rand::thread_rng());
        let jwt = crate::encode_and_sign(HEADER.as_bytes(), claims.as_bytes(), &signing_key)?;

        let verifying_key = signing_key.verifying_key();
        let signature_verified_jwt = crate::verify(&jwt, verifying_key)?;

        let decoded_header = signature_verified_jwt.decode_header()?;
        let deserialized_header =
            serde_json::from_slice::<BasicHeader<'_>>(&decoded_header).unwrap();
        assert_eq!(
            deserialized_header,
            BasicHeader {
                alg: Some("ES256"),
                typ: Some("JWT"),
                kid: None,
            }
        );

        let decoded_claims = signature_verified_jwt.decode_claims()?;
        let deserialized_claims =
            serde_json::from_slice::<serde_json::Value>(&decoded_claims).unwrap();
        let expected_claims = serde_json::from_str::<serde_json::Value>(&claims).unwrap();
        assert_eq!(deserialized_claims, expected_claims);

        Ok(())
    }
}