Crates.io | marsupial-sys |
lib.rs | marsupial-sys |
version | 0.1.0 |
source | src |
created_at | 2024-06-21 23:08:22.858619 |
updated_at | 2024-07-07 21:37:15.367895 |
description | ffi crate for the xkcp/k12 implementation of the kangarootwelve hash function |
homepage | |
repository | https://github.com/superwhiskers/marsupial |
max_upload_size | |
id | 1280019 |
size | 340,707 |
a rust wrapper for xkcp/k12, derived from oconnor663/kangarootwelve_xkcp.rs
in order to use the crate, you need:
then, just add a dependency upon the marsupial
crate in Cargo.toml
, and
then you can use it like this:
use marsupial::{KT128, Hasher};
// hash an input all at once
let hash1 = marsupial::hash::<KT128>(b"foobarbaz");
// hash an input incrementally
let mut hasher = Hasher::<KT128>::new();
hasher.update(b"foo");
hasher.update(b"bar");
hasher.update(b"baz");
let hash2 = hasher.finalize();
assert_eq!(hash1, hash2);
// extended output. `OutputReader` also implements `Read`
let mut hasher = Hasher::<KT128>::new();
hasher.update(b"foobarbaz");
let mut output_reader = hasher.finalize_xof();
let mut output = [0; 1000];
output_reader.squeeze(&mut output);
assert_eq!(&output[..32], hash1.as_bytes());
// emit the hash as hexadecimal (does not work for now)
//println!("{}", hash1.to_hex());
benchmarks done on an intel i5-1135G7 using rust 1.79.0 on debian linux trixie/sid
as is with kangarootwelve_xkcp.rs
, all of the rust wrapping code is dedicated
to the public domain via
cc0. the vendored
xkcp code is covered by a
mixture of licenses