README.md

Erlang JWT Library
=
erljwt is a easy to use json web token [JWT] parsing and minting library.
JWT is a simple authorization token [RFC7519](https://www.rfc-editor.org/rfc/rfc7519.txt) based on JSON.

erljwt uses the jsone library for json parsing.

supported algorithm (the atom to use)
 - none (none)
 - RS256 (rs256)
 - RS384 (rs384)
 - RS512 (rs512)
 - HS256 (hs256)
 - HS384 (hs384)
 - HS512 (hs512)
 - ES256 (es256)
 - ES384 (es384)
 - ES512 (es512)

## Minimal Example

Compilation
```shell
   make
   make eunit
```

In Erlang shell (start using `./rebar3 shell`):
```erlang
    %% Create JWT token
    application:start(crypto).
    Key = #{
        kty => <<"oct">>,
        k => <<"53F61451CAD6231FDCF6859C6D5B88C1EBD5DC38B9F7EBD990FADD4EB8EB9063">>
    }.
    Claims = #{
        user_id => <<"bob123">>,
        user_name => <<"Bob">>
    }.
    ExpirationSeconds = 86400.
    Token = erljwt:create(hs256, Claims, ExpirationSeconds, Key).

    %% validate JWT token
    erljwt:validate(Token, [hs256], #{}, Key).
```

You get back the original claims, plus expiration claim and the header and signature:

```erlang
{ok,
    #{ claims =>
        #{<<"exp">> => 1392607527,
          <<"user_id">> => <<"bob123">>,
          <<"user_name">> => <<"Bob">>
         },
       header => #{...},
       signature => <<"lnmmaen....">>
    }
}
```