A simple library for generating and parsing JWT tokens using HMAC SHA256 as per https://jwt.io/introduction

Encoding example

```rust use jwt_hmac; use serde::Serialize;

[derive(Serialize)]

struct Claims{ sub: String, name: String, admin: bool }

fn main(){ let secret = "I'm a secret".asbytes(); let claims = Claims{ sub: "1234567890".tostring(), name: "John Doe".tostring(), admin: true }; match jwthmac::create(secret, &claims) { Ok(token) => println!("Token: {}", token), Err(error) => println!("This can't be happening {}", error) } } ```

Decoding example

```rust use jwt_hmac; use serde::Deserialize;

[derive(Deserialize)]

struct Claims{ sub: String }

fn main(){ let secret = "I'm a secret".asbytes(); match jwthmac::parse::( secret, "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.azXPRJHeWcZB5WHtA98gsnowX5gifvMJX2hoH4YPs" ){ Ok(claims) => println!("Sub: {}", claims.sub), Err(error) => match error{ jwt_hmac::Error::InvalidChecksum => println!("Secret doesn't match"), _ => println!("Probably not a valid JWT: {}", error) } } } ```

As illustrated in the examples above you can fill your claims with bloat for the client and have the back end only extract the useful bits when parsing.