检查函数的再封装与功能化
知识总结
- 参数的种类大致分为三类:fixed(padding genkey mode purpose digest) mutable material
- genKey:{RSA AES ECC X25519 ED25519}
总体概述
1. 该部分大多是各种检查函数的再封装,独立的完成一种模式或者一种类型参数的检查的功能函数
2.通过全局变量的设置,通过不同的全局变量可以在paramSet中获取不同类型的参数,减少参数的传递,提高效率
代码解读
1.全局变量的初始化
包括:
g_genKenAlg
g_importKeyAlg
g_cipherAlg
g_signAlg
g_agreeAlg
g_agreeAlgLocal
g_deriveAlg
g_deriveAlgLocal
g_digest
g_macDigest
g_aesKeySizeLocal
g_cipherAlgLocal
2.重要函数CheckAndGetAlgorithm
根据所给的HKS_TAG_ALGORITHM从paramSet中得到相应的算法参数,调用函数进行参数一致性检验,最后将检查后的参数赋给*alg
3.获取并检查摘要的函数
步骤与获取算法参数一致
根据标志从paramSet中获取对应的参数,然后调用HksCheckValue进行参数期望检查,最后将检查无误的数据块用对应指针所指
4.封装对整个genKey参数的检查函数
CheckGenKeyMacDeriveParams
流程:获取输入函数—>检查参数的五个主要部分是否符合预期—>返回检查genKey可选参数的结果
5. CoreCheckGenKeyParams
函数功能:根据全局存储的g_genkeyAlg获取参数并进行多方面检查
流程:调用CheckAndGetAlgorithm获取参数所在地址---->根据tag_purpose获取目的参数---->当目的参数中包含MAC或DERIVE则调用CheckGenKeyMacDeriveParams对该部分参数进行检查---->调用CheckGenKeyParamsByAlg做一般性的参数检查
6.检查keysize的函数
CheckImportKeySize
7.CheckCipherParamsByAlg
加密参数的检查函数(封装)
一共检查了三个部分的参数:fixed五个部分padding digest purpose mode genkey的检查---->可选参数的检验---->加密材料相关参数的检查