summaryrefslogtreecommitdiffstats
path: root/src/aes.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2015-03-23 00:13:17 -0400
committerJesse Luehrs <doy@tozt.net>2015-03-23 00:13:17 -0400
commitb4e18078b1c742b7d973ac61422407d9871725fd (patch)
tree64a68826acc83a0b16d28ab9278fd29160dc0715 /src/aes.rs
parentafc451615ea4c1713b4b101294dbd71ab1987193 (diff)
downloadmatasano-b4e18078b1c742b7d973ac61422407d9871725fd.tar.gz
matasano-b4e18078b1c742b7d973ac61422407d9871725fd.zip
factor this out
Diffstat (limited to 'src/aes.rs')
-rw-r--r--src/aes.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/aes.rs b/src/aes.rs
index b3aa71c..5caaca1 100644
--- a/src/aes.rs
+++ b/src/aes.rs
@@ -249,14 +249,9 @@ fn find_block_size<F> (f: &F) -> usize where F: Fn(&[u8]) -> Vec<u8> {
.collect();
let next = f(&prefix[..]);
- let shared_prefix_len = prev
- .iter()
- .enumerate()
- .take_while(|&(i, &c)| { c == next[i] })
- .count();
-
- if shared_prefix_len > 0 {
- return shared_prefix_len;
+ let prefix_len = shared_prefix_len(prev.iter(), next.iter());
+ if prefix_len > 0 {
+ return prefix_len;
}
prev = next;
@@ -264,6 +259,13 @@ fn find_block_size<F> (f: &F) -> usize where F: Fn(&[u8]) -> Vec<u8> {
}
}
+fn shared_prefix_len<I> (i1: I, i2: I) -> usize where I: Iterator, <I as Iterator>::Item: PartialEq {
+ return i1
+ .zip(i2)
+ .take_while(|&(ref c1, ref c2)| { c1 == c2 })
+ .count();
+}
+
#[test]
fn test_encrypt_decrypt () {
let plaintext = b"Summertime and the wind is blowing outside in lower \