2 releases
new 0.1.1 | Apr 21, 2025 |
---|---|
0.1.0 | Jul 10, 2023 |
#2 in #xoodoo
82 downloads per month
Used in deck-farfalle
49KB
590 lines
permutation-xoodoo

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]);