Simple & Compact Binary Credentials
| Not Done | |:----------------------------------------------------------------------:|
| Name | Flag | Type | Description |
|-------------|--------|--------|----------------------------------------------|
| TYP
| 0x1
| byte
| The type of the token (e.g. user or session) |
| SUBJECT
| 0x2
| data
| The subject of the token |
| INCREMENT
| 0x4
| int
| An increment for invalidating tokens |
| BEFORE
| 0x8
| int
| When the token expires |
| AFTER
| 0x10
| int
| When the token is valid from |
| DATA
| 0x20
| data
| Defined token claims |
| SALT
| 0x40
| data
| An pinch of extra salt (why not?) |
```rust use std::time::Duration; use crate::signed::SignedToken; use crate::{Header, Token};
// define key let key = [0u8; 32];
// build the token let token = Token::builder() .typ(0x01) .subject("Sam") .data("Hello World!") .before(Duration::from_secs(300));
println!("{:?}", token);
// seal and sign the token with the key let token = token .seal() .sign(key.as_ref());
println!("{:?} -> {:?}", token.len(), token);
// create a signed token let token = SignedToken::decode(&token).unwrap() // verify the token with the key .verify(&key.as_ref()).unwrap()
// require typ, subject, data.
.require(Header::TYP | Header::SUBJECT | Header::DATA | Header::BEFORE).unwrap()
// check the token is of the given type
.match_typ(0x01).unwrap()
// validate before time
.validate().unwrap()
// unseal the token .unseal();
// get the subject field println!("{:?}", token.subject().unwrap().as_str()); ```