| Crates.io | permutation-xoodoo |
| lib.rs | permutation-xoodoo |
| version | 0.1.1 |
| created_at | 2023-07-10 08:57:04.683506+00 |
| updated_at | 2025-04-21 13:08:09.921809+00 |
| description | Xoodoo permutation in the `crypto-permutation` framework |
| homepage | |
| repository | https://github.com/niluxv/permutation_based_crypto |
| max_upload_size | |
| id | 912740 |
| size | 13,313 |
Xoodoo permutation in the crypto-permutation framework.
Xoodoo: Permutation
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]);