mod storage_node_identity;
mod user_identity;
pub use storage_node_identity::StorageNodeIdentity;
pub use user_identity::UserIdentity;
use std::fmt::Debug;
use branca::Branca;
use serde::{Deserialize, Serialize};
const TOKEN_TTL_SECONDS: u32 = 60 * 60 * 6;
#[derive(Clone, PartialEq, Eq)]
pub struct EncryptionKey {
pub key: String,
}
pub fn make_token<K: AsRef<str>, D: Serialize>(key: K, data: D) -> anyhow::Result<String> {
let mut token = Branca::new(key.as_ref().as_bytes())?;
token
.set_ttl(TOKEN_TTL_SECONDS)
.set_timestamp(time::OffsetDateTime::now_utc().unix_timestamp() as u32);
let encoded_body = bincode::serialize(&data)?;
Ok(token.encode(&encoded_body)?)
}
#[derive(Debug, Default, Deserialize, Serialize)]
struct Signature {
pub signature: Option<String>,
}