Skip to content

Commit 1377db5

Browse files
committed
feat(bridge): implement encrypted credential storage and add test client
1 parent 87a0075 commit 1377db5

5 files changed

Lines changed: 258 additions & 22 deletions

File tree

Cargo.lock

Lines changed: 90 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/bridge/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ tarpc = { version = "0.37.0", features = ["tokio1", "serde-transport"] }
1515
tokio-serde = { version = "0.9", features = ["json"] }
1616
futures = "0.3"
1717
tokio-util = { version = "0.7", features = ["codec", "compat"] }
18+
clap = { version = "4.5.60", features = ["derive"] }
19+
tracing-subscriber = { workspace = true, features = ["env-filter"] }
1820

1921
[target.'cfg(unix)'.dependencies]
2022
nix = { version = "0.29", features = ["socket", "uio", "user"] }
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
use clap::Parser;
2+
use localgpt_bridge::connect;
3+
use tarpc::context;
4+
5+
#[derive(Parser)]
6+
#[command(name = "test-bridge")]
7+
struct Cli {
8+
#[arg(short, long)]
9+
socket: String,
10+
11+
#[arg(short, long)]
12+
bridge_id: String,
13+
}
14+
15+
#[tokio::main]
16+
async fn main() -> anyhow::Result<()> {
17+
// Initialize logging
18+
tracing_subscriber::fmt()
19+
.with_env_filter("info")
20+
.init();
21+
22+
let cli = Cli::parse();
23+
24+
tracing::info!("Connecting to bridge socket at: {}", cli.socket);
25+
26+
// Connect to Bridge
27+
let client = connect(&cli.socket).await?;
28+
29+
// Request credentials
30+
tracing::info!("Requesting credentials for: {}", cli.bridge_id);
31+
match client.get_credentials(context::current(), cli.bridge_id.clone()).await? {
32+
Ok(secret) => {
33+
tracing::info!("Successfully retrieved credentials!");
34+
tracing::info!("Secret length: {} bytes", secret.len());
35+
if let Ok(s) = String::from_utf8(secret) {
36+
tracing::info!("Secret content (utf8): {}", s);
37+
}
38+
},
39+
Err(e) => {
40+
tracing::error!("Failed to retrieve credentials: {}", e);
41+
std::process::exit(1);
42+
}
43+
}
44+
45+
Ok(())
46+
}

crates/core/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ sha2 = "0.10"
7575
hmac = "0.12"
7676
localgpt-bridge = { version = "0.1.0", path = "../bridge" }
7777
tarpc = { version = "0.37.0", features = ["tokio1", "serde-transport"] }
78+
chacha20poly1305 = "0.10.1"
7879

7980
[target.'cfg(target_os = "linux")'.build-dependencies]
8081
cc = "1"

0 commit comments

Comments
 (0)