Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
2b42b3b
feat: implement SEP-0005 compliant derivation with multi-account support
nonso7 Jun 22, 2026
ea471d3
fix: resolve all CI test failures
nonso7 Jun 22, 2026
7ad6780
fix: resolve lib compilation error by removing Config import from reg…
nonso7 Jun 22, 2026
f3b3687
fix: resolve remaining CI failures and add missing plugin functions
nonso7 Jun 22, 2026
c5cef96
fix: apply clippy fixes for needless borrows
nonso7 Jun 22, 2026
05b405f
fix: add execute permissions to e2e-smoke.sh script
nonso7 Jun 22, 2026
26a870c
fix: install libudev-dev system dependency in CI environment
nonso7 Jun 22, 2026
2c8862b
fix: resolve cargo deny and clippy lint failures
nonso7 Jun 22, 2026
3010e79
fix: resolve final clippy lint warnings
nonso7 Jun 22, 2026
b61d078
fix: resolve clippy vec! and rustfmt line length errors
nonso7 Jun 22, 2026
b74d2f6
fix: resolve all remaining clippy lint errors
nonso7 Jun 22, 2026
80ca51f
fix: resolve clippy errors in deployment test files
nonso7 Jun 22, 2026
31d330d
fix: resolve final clippy errors in wallet and hardware wallet tests
nonso7 Jun 22, 2026
d4548f9
fix: update wasmprinter version and add missing similar dependency
nonso7 Jun 22, 2026
d096020
fix: restore correct main.rs with proper CLI structure
nonso7 Jun 22, 2026
f38cb9a
fix: resolve all remaining CI errors (rustfmt, clippy, build, smoke t…
nonso7 Jun 22, 2026
8765e1d
fix: resolve remaining build, clippy, and rustfmt errors
nonso7 Jun 22, 2026
d51e3bb
fix: add missing base64::Engine import and fix to_xdr_base64
nonso7 Jun 22, 2026
92cfd14
fix: resolve final clippy lint and rustfmt errors
nonso7 Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libudev-dev
- name: Build
run: cargo build --locked
- name: Test
Expand All @@ -47,6 +49,8 @@ jobs:
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libudev-dev
- name: Run Clippy
run: cargo clippy --all-targets --all-features --locked -- -D warnings

Expand All @@ -56,6 +60,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y libudev-dev
- name: Build
run: cargo build --locked
- name: Rust smoke tests
Expand Down
133 changes: 112 additions & 21 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,14 @@ tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "fmt"]
tracing-appender = "0.2"
bip39 = { version = "2", features = ["rand", "std"] }
wasmparser = "0.116.0"
wasmprinter = "0.3"
wasmprinter = "0.252"
wat = "1.0"
hmac = "0.12"
rustyline = "14.0.0"
zip = "0.6"
tempfile = "3.8"
zeroize = { version = "1.9.0", features = ["derive"] }
similar = "2.2"

[features]
hardware-wallet = ["dep:hidapi", "dep:trezor-client"]
Expand Down
2 changes: 1 addition & 1 deletion benches/benchmarks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ fn bench_basic(c: &mut Criterion) {
b.iter(|| {
let mut acc: u64 = 0;
for i in 0..10_000u64 {
acc = acc.wrapping_add((i & 0xff) as u64);
acc = acc.wrapping_add(i & 0xff);
}
black_box(acc);
})
Expand Down
1 change: 1 addition & 0 deletions deny.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ allow = [
"Zlib",
"OpenSSL",
"CC0-1.0",
"BSL-1.0",
]

# ring 0.16.x has no license field; clarify it manually.
Expand Down
Empty file modified scripts/e2e-smoke.sh
100644 → 100755
Empty file.
44 changes: 2 additions & 42 deletions src/commands/deploy.rs
Original file line number Diff line number Diff line change
@@ -1,43 +1,3 @@
use zeroize::{Zeroizing, Zeroize};
use std::fs::File;
use zeroize::{Zeroizing, Zeroize};
use std::os::unix::fs::PermissionsExt;
use std::io::Write;
// Decrypt the key into a Zeroizing wrapper
let decrypted_secret: Zeroizing<String> = decrypt_wallet_key(&wallet_name)?;

// Create temp file for the secret with 600 permissions
let mut temp_key_file = tempfile::NamedTempFile::new()?;
std::fs::set_permissions(temp_key_file.path(), std::fs::Permissions::from_mode(0o600))?;
write!(temp_key_file, "{}", *decrypted_secret)?;

// Execute command securely
let mut child = std::process::Command::new("stellar")
.args(["contract", "deploy", "--source-account", temp_key_file.path().to_str().unwrap()])
.env_clear()
.spawn()?;

child.wait()?;
// Memory is automatically zeroed by Zeroizing<String> when it goes out of scope here
use std::os::unix::fs::PermissionsExt;
use std::io::Write;

// Inside handle() function:
let decrypted_secret: Zeroizing<String> = decrypt_wallet_key(&wallet_name)?;

// Create temp file for the secret with 600 permissions
let mut temp_key_file = tempfile::NamedTempFile::new()?;
std::fs::set_permissions(temp_key_file.path(), std::fs::Permissions::from_mode(0o600))?;
write!(temp_key_file, "{}", *decrypted_secret)?;

// Execute command securely
let mut child = std::process::Command::new("stellar")
.args(["contract", "deploy", "--source-account", temp_key_file.path().to_str().unwrap()])
.env_clear() // Prevents leakage of existing env vars
.spawn()?;

child.wait()?;
// Memory is automatically zeroed by Zeroizing<String> when scope ends
use crate::utils::{config, confirmation, horizon, optimizer, print as p, soroban};
use anyhow::Result;
use clap::Args;
Expand Down Expand Up @@ -402,8 +362,8 @@ pub fn handle(args: DeployArgs) -> Result<()> {
args.network.clone(),
risk_level,
)
.add("WASM file", &wasm_path.display().to_string())
.add("WASM size", &format!("{:.1} KB", wasm_size_kb))
.add("WASM file", wasm_path.display().to_string())
.add("WASM size", format!("{:.1} KB", wasm_size_kb))
.add("WASM hash", &wasm_hash)
.add("Wallet", &wallet.name)
.add("Public Key", &wallet.public_key)
Expand Down
4 changes: 2 additions & 2 deletions src/commands/invoke.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,14 @@ pub fn handle(args: InvokeArgs) -> Result<()> {
.add("Wallet", &args.wallet)
.add(
"Estimated Fee",
&format!("{} stroops", outcome.simulation.fee),
format!("{} stroops", outcome.simulation.fee),
)
.add("Return Value", &outcome.simulation.return_value);

// Add arguments to summary if present
if !arg_list.is_empty() {
for (i, (arg, arg_type)) in arg_list.iter().zip(arg_type_list.iter()).enumerate() {
summary = summary.add(&format!("Arg [{}] {}", i, arg_type), arg);
summary = summary.add(format!("Arg [{}] {}", i, arg_type), arg);
}
}

Expand Down
Loading
Loading