jwtea 0.1.0

Lean JWT library
Documentation
use jwtea::{Header, Jwk, RawJwt, VerifyingKey};


mod data;


fn do_verify(jwt: &str, jwk: &str) {
    let raw = RawJwt::new(jwt).unwrap();
    let signature = raw.decode_signature().unwrap();
    let header_str = raw.decode_header().unwrap();
    let header = <Header>::from_str(&header_str).unwrap();
    let jwk: Jwk = serde_json::from_str(jwk).unwrap();
    let key = VerifyingKey::from_jwk(&jwk).unwrap();
    key.verify(&header, raw.raw_message(), &signature).unwrap();
}

#[test]
fn verify_ed25519() {
    do_verify(data::ed25519::JWT, data::ed25519::KEY_JWK);
}

#[test]
fn verify_es256() {
    do_verify(data::es256::JWT, data::es256::KEY_JWK);
}

#[test]
fn verify_es384() {
    do_verify(data::es384::JWT, data::es384::KEY_JWK);
}

#[test]
fn verify_es512() {
    do_verify(data::es512::JWT, data::es512::KEY_JWK);
}

#[test]
fn verify_rs256() {
    do_verify(data::rsa::JWT_RS256, data::rsa::KEY_JWK);
}

#[test]
fn verify_rs384() {
    do_verify(data::rsa::JWT_RS384, data::rsa::KEY_JWK);
}

#[test]
fn verify_rs512() {
    do_verify(data::rsa::JWT_RS512, data::rsa::KEY_JWK);
}

#[test]
fn verify_ps256() {
    do_verify(data::rsa::JWT_PS256, data::rsa::KEY_JWK);
}

#[test]
fn verify_ps384() {
    do_verify(data::rsa::JWT_PS384, data::rsa::KEY_JWK);
}

#[test]
fn verify_ps512() {
    do_verify(data::rsa::JWT_PS512, data::rsa::KEY_JWK);
}