#permutation #xoodoo #state #framework #xoodoo-p

no-std permutation-xoodoo

Xoodoo permutation in the crypto-permutation framework

2 releases

new 0.1.1 Apr 21, 2025
0.1.0 Jul 10, 2023

#2 in #xoodoo

Download history 1/week @ 2025-03-03

82 downloads per month
Used in deck-farfalle

MIT/Apache

49KB
590 lines

permutation-xoodoo License: MIT OR Apache-2.0 permutation-xoodoo on crates.io permutation-xoodoo on docs.rs Source Code Repository Rust Version: 1.65.0

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

Dependencies