Struct hc128::HC128
[−]
[src]
pub struct HC128 { /* fields omitted */ }
use hc128::HC128; let mut output = [0; 64]; let mut key = [0; 16]; key[0] = 0x80; HC128::new(&key, &[0; 16]).process(&[0; 64], &mut output); assert_eq!( output[..32], [ 0x37, 0x86, 0x02, 0xB9, 0x8F, 0x32, 0xA7, 0x48, 0x47, 0x51, 0x56, 0x54, 0xAE, 0x0D, 0xE7, 0xED, 0x8F, 0x72, 0xBC, 0x34, 0x77, 0x6A, 0x06, 0x51, 0x03, 0xE5, 0x15, 0x95, 0x52, 0x1F, 0xFE, 0x47 ] ); assert_eq!( output[32..], [ 0xF9, 0xAF, 0x0A, 0x4C, 0xB4, 0x79, 0x99, 0xCF, 0xA2, 0x6D, 0x33, 0xBF, 0x80, 0x95, 0x45, 0x98, 0x9D, 0x53, 0xDE, 0xBF, 0xE7, 0xA9, 0xEF, 0xD8, 0xB9, 0x10, 0x9C, 0xA6, 0xEF, 0xAD, 0xDF, 0x83 ] ); HC128::new( &[0x0F, 0x62, 0xB5, 0x08, 0x5B, 0xAE, 0x01, 0x54, 0xA7, 0xFA, 0x4D, 0xA0, 0xF3, 0x46, 0x99, 0xEC], &[0x28, 0x8F, 0xF6, 0x5D, 0xC4, 0x2B, 0x92, 0xF9, 0x60, 0xC7, 0x2E, 0x95, 0xFC, 0x63, 0xCA, 0x31] ).process(&[0; 32], &mut output); assert_eq!( output[..32], [ 0x1C, 0xD8, 0xAE, 0xDD, 0xFE, 0x52, 0xE2, 0x17, 0xE8, 0x35, 0xD0, 0xB7, 0xE8, 0x4E, 0x29, 0x22, 0xD0, 0x4B, 0x1A, 0xDB, 0xCA, 0x53, 0xC4, 0x52, 0x2B, 0x1A, 0xA6, 0x04, 0xC4, 0x28, 0x56, 0xA9 ] ); let output = HC128::new( &[0x0F, 0x62, 0xB5, 0x08, 0x5B, 0xAE, 0x01, 0x54, 0xA7, 0xFA, 0x4D, 0xA0, 0xF3, 0x46, 0x99, 0xEC], &[0x28, 0x8F, 0xF6, 0x5D, 0xC4, 0x2B, 0x92, 0xF9, 0x60, 0xC7, 0x2E, 0x95, 0xFC, 0x63, 0xCA, 0x31] ).skip(65472).take(32).collect::<Vec<u8>>(); assert_eq!( output, [ 0xBB, 0x59, 0x9F, 0x93, 0xF4, 0xF2, 0x44, 0xD7, 0x17, 0xCA, 0x98, 0x18, 0x21, 0x2B, 0x06, 0xD5, 0x6D, 0x99, 0xAD, 0x4C, 0xA1, 0xF7, 0x87, 0x25, 0xDB, 0xA8, 0x9E, 0xA1, 0xD1, 0xF0, 0x5B, 0x27 ] ); let mut output = [0; 32]; let mut cipher = HC128::new( &[0x0F, 0x62, 0xB5, 0x08, 0x5B, 0xAE, 0x01, 0x54, 0xA7, 0xFA, 0x4D, 0xA0, 0xF3, 0x46, 0x99, 0xEC], &[0x28, 0x8F, 0xF6, 0x5D, 0xC4, 0x2B, 0x92, 0xF9, 0x60, 0xC7, 0x2E, 0x95, 0xFC, 0x63, 0xCA, 0x31] ); cipher.process(&[0; 11], &mut output[..11]); cipher.process(&[0; 21], &mut output[11..]); assert_eq!( output, [ 0x1C, 0xD8, 0xAE, 0xDD, 0xFE, 0x52, 0xE2, 0x17, 0xE8, 0x35, 0xD0, 0xB7, 0xE8, 0x4E, 0x29, 0x22, 0xD0, 0x4B, 0x1A, 0xDB, 0xCA, 0x53, 0xC4, 0x52, 0x2B, 0x1A, 0xA6, 0x04, 0xC4, 0x28, 0x56, 0xA9 ] );
Methods
impl HC128
[src]
Trait Implementations
impl Clone for HC128
[src]
fn clone(&self) -> HC128
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more
impl Iterator for HC128
[src]
type Item = u8
The type of the elements being iterated over.
fn next(&mut self) -> Option<Self::Item>
Advances the iterator and returns the next value. Read more
fn size_hint(&self) -> (usize, Option<usize>)
1.0.0
Returns the bounds on the remaining length of the iterator. Read more
fn count(self) -> usize
1.0.0
Consumes the iterator, counting the number of iterations and returning it. Read more
fn last(self) -> Option<Self::Item>
1.0.0
Consumes the iterator, returning the last element. Read more
fn nth(&mut self, n: usize) -> Option<Self::Item>
1.0.0
Returns the n
th element of the iterator. Read more
fn step_by(self, step: usize) -> StepBy<Self>
🔬 This is a nightly-only experimental API. (iterator_step_by
)
unstable replacement of Range::step_by
Creates an iterator starting at the same point, but stepping by the given amount at each iteration. Read more
fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter> where
U: IntoIterator<Item = Self::Item>,
1.0.0
U: IntoIterator<Item = Self::Item>,
Takes two iterators and creates a new iterator over both in sequence. Read more
fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter> where
U: IntoIterator,
1.0.0
U: IntoIterator,
'Zips up' two iterators into a single iterator of pairs. Read more
fn map<B, F>(self, f: F) -> Map<Self, F> where
F: FnMut(Self::Item) -> B,
1.0.0
F: FnMut(Self::Item) -> B,
Takes a closure and creates an iterator which calls that closure on each element. Read more
fn filter<P>(self, predicate: P) -> Filter<Self, P> where
P: FnMut(&Self::Item) -> bool,
1.0.0
P: FnMut(&Self::Item) -> bool,
Creates an iterator which uses a closure to determine if an element should be yielded. Read more
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> where
F: FnMut(Self::Item) -> Option<B>,
1.0.0
F: FnMut(Self::Item) -> Option<B>,
Creates an iterator that both filters and maps. Read more
fn enumerate(self) -> Enumerate<Self>
1.0.0
Creates an iterator which gives the current iteration count as well as the next value. Read more
fn peekable(self) -> Peekable<Self>
1.0.0
Creates an iterator which can use peek
to look at the next element of the iterator without consuming it. Read more
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where
P: FnMut(&Self::Item) -> bool,
1.0.0
P: FnMut(&Self::Item) -> bool,
Creates an iterator that [skip
]s elements based on a predicate. Read more
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where
P: FnMut(&Self::Item) -> bool,
1.0.0
P: FnMut(&Self::Item) -> bool,
Creates an iterator that yields elements based on a predicate. Read more
fn skip(self, n: usize) -> Skip<Self>
1.0.0
Creates an iterator that skips the first n
elements. Read more
fn take(self, n: usize) -> Take<Self>
1.0.0
Creates an iterator that yields its first n
elements. Read more
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> where
F: FnMut(&mut St, Self::Item) -> Option<B>,
1.0.0
F: FnMut(&mut St, Self::Item) -> Option<B>,
An iterator adaptor similar to [fold
] that holds internal state and produces a new iterator. Read more
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> where
F: FnMut(Self::Item) -> U,
U: IntoIterator,
1.0.0
F: FnMut(Self::Item) -> U,
U: IntoIterator,
Creates an iterator that works like map, but flattens nested structure. Read more
fn fuse(self) -> Fuse<Self>
1.0.0
Creates an iterator which ends after the first [None
]. Read more
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnMut(&Self::Item) -> (),
1.0.0
F: FnMut(&Self::Item) -> (),
Do something with each element of an iterator, passing the value on. Read more
fn by_ref(&mut self) -> &mut Self
1.0.0
Borrows an iterator, rather than consuming it. Read more
fn collect<B>(self) -> B where
B: FromIterator<Self::Item>,
1.0.0
B: FromIterator<Self::Item>,
Transforms an iterator into a collection. Read more
fn partition<B, F>(self, f: F) -> (B, B) where
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool,
1.0.0
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool,
Consumes an iterator, creating two collections from it. Read more
fn fold<B, F>(self, init: B, f: F) -> B where
F: FnMut(B, Self::Item) -> B,
1.0.0
F: FnMut(B, Self::Item) -> B,
An iterator adaptor that applies a function, producing a single, final value. Read more
fn all<F>(&mut self, f: F) -> bool where
F: FnMut(Self::Item) -> bool,
1.0.0
F: FnMut(Self::Item) -> bool,
Tests if every element of the iterator matches a predicate. Read more
fn any<F>(&mut self, f: F) -> bool where
F: FnMut(Self::Item) -> bool,
1.0.0
F: FnMut(Self::Item) -> bool,
Tests if any element of the iterator matches a predicate. Read more
fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where
P: FnMut(&Self::Item) -> bool,
1.0.0
P: FnMut(&Self::Item) -> bool,
Searches for an element of an iterator that satisfies a predicate. Read more
fn position<P>(&mut self, predicate: P) -> Option<usize> where
P: FnMut(Self::Item) -> bool,
1.0.0
P: FnMut(Self::Item) -> bool,
Searches for an element in an iterator, returning its index. Read more
fn rposition<P>(&mut self, predicate: P) -> Option<usize> where
P: FnMut(Self::Item) -> bool,
Self: ExactSizeIterator + DoubleEndedIterator,
1.0.0
P: FnMut(Self::Item) -> bool,
Self: ExactSizeIterator + DoubleEndedIterator,
Searches for an element in an iterator from the right, returning its index. Read more
fn max(self) -> Option<Self::Item> where
Self::Item: Ord,
1.0.0
Self::Item: Ord,
Returns the maximum element of an iterator. Read more
fn min(self) -> Option<Self::Item> where
Self::Item: Ord,
1.0.0
Self::Item: Ord,
Returns the minimum element of an iterator. Read more
fn max_by_key<B, F>(self, f: F) -> Option<Self::Item> where
B: Ord,
F: FnMut(&Self::Item) -> B,
1.6.0
B: Ord,
F: FnMut(&Self::Item) -> B,
Returns the element that gives the maximum value from the specified function. Read more
fn max_by<F>(self, compare: F) -> Option<Self::Item> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.15.0
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
Returns the element that gives the maximum value with respect to the specified comparison function. Read more
fn min_by_key<B, F>(self, f: F) -> Option<Self::Item> where
B: Ord,
F: FnMut(&Self::Item) -> B,
1.6.0
B: Ord,
F: FnMut(&Self::Item) -> B,
Returns the element that gives the minimum value from the specified function. Read more
fn min_by<F>(self, compare: F) -> Option<Self::Item> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.15.0
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
Returns the element that gives the minimum value with respect to the specified comparison function. Read more
fn rev(self) -> Rev<Self> where
Self: DoubleEndedIterator,
1.0.0
Self: DoubleEndedIterator,
Reverses an iterator's direction. Read more
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
Self: Iterator<Item = (A, B)>,
1.0.0
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
Self: Iterator<Item = (A, B)>,
Converts an iterator of pairs into a pair of containers. Read more
fn cloned<'a, T>(self) -> Cloned<Self> where
Self: Iterator<Item = &'a T>,
T: 'a + Clone,
1.0.0
Self: Iterator<Item = &'a T>,
T: 'a + Clone,
Creates an iterator which [clone
]s all of its elements. Read more
fn cycle(self) -> Cycle<Self> where
Self: Clone,
1.0.0
Self: Clone,
Repeats an iterator endlessly. Read more
fn sum<S>(self) -> S where
S: Sum<Self::Item>,
1.11.0
S: Sum<Self::Item>,
Sums the elements of an iterator. Read more
fn product<P>(self) -> P where
P: Product<Self::Item>,
1.11.0
P: Product<Self::Item>,
Iterates over the entire iterator, multiplying all the elements Read more
fn cmp<I>(self, other: I) -> Ordering where
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
1.5.0
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
Lexicographically compares the elements of this Iterator
with those of another. Read more
fn partial_cmp<I>(self, other: I) -> Option<Ordering> where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Lexicographically compares the elements of this Iterator
with those of another. Read more
fn eq<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
Determines if the elements of this Iterator
are equal to those of another. Read more
fn ne<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
Determines if the elements of this Iterator
are unequal to those of another. Read more
fn lt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Determines if the elements of this Iterator
are lexicographically less than those of another. Read more
fn le<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Determines if the elements of this Iterator
are lexicographically less or equal to those of another. Read more
fn gt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Determines if the elements of this Iterator
are lexicographically greater than those of another. Read more
fn ge<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Determines if the elements of this Iterator
are lexicographically greater than or equal to those of another. Read more