12个版本
0.0.12 | 2023年11月14日 |
---|---|
0.0.10 | 2022年7月19日 |
0.0.9 | 2021年11月3日 |
0.0.7 | 2021年7月30日 |
0.0.1 | 2020年11月17日 |
在密码学类别中排名#676
每月下载量266次
85KB
785 代码行
katwalk
用于遍历CAVP中NIST已知答案测试向量的实用程序。它允许通过调用代码为提供的每个测试向量绑定一个动作。
支持的方案
算法 | NIST规范名称 |
---|---|
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 (不带预测抵抗) |
NIST PQC | 所有密钥封装机制(KEM)和签名方案 |
示例
以下是一个用于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);
使用情况
它被PQC库(此处)用于功能测试。
状态
算法是按需添加的。不要评判实现,它需要重大重写。