From 20dc8e15bbe607b04375149e5fb728075126272e Mon Sep 17 00:00:00 2001 From: Diane Huxley Date: Tue, 14 May 2024 16:13:17 -0700 Subject: [PATCH] Enforce v size during create --- crates/dids/src/method/dht/bep44.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/crates/dids/src/method/dht/bep44.rs b/crates/dids/src/method/dht/bep44.rs index 834b65c0..ebcee7f9 100644 --- a/crates/dids/src/method/dht/bep44.rs +++ b/crates/dids/src/method/dht/bep44.rs @@ -81,6 +81,11 @@ impl Bep44Message { where F: Fn(Vec) -> Result, KeyError>, { + let message_len = message.len(); + if message_len > MAX_V_LEN { + return Err(Bep44EncodingError::SizeError(message_len)); + } + let seq = SystemTime::now().duration_since(UNIX_EPOCH)?.as_secs(); let signable = signable(seq, message); @@ -156,6 +161,18 @@ mod tests { assert!(verify_result.is_ok()); } + #[test] + fn test_new_message_too_big() { + let too_big = vec![0; 10_000]; + let error = Bep44Message::new(&too_big, |_| -> Result, KeyError> { Ok(vec![]) }) + .expect_err("Should have returned error for malformed signature"); + + match error { + Bep44EncodingError::SizeError(size) => assert_eq!(size, 10_000), + _ => panic!(), + } + } + #[test] fn test_new_sign_fails() { let message = "Hello World".as_bytes();