Skip to content

Commit 0461fe7

Browse files
committed
Add tests
1 parent 05ce3be commit 0461fe7

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

hash2curve/src/hash2field/expand_msg/xmd.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,31 @@ mod test {
171171
use hex_literal::hex;
172172
use sha2::Sha256;
173173

174+
#[test]
175+
fn edge_cases() {
176+
fn generate() -> ExpanderXmd<'static, Sha256> {
177+
<ExpandMsgXmd<Sha256> as ExpandMsg<U4>>::expand_message(
178+
&[b"test message"],
179+
&[b"test DST"],
180+
NonZero::new(64).unwrap(),
181+
)
182+
.unwrap()
183+
}
184+
185+
assert_eq!(generate().fill_bytes(&mut [0; 0]), Ok(0));
186+
assert_eq!(generate().fill_bytes(&mut [0; 1]), Ok(1));
187+
assert_eq!(generate().fill_bytes(&mut [0; 64]), Ok(64));
188+
assert_eq!(generate().fill_bytes(&mut [0; 65]), Ok(64));
189+
190+
let mut expander = generate();
191+
assert_eq!(expander.fill_bytes(&mut [0; 0]), Ok(0));
192+
assert_eq!(expander.fill_bytes(&mut [0; 32]), Ok(32));
193+
assert_eq!(expander.fill_bytes(&mut [0; 0]), Ok(0));
194+
assert_eq!(expander.fill_bytes(&mut [0; 31]), Ok(31));
195+
assert_eq!(expander.fill_bytes(&mut [0; 2]), Ok(1));
196+
assert_eq!(expander.fill_bytes(&mut [0; 1]), Err(Error));
197+
}
198+
174199
fn assert_message<HashT>(
175200
msg: &[u8],
176201
domain: &Domain<'_, HashT::OutputSize>,

hash2curve/src/hash2field/expand_msg/xof.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,29 @@ mod test {
103103
use hex_literal::hex;
104104
use sha3::Shake128;
105105

106+
#[test]
107+
fn edge_cases() {
108+
fn generate() -> ExpandMsgXof<Shake128> {
109+
<ExpandMsgXof<Shake128> as ExpandMsg<U16>>::expand_message(
110+
&[b"test message"],
111+
&[b"test DST"],
112+
NonZero::new(64).unwrap(),
113+
)
114+
.unwrap()
115+
}
116+
117+
assert_eq!(generate().fill_bytes(&mut [0; 0]), Ok(0));
118+
assert_eq!(generate().fill_bytes(&mut [0; 1]), Ok(1));
119+
assert_eq!(generate().fill_bytes(&mut [0; 64]), Ok(64));
120+
assert_eq!(generate().fill_bytes(&mut [0; 65]), Ok(64));
121+
122+
let mut expander = generate();
123+
assert_eq!(expander.fill_bytes(&mut [0; 0]), Ok(0));
124+
assert_eq!(expander.fill_bytes(&mut [0; 1]), Ok(1));
125+
assert_eq!(expander.fill_bytes(&mut [0; 64]), Ok(63));
126+
assert_eq!(expander.fill_bytes(&mut [0; 1]), Err(Error));
127+
}
128+
106129
fn assert_message(msg: &[u8], domain: &Domain<'_, U32>, len_in_bytes: u16, bytes: &[u8]) {
107130
let msg_len = msg.len();
108131
assert_eq!(msg, &bytes[..msg_len]);

0 commit comments

Comments
 (0)