#testing #vector #nist #algorithm #kat #iterate #action

katwalk

用于遍历NIST KAT向量的实用程序。它允许通过调用代码为提供的每个测试向量绑定一个动作。因此,可以运行KAT测试。这是正在进行中的版本!!!

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

Download history 92/week @ 2024-04-21 9/week @ 2024-04-28 61/week @ 2024-05-05 92/week @ 2024-05-12 102/week @ 2024-05-19 40/week @ 2024-05-26 65/week @ 2024-06-02 118/week @ 2024-06-09 106/week @ 2024-06-16 106/week @ 2024-06-23 44/week @ 2024-06-30 61/week @ 2024-07-07 12/week @ 2024-07-14 84/week @ 2024-07-21 52/week @ 2024-07-28 111/week @ 2024-08-04

每月下载量266

MIT许可协议

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库(此处)用于功能测试。

状态

算法是按需添加的。不要评判实现,它需要重大重写。

依赖项