已关闭
[Bug]: CRYPT_EAL_KdfIsValidAlgId 传 NULL method 导致恒返回 false (eal_kdf.c:52-54) #199
zhangqiang创建于  7月1日关闭于  7月13日
zhangqiang
zhangqiang
7月1日 创建

Checklist

Bug Description

触发输入:CRYPT_EAL_KdfIsValidAlgId(CRYPT_KDF_HKDF)
预期(源码依据):HKDF 是有效算法,应返回 true(对照 CRYPT_EAL_CipherIsValidAlgId 的实现:eal_cipher.c:378-382 传 &method 非 NULL)
实际:返回 false。原因:eal_kdf.c:54 return EAL_KdfFindMethod(id, NULL) == CRYPT_SUCCESS; 传 NULL 给 EAL_KdfFindMethod,而 eal_kdf_method.c:79-80 if (method == NULL) return CRYPT_NULL_INPUT; 导致恒返回非 SUCCESS
影响:功能缺陷。CRYPT_EAL_KdfIsValidAlgId 对任何算法 ID 都返回 false,无法正确判断 KDF 算法有效性。调用方若依赖此接口做前置校验,会错误拒绝所有 KDF 算法。
测试用例:
`
void SDV_CRYPTO_EAL_KDF_API_ERR_TC001(void)
{
TestMemInit();
uint8_t key[16] = {0};

// [BUG] CRYPT_EAL_KdfIsValidAlgId passes NULL to EAL_KdfFindMethod, always returns false.
ASSERT_TRUE(CRYPT_EAL_KdfIsValidAlgId(CRYPT_KDF_HKDF) == false);
ASSERT_TRUE(CRYPT_EAL_KdfIsValidAlgId(CRYPT_KDF_MAX) == false);

EXIT:
return;
}
`

Environment Information

software

Version Information

main分支

Additional Information

建议:参考 eal_cipher.c:378-382 的写法,改为 `EAL_KdfMethod method = {0}; return EAL_KdfFindMethod(id, &method) == CRYPT_SUCCESS;

likedislike
zhangqiangzhangqiang
7月1日 修改了issue 的描述
zhangqiangzhangqiang
7月1日 修改了issue 的描述
zhangqiangzhangqiang
7月1日 修改了issue 的描述
Ddumb成员
7月13日 关联了pull request:fix(kdf): pass non-NULL out-param in CRYPT_EAL_KdfIsValidAlgId
Ddumb成员
7月13日 关闭了 issue
Ddumb成员
2 天前 关联了看板:openHiTLS Project
Ddumb成员
2 天前 移除了看板:openHiTLS Project