diff --git a/Cargo.lock b/Cargo.lock index 9dffd5c5f4aa1b29805d86ce32acf58d8f64423a..511985cf2710449d9da23585f6ec1d8e192aab4a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -246,8 +246,9 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bcrypt" -version = "0.14.0" -source = "git+https://github.com/mkj/rust-bcrypt?branch=noalloc#2ee6bc724ffd76bf9d221b0da5487d6cc304002f" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d1c9c15093eb224f0baa400f38fcd713fc1391a6f1c389d886beef146d60a3" dependencies = [ "base64", "blowfish", diff --git a/Cargo.toml b/Cargo.toml index 6bd18c94f9871915e8f9ed8bf72d6d27ffc1a80d..fd51855bdb799b50aad3cee07ce9bc77bac45bd4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -101,8 +101,6 @@ cyw43 = { git = "https://github.com/embassy-rs/embassy/", rev = "2eb7a67c7027c67 cyw43-pio = { git = "https://github.com/embassy-rs/embassy/", rev = "2eb7a67c7027c6768fa95031caf60bcd0eade1ad" } embassy-net-w5500 = { git = "https://github.com/embassy-rs/embassy/", rev = "2eb7a67c7027c6768fa95031caf60bcd0eade1ad" } -bcrypt = { version = "0.14", git = "https://github.com/mkj/rust-bcrypt", branch = "noalloc" } - # these are mostly applicable to picow, but can't hurt generally [profile.dev] debug = 2 diff --git a/embassy/demos/common/Cargo.toml b/embassy/demos/common/Cargo.toml index dc85853b6ffd27443bec158125b3114929a967fb..393d345e1abd5bff4393eaad281bfc8ebad95cfd 100644 --- a/embassy/demos/common/Cargo.toml +++ b/embassy/demos/common/Cargo.toml @@ -21,7 +21,7 @@ heapless = "0.7.15" embedded-io = { version = "0.4", features = ["async"] } sha2 = { version = "0.10", default-features = false } hmac = { version = "0.12", default-features = false } -bcrypt = { version = "0.14", default-features = false } +bcrypt = { version = "0.15", default-features = false } ed25519-dalek = { version = "2.0.0-rc.2", default-features = false } defmt = { version = "0.3", optional = true } diff --git a/embassy/demos/common/src/config.rs b/embassy/demos/common/src/config.rs index 829b4882e9ddbf448354a32e2478708fd2200488..9d0bac1a41c6e0bdb63b8b18b4c54acd75c4a0ec 100644 --- a/embassy/demos/common/src/config.rs +++ b/embassy/demos/common/src/config.rs @@ -179,6 +179,11 @@ where let ad: [u8; 4] = SSHDecode::dec(s)?; let ad = Ipv4Address::from_bytes(&ad); let prefix = SSHDecode::dec(s)?; + if prefix > 32 { + // emabassy panics, so test it here + debug!("Prefix {} > 32", prefix); + return Err(WireError::PacketWrong) + } let gw: Option<[u8; 4]> = dec_option(s)?; let gateway = gw.map(|gw| Ipv4Address::from_bytes(&gw)); Ok(StaticConfigV4 { @@ -365,8 +370,8 @@ mod tests { ), mac: [6, 2, 3, 4, 5, 6], ip4_static: Some(embassy_net::StaticConfigV4 { - address: embassy_net::Ipv4Cidr::new(embassy_net::Ipv4Address::UNSPECIFIED, 8), - gateway: Some(embassy_net::Ipv4Address::UNSPECIFIED), + address: embassy_net::Ipv4Cidr::new(embassy_net::Ipv4Address([44,33,22,11]), 8), + gateway: Some(embassy_net::Ipv4Address([1,2,3,4])), // no dns servers. may need changing later? dns_servers: heapless::Vec::new(), }), diff --git a/embassy/demos/std/src/main.rs b/embassy/demos/std/src/main.rs index 0f23d3b820f21c2b066291c6b8493d7cc3fcde38..0e24d3d50e809d934ac8f5dfac74ce9af4e4d2af 100644 --- a/embassy/demos/std/src/main.rs +++ b/embassy/demos/std/src/main.rs @@ -44,7 +44,18 @@ async fn net_task(stack: &'static Stack<TunTapDevice>) -> ! { async fn main_task(spawner: Spawner) { // TODO config let opt_tap0 = "tap0"; - let net_config = Config::dhcpv4(Default::default()); + + let config = &*singleton!( { + let mut config = SSHConfig::new().unwrap(); + // config.set_console_pw(Some("pw")).unwrap(); + SunsetMutex::new(config) + } ); + + let net_config = if let Some(ref s) = config.lock().await.ip4_static { + embassy_net::Config::ipv4_static(s.clone()) + } else { + embassy_net::Config::dhcpv4(Default::default()) + }; // Init network device let device = TunTapDevice::new(opt_tap0).unwrap(); @@ -62,12 +73,6 @@ async fn main_task(spawner: Spawner) { // Launch network task spawner.spawn(net_task(stack)).unwrap(); - let config = &*singleton!( { - let mut config = SSHConfig::new().unwrap(); - // config.set_console_pw(Some("pw")).unwrap(); - SunsetMutex::new(config) - } ); - for _ in 0..NUM_LISTENERS { spawner.spawn(listener(stack, config)).unwrap(); }