use lox::bridge_table::{BridgeLine, ENC_BUCKET_BYTES}; use lox::cred::{Invitation, Lox}; use lox::proto; use lox::{IssuerPubKey, OPENINV_LENGTH}; use serde::{Deserialize, Serialize}; use serde_with::serde_as; use std::array::TryFromSliceError; #[derive(Deserialize, Serialize)] pub struct OpenReqState { pub request: proto::open_invite::Request, pub state: proto::open_invite::State, } #[derive(Deserialize, Serialize)] pub struct TrustReqState { pub request: proto::trust_promotion::Request, pub state: proto::trust_promotion::State, } #[derive(Deserialize, Serialize)] pub struct MigReqState { pub request: proto::migration::Request, pub state: proto::migration::State, } #[derive(Deserialize, Serialize)] pub struct LevelupReqState { pub request: proto::level_up::Request, pub state: proto::level_up::State, } #[derive(Deserialize, Serialize)] pub struct IssueInviteReqState { pub request: proto::issue_invite::Request, pub state: proto::issue_invite::State, } #[derive(Deserialize, Serialize)] pub struct RedeemReqState { pub request: proto::redeem_invite::Request, pub state: proto::redeem_invite::State, } #[derive(Deserialize, Serialize)] pub struct CheckBlockageReqState { pub request: proto::check_blockage::Request, pub state: proto::check_blockage::State, } #[derive(Deserialize, Serialize)] pub struct BlockageMigReqState { pub request: proto::blockage_migration::Request, pub state: proto::blockage_migration::State, } #[derive(Debug, Deserialize, Serialize)] pub struct PubKeys { pub lox_pub: IssuerPubKey, pub migration_pub: IssuerPubKey, pub migrationkey_pub: IssuerPubKey, pub reachability_pub: IssuerPubKey, pub invitation_pub: IssuerPubKey, } #[serde_as] #[derive(Serialize, Deserialize)] pub struct EncBridgeTable { #[serde_as(as = "Vec<[_; ENC_BUCKET_BYTES]>")] pub etable: Vec<[u8; ENC_BUCKET_BYTES]>, } #[derive(Debug, Deserialize, Serialize)] pub struct LoxCredential { pub lox_credential: Lox, pub bridgeline: Option, pub invitation: Option, } // This should also check the pubkey pub fn validate(invite: &[u8]) -> Result<[u8; OPENINV_LENGTH], TryFromSliceError> { invite.try_into() }