BeNu

Simple & Compact Binary Credentials

| Not Done | |:----------------------------------------------------------------------:|

Fields

| 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?) |

Usage

```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()); ```