Add Lox-utils

This commit is contained in:
onyinyang 2023-06-05 15:24:06 -04:00
parent e65c16ab0b
commit af9fc6dfd1
No known key found for this signature in database
GPG Key ID: 156A6435430C2036
2 changed files with 103 additions and 0 deletions

View File

@ -0,0 +1,26 @@
[package]
name = "lox-utils"
version = "0.1.0"
authors = ["The Tor Project, Inc.", "Lindsey Tulloch <onyinyang@torproject.org"]
edition = "2021"
rust-version = "1.65"
homepage = "https://gitlab.torproject.org/tpo/anti-censorship/lox/-/wikis/home"
description = "General helpers used by Lox"
keywords = ["tor", "lox"]
# We must put *something* here and this will do
categories = ["rust-patterns"]
repository = "https://gitlab.torproject.org/tpo/anti-censorship/lox.git/"
[dependencies]
lox = {path = "../lox-library", version = "0.1.0"}
serde = "1"
serde_with = "3.0.0"
[features]
full = []
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

View File

@ -0,0 +1,77 @@
use lox::IssuerPubKey;
use lox::proto;
use lox::cred::{Lox, Invitation};
use lox::bridge_table::{ENC_BUCKET_BYTES, BridgeLine};
use serde::{Deserialize, Serialize};
use serde_with::{serde_as};
#[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<BridgeLine>,
pub invitation: Option<Invitation>,
}