static void SetKeyLength(HcfAlgParaValue value, void *attr) { SymKeyAttr *keyAttr = (SymKeyAttr *)attr; switch (value) { case HCF_ALG_AES_128: keyAttr->algo = HCF_ALG_AES; keyAttr->keySize = AES_KEY_SIZE_128; break; case HCF_ALG_AES_192: keyAttr->algo = HCF_ALG_AES; keyAttr->keySize = AES_KEY_SIZE_192; break; case HCF_ALG_AES_256: keyAttr->algo = HCF_ALG_AES; keyAttr->keySize = AES_KEY_SIZE_256; break; case HCF_ALG_SM4_128: keyAttr->algo = HCF_ALG_SM4; keyAttr->keySize = SM4_KEY_SIZE_128; break; case HCF_ALG_3DES_192: keyAttr->algo = HCF_ALG_DES; keyAttr->keySize = DES_KEY_SIZE_192; break; default: break; } }代码解析
时间: 2024-02-14 17:19:35 浏览: 26
这段代码定义了一个名为 SetKeyLength 的函数,它的作用是根据给定的 HcfAlgParaValue 值设置 SymKeyAttr 结构体中的算法标识符和密钥长度。
该函数接收两个参数,第一个参数是 HcfAlgParaValue 枚举类型的值,用于指定要设置的密钥长度。第二个参数是一个指向 SymKeyAttr 结构体的指针,用于指定要设置的密钥属性。
该函数使用 switch 语句根据给定的密钥长度值,设置 SymKeyAttr 结构体中的算法标识符和密钥长度。具体地,当 value 的值为 HCF_ALG_AES_128 时,将算法标识符设置为 HCF_ALG_AES,将密钥长度设置为 AES_KEY_SIZE_128;当 value 的值为 HCF_ALG_AES_192 时,将算法标识符设置为 HCF_ALG_AES,将密钥长度设置为 AES_KEY_SIZE_192;当 value 的值为 HCF_ALG_AES_256 时,将算法标识符设置为 HCF_ALG_AES,将密钥长度设置为 AES_KEY_SIZE_256;当 value 的值为 HCF_ALG_SM4_128 时,将算法标识符设置为 HCF_ALG_SM4,将密钥长度设置为 SM4_KEY_SIZE_128;当 value 的值为 HCF_ALG_3DES_192 时,将算法标识符设置为 HCF_ALG_DES,将密钥长度设置为 DES_KEY_SIZE_192。如果 value 的值不在上述情况中,该函数不做任何操作。
需要注意的是,该函数中的算法标识符和密钥长度的设置是通过修改 SymKeyAttr 结构体中的成员变量实现的。