Go to file
Vincent Prouillet 31d99324e2 Remove useless import + improve readme 2015-11-02 23:32:32 +00:00
benches Remove useless import + improve readme 2015-11-02 23:32:32 +00:00
examples Remove useless import + improve readme 2015-11-02 23:32:32 +00:00
src Make Algorithm encodable/decodable rather than using String 2015-11-02 23:12:01 +00:00
.editorconfig Initial commit 2015-10-31 15:37:15 +00:00
.gitignore Initial commit 2015-10-31 15:37:15 +00:00
.travis.yml Add example + travis 2015-11-02 20:34:11 +00:00
Cargo.toml Rename to jsonwebtoken 2015-11-02 23:27:28 +00:00
LICENSE Move benches to a folder + add license 2015-11-02 21:15:45 +00:00
README.md Remove useless import + improve readme 2015-11-02 23:32:32 +00:00

README.md

jsonwebtoken

Build Status

Installation

Add the following to Cargo.toml:

jsonwebtoken = "0.1"
rustc-serialize = "0.3"

How to use

There is a complete example in examples/claims.rs but here's a quick one.

In terms of imports:

extern crate jsonwebtoken as jwt;
extern crate rustc_serialize;

use jwt::{encode, decode, Algorithm};

Encoding

// encode<T: Part>(claims: T, secret: String, algorithm: Algorithm) -> Result<String, Error>
let token = encode::<Claims>(my_claims, "secret".to_owned(), Algorithm::HS256);

In that example, my_claims is an instance of the Claims struct.
The struct you are using for your claims should derive RustcEncodable and RustcDecodable.

Decoding

// decode<T: Part>(token: String, secret: String, algorithm: Algorithm) -> Result<T, Error>
let claims = decode::<Claims>(token.to_owned(), "secret".to_owned(), Algorithm::HS256);

In addition to the normal base64/json decoding errors, decode can return two custom errors:

  • InvalidToken: if the token is not a valid JWT
  • InvalidSignature: if the signature doesn't match
  • WrongAlgorithmHeader: if the alg in the header doesn't match the one given to decode

Algorithms

Right now, only SHA family is supported: SHA256, SHA384 and SHA512.

Missing

The header is currently not customisable and therefore does not support things like kid right now.

Performance

On my thinkpad 440s for a 2 claims struct using SHA256:

test bench_decode ... bench:       7,106 ns/iter (+/- 5,354)
test bench_encode ... bench:       3,453 ns/iter (+/- 140)