13 releases
0.0.13 | Sep 23, 2024 |
---|---|
0.0.12 | Nov 14, 2023 |
0.0.11 | Oct 14, 2023 |
0.0.10 | Jul 19, 2022 |
0.0.1 | Nov 17, 2020 |
#552 in Cryptography
244 downloads per month
96KB
834 lines
katwalk
Utility to iterate over NIST Known Answer Tests vectors from CAVP. It allows to bind an action for each test vector supplied by calling code.
Supported schemes:
Algorithm | NIST Specification name |
---|---|
SHA2 | FIPS-180-4 |
SHA3 | FIPS-202 |
SHAKE | FIPS-202 |
HMAC | FIPS-198 |
Diffie-Hellman | SP 800-56A |
KDF | SP 800-108 |
DRBG | SP 800-90A (without Prediction Resistance) |
NIST PQC | All KEM & Signature schemes |
Example
Here below an example of usage for one vector for SHA3 KAT (FIPS 202).
// Vector copy pasted from NIST specs
let ex = "
Len = 0
Msg = 00
MD = 6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7";
// Some variables
let mut count = 0;
// Create an iterator for HASH algorithm
let r = KatReader::new(
std::io::BufReader::new(Cursor::new(ex)),
AlgType::AlgHash, 1);
// Iterate over all KATS. The ``el`` will contain fields
// parsed from KAT files. Those fields are used as input
// to cryptographic implementation and expected output.
for el in r {
assert_eq!(el.hash.md.len(), 28);
assert_eq!(el.hash.len, 0);
assert_eq!(el.hash.msg, [0x00]);
assert_eq!(el.hash.md[0..5], [0x6B, 0x4E, 0x03, 0x42, 0x36]);
count+=1;
}
assert_eq!(count, 1);
Used by
It is used by PQC library (here) for functional testing.
Status
Algorithms are added on "as needed" bases. Don't judge implementation, it needs major rewrite.