Skip to content

Commit 41307a2

Browse files
committed
feat: packet signing
1 parent a7c7d33 commit 41307a2

File tree

5 files changed

+11
-8
lines changed

5 files changed

+11
-8
lines changed

src/battery.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ pub async fn battery_read_task(
8282
level: Some(bat_percentage as f64),
8383
voltage: Some(bat_calc_mv / 1000.0),
8484
},
85+
sign_key: Some(unsafe { crate::state::SIGN_KEY }),
8586
})
8687
.await;
8788
}

src/buttons.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ async fn submit_up(
146146
firmware: alloc::string::ToString::to_string(crate::version::FIRMWARE),
147147
sign_key: unsafe { crate::state::SIGN_KEY },
148148
},
149+
sign_key: None,
149150
})
150151
.await;
151152

src/main.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,11 @@ async fn main(spawner: Spawner) {
118118
// TODO: add error handling here
119119
let mut sign_key = [0; 4];
120120
if nvs.get_key(b"SIGN_KEY", &mut sign_key).await.is_ok() {
121-
unsafe {
122-
crate::state::SIGN_KEY =
123-
u32::from_be_bytes(sign_key.try_into().expect("Cannot fail")) >> 1;
124-
}
121+
unsafe { crate::state::SIGN_KEY = u32::from_be_bytes(sign_key) >> 1 };
125122
} else {
126123
_ = getrandom::getrandom(&mut sign_key);
127124
_ = nvs.append_key(b"SIGN_KEY", &sign_key).await;
128-
unsafe {
129-
crate::state::SIGN_KEY =
130-
u32::from_be_bytes(sign_key.try_into().expect("Cannot fail")) >> 1;
131-
}
125+
unsafe { crate::state::SIGN_KEY = u32::from_be_bytes(sign_key) >> 1 };
132126
}
133127

134128
spawner.must_spawn(lcd::lcd_task(
@@ -351,6 +345,7 @@ async fn logger_task(global_state: GlobalState) {
351345
ws::send_packet(structs::TimerPacket {
352346
tag: None,
353347
data: structs::TimerPacketInner::Logs { logs: tmp_logs },
348+
sign_key: None,
354349
})
355350
.await;
356351
}

src/structs.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ pub struct TimerPacket {
2424
#[serde(skip_serializing_if = "Option::is_none")]
2525
pub tag: Option<u64>,
2626
pub data: TimerPacketInner,
27+
28+
#[serde(skip_serializing_if = "Option::is_none")]
29+
pub sign_key: Option<u32>,
2730
}
2831

2932
#[derive(Serialize, Deserialize, Debug, Clone)]

src/ws.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ async fn ws_loop(
205205
firmware: alloc::string::ToString::to_string(crate::version::FIRMWARE),
206206
sign_key: unsafe { crate::state::SIGN_KEY },
207207
},
208+
sign_key: None,
208209
})
209210
.await;
210211
}
@@ -463,6 +464,7 @@ pub async fn send_test_ack(global_state: &GlobalState) {
463464
send_packet(TimerPacket {
464465
tag: None,
465466
data: TimerPacketInner::TestAck(global_state.state.value().await.snapshot_data()),
467+
sign_key: Some(unsafe { crate::state::SIGN_KEY }),
466468
})
467469
.await;
468470
}
@@ -505,6 +507,7 @@ where
505507
let packet = TimerPacket {
506508
tag: Some(tag),
507509
data: packet,
510+
sign_key: Some(unsafe { crate::state::SIGN_KEY }),
508511
};
509512
send_packet(packet).await;
510513

0 commit comments

Comments
 (0)