Crate permutation_xoodoo

Source
Expand description

Xoodoo permutation in the crypto-permutation framework.

Xoodoo: Permutation

§Example

Note: The following example makes use of very low-level cryptographic APIs, which you shouldn’t use unless you know very well what you are doing. The intended use of this crate is just to pass the XoodooP permutation as a parameter to some generic more high-level construction like Farfalle as implemented in deck-farfalle.

Suppose we want to apply the full 12-round Xoodoo permutation to the message "hello world" (and then padded with null-bytes to make it 42 bytes in length), and then get the first 3 bytes of output.

use permutation_xoodoo::{XoodooState, XoodooP};
use crypto_permutation::{Reader, Writer, Permutation, PermutationState};

// create a state and a permutation to act on it
let mut state = XoodooState::default();
let xoodoo = XoodooP::<12>::default();

// write input to the state
state.copy_writer().write_bytes(b"hello world");

// apply the xoodoo permutation to the state
xoodoo.apply(&mut state);

// and finally you can read the first 3 bytes of output
let mut out = [0u8; 3];
state.reader().write_to_slice(&mut out);
assert_eq!(out, [241, 234, 156]);

Structs§

XoodooP
Xoodoo permutation with ROUNDS rounds. ROUNDS must be at most 12.
XoodooState
State for the Xoodoo permutation. 48 bytes, internally represented by 12 u32s in little endian encoding.