A rust implementation of JSON Web Tokens.
```rust use jwts::{Claims, jws}; use jwts::jws::Header; use jwts::jws::alg::HS256;
let claims = Claims {
iss: Some("sea".toowned()),
..Default::default()
};
asserteq!(
jws::sign::
### Verify
```rust use jwts::{Claims, jws}; use jwts::jws::{Header, Token}; use jwts::jws::alg::HS256;
let claims = Claims {
iss: Some("sea".to_owned()),
..Default::default()
};
let token = jws::sign::
let result = Token::
### Validate Claims
```rust use std::time; use std::time::{Duration, SystemTime}; use jwts::Claims; use jwts::validate::{ExpectAud, ExpectIss, ExpectJti, ExpectSub, Expired, Iat, NotBefore, Validate};
fn nowsecs() -> u64 { SystemTime::now() .durationsince(time::UNIXEPOCH) .unwrapor(Duration::ZERO) .as_secs() }
let claims = Claims { iss: Some("sea".toowned()), sub: Some("subject".toowned()), aud: Some("audience".toowned()), jti: Some("id".toowned()), iat: Some(nowsecs()), nbf: Some(nowsecs()), exp: Some(nowsecs() + 1), }; asserteq!(claims.validate(IssuedAtTime), Ok(())); asserteq!(claims.validate(NotBeforeTime), Ok(())); asserteq!(claims.validate(ExpiredTime), Ok(())); asserteq!(claims.validate(ExpectIss("sea")), Ok(())); asserteq!(claims.validate(ExpectSub("subject")), Ok(())); asserteq!(claims.validate(ExpectAud("audience")), Ok(())); asserteq!(claims.validate(ExpectJti("id")), Ok(())); ```
Sign and verify use crate ring.
RFC 7519 JSON Web Token (JWT)
RFC 7515 JSON Web Signature (JWS)
RFC 7518 JSON Web Algorithms (JWA)