preprinttui 0.1.13

Terminal User Interface (TUI) for PreConnect printer.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use base64::{Engine as _, engine::general_purpose::URL_SAFE_NO_PAD};
use hmac::{Hmac, KeyInit, Mac};
use sha2::Sha256;

const JWT_HEADER: &str = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
const JWT_PAYLOAD: &str = "eyJzdWIiOiJwcmludGVyIiwiaXNzIjoicHJlY29ubmVjdCJ9";

pub fn make_jwt(worker_key: &str) -> String {
    let unsigned = format!("{JWT_HEADER}.{JWT_PAYLOAD}");
    let signature = Hmac::<Sha256>::new_from_slice(worker_key.as_bytes())
        .map(|mac| URL_SAFE_NO_PAD.encode(mac.chain_update(&unsigned).finalize().into_bytes()))
        .unwrap_or_default();
    format!("{unsigned}.{signature}")
}