代码讲解 HWTEST_F(CryptoAesCipherTest, CryptoAesCipherTest126, TestSize.Level0) { int ret = 0; uint8_t cipherText[CIPHER_TEXT_LEN] = { 0 }; int cipherTextLen = CIPHER_TEXT_LEN; HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; ret = GenerateSymKey("AES128", &key); if (ret != 0) { LOGE("GenerateSymKey failed!"); goto CLEAR_UP; } // CBC, CTR, OFB, CFB enc/dec success, // GCM, CCM enc/dec failed with params set to nullptr. ret = HcfCipherCreate("AES128|GCM|PKCS5", &cipher); if (ret != 0) { LOGE("HcfCipherCreate failed!"); goto CLEAR_UP; } ret = AesEncrypt(cipher, key, nullptr, cipherText, &cipherTextLen); if (ret != 0) { LOGE("AesEncrypt failed! %d", ret); goto CLEAR_UP; } ret = AesDecrypt(cipher, key, nullptr, cipherText, cipherTextLen); if (ret != 0) { LOGE("AesDecrypt failed! %d", ret); } CLEAR_UP: HcfObjDestroy(key); HcfObjDestroy(cipher); EXPECT_NE(ret, 0); }
时间: 2024-04-04 07:33:00 浏览: 154
HW_Dollar2_2.2.0.2104
这是一个 C++ 的单元测试代码,使用 Google Test 框架编写。这个测试用例名字是 `CryptoAesCipherTest126`,属于 `CryptoAesCipherTest` 测试套件,并且使用 `TestSize.Level0` 级别。这个测试用例测试了 AES 加密算法的 GCM 模式,使用 ECB 加密模式进行加密和解密,并检查解密结果是否与原始数据一致。
在测试用例中,首先声明了一些变量,如 `int ret` 用于存储返回值,`uint8_t cipherText[CIPHER_TEXT_LEN]` 用于存储加密后的密文,`int cipherTextLen` 用于存储密文的长度,`HcfCipher *cipher` 和 `HcfSymKey *key` 分别用于存储加密算法和密钥的对象指针。
接下来使用 `GenerateSymKey` 函数生成 AES 128 位的密钥,如果生成失败,直接跳转到 `CLEAR_UP` 标签,释放内存并返回。然后使用 `HcfCipherCreate` 函数创建 AES 128 位的 GCM 模式加密算法对象,如果创建失败,也跳转到 `CLEAR_UP` 标签,释放内存并返回。
接着使用 `AesEncrypt` 函数对数据进行加密,如果加密失败,也跳转到 `CLEAR_UP` 标签,释放内存并返回。然后使用 `AesDecrypt` 函数对密文进行解密,如果解密失败,打印错误信息。最后跳转到 `CLEAR_UP` 标签,释放内存并使用 Google Test 断言函数 `EXPECT_NE` 检查返回值是否不等于 0,即检查加密和解密是否都成功。
总体来说,这个测试用例主要测试了 AES 加密算法的 GCM 模式,使用了单元测试框架和断言函数来保证代码的正确性。
阅读全文