Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

RustCrypto: cSHAKE

crate Docs Apache2/MIT licensed Rust Version Project Chat Build Status

Implementation of the cSHAKE family of extendable-output functions (XOFs) defined in the NIST SHA-3 Derived Functions.

Examples

cSHAKE functions have an extendable output, so finalization methods return XOF reader from which results of arbitrary length can be read.

use cshake::CShake128;
use cshake::digest::{CustomizedInit, Update, ExtendableOutput, XofReader};
use hex_literal::hex;

let mut hasher = CShake128::default();
hasher.update(b"abc");
let mut reader = hasher.finalize_xof();
let mut buf = [0u8; 10];
reader.read(&mut buf);
assert_eq!(buf, hex!("5881092dd818bf5cf8a3"));
reader.read(&mut buf);
assert_eq!(buf, hex!("ddb793fbcba74097d5c5"));

// With customization string
let mut hasher = CShake128::new_customized(b"my customization string");
hasher.update(b"abc");
let mut reader = hasher.finalize_xof();
let mut buf = [0u8; 10];
reader.read(&mut buf);
assert_eq!(buf, hex!("a296533c8d5753bf3421"));
reader.read(&mut buf);
assert_eq!(buf, hex!("124e8eb79262233170ce"));

See the digest crate docs for additional examples.

License

The crate is licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.