MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / rejects_tampered_mac

Function rejects_tampered_mac

nodedb-cluster/src/auth/join_token.rs:170–189  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

168
169 #[test]
170 fn rejects_tampered_mac() {
171 let secret = [0x11u8; 32];
172 let expiry = SystemTime::now()
173 .duration_since(UNIX_EPOCH)
174 .unwrap()
175 .as_secs()
176 + 60;
177 let hex = issue_token(&secret, 1, expiry).unwrap();
178 // Flip the last MAC byte. XOR with 0xFF so it always changes even
179 // if it was already 0x00 (a fixed "00" replacement would be a
180 // no-op ~1/256 of the time, since the MAC varies with the expiry).
181 let mut tampered = hex.clone();
182 let len = tampered.len();
183 let orig = u8::from_str_radix(&tampered[len - 2..len], 16).unwrap();
184 tampered.replace_range(len - 2..len, &format!("{:02x}", orig ^ 0xFF));
185 assert_eq!(
186 verify_token(&tampered, &secret).unwrap_err(),
187 TokenError::InvalidMac
188 );
189 }
190
191 #[test]
192 fn rejects_wrong_secret() {

Callers

nothing calls this directly

Calls 5

nowFunction · 0.85
issue_tokenFunction · 0.85
duration_sinceMethod · 0.80
cloneMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected