diff --git a/test/fuzztest/crypto_operation/hcfciphercreate_fuzzer/hcfciphercreate_fuzzer.cpp b/test/fuzztest/crypto_operation/hcfciphercreate_fuzzer/hcfciphercreate_fuzzer.cpp index 7b37ad47e28e351e0a4fe7a812fa6e856c26f5dc..27566bf5633c1d0c3c9f463f639efabaf1cc1dc0 100755 --- a/test/fuzztest/crypto_operation/hcfciphercreate_fuzzer/hcfciphercreate_fuzzer.cpp +++ b/test/fuzztest/crypto_operation/hcfciphercreate_fuzzer/hcfciphercreate_fuzzer.cpp @@ -28,6 +28,8 @@ #include "sym_key_generator.h" #include "detailed_gcm_params.h" +#define TEST_DATA_MAX_SIZE 1024 + namespace OHOS { static int32_t AesEncrypt(HcfCipher *cipher, HcfSymKey *key, HcfBlob *input, uint8_t *cipherText, int *cipherTextLen) @@ -191,8 +193,8 @@ namespace OHOS { { int ret = 0; HcfBlob input = {.data = const_cast(plan), .len = size}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; + uint8_t cipherText[TEST_DATA_MAX_SIZE] = {0}; + int cipherTextLen = TEST_DATA_MAX_SIZE; HcfSymKeyGenerator *generator = nullptr; HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; @@ -223,8 +225,8 @@ namespace OHOS { { int ret = 0; HcfBlob input = {.data = const_cast(plan), .len = size}; - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; + uint8_t cipherText[TEST_DATA_MAX_SIZE] = {0}; + int cipherTextLen = TEST_DATA_MAX_SIZE; HcfSymKeyGenerator *generator = nullptr; HcfCipher *cipher = nullptr; HcfSymKey *key = nullptr; @@ -258,8 +260,8 @@ namespace OHOS { uint8_t aad[8] = {0}; uint8_t tag[16] = {0}; uint8_t iv[12] = {0}; // openssl only support nonce 12 bytes, tag 16bytes - uint8_t cipherText[128] = {0}; - int cipherTextLen = 128; + uint8_t cipherText[TEST_DATA_MAX_SIZE] = {0}; + int cipherTextLen = TEST_DATA_MAX_SIZE; HcfGcmParamsSpec spec = {}; spec.aad.data = aad; @@ -332,7 +334,7 @@ namespace OHOS { return; } (void)cipher->init(cipher, DECRYPT_MODE, reinterpret_cast(keyPair->priKey), nullptr); - (void)cipher->doFinal(cipher, &encoutput, &decoutput); + (void)cipher->doFinal(cipher, &input, &decoutput); HcfBlobDataClearAndFree(&encoutput); HcfBlobDataClearAndFree(&decoutput); HcfObjDestroy(generator); diff --git a/test/fuzztest/crypto_operation/hcfkdfcreate_fuzzer/hcfkdfcreate_fuzzer.cpp b/test/fuzztest/crypto_operation/hcfkdfcreate_fuzzer/hcfkdfcreate_fuzzer.cpp index 9fb427dd888db59bb71c486f32c719a918360981..66a702ef566f2297ca62b06e98bcc3b67d34d1b8 100644 --- a/test/fuzztest/crypto_operation/hcfkdfcreate_fuzzer/hcfkdfcreate_fuzzer.cpp +++ b/test/fuzztest/crypto_operation/hcfkdfcreate_fuzzer/hcfkdfcreate_fuzzer.cpp @@ -26,6 +26,8 @@ #include "kdf.h" #include "result.h" +#define TEST_DATA_MAX_SIZE 1024 + namespace OHOS { static const char *g_testKdfAlg[] = { "HKDF|SHA1", "HKDF|SHA224", "HKDF|SHA256", "HKDF|SHA384", "HKDF|SHA512", "HKDF|SM3", "PBKDF2|SHA1", "PBKDF2|SHA224", "PBKDF2|SHA256", "PBKDF2|SHA384", @@ -33,8 +35,7 @@ namespace OHOS { static const char *g_keyData = "012345678901234567890123456789"; static const char *g_infoData = "infostring"; static const char *g_saltData = "saltstring"; - constexpr uint32_t OUT_PUT_MAX_LENGTH = 128; - constexpr uint32_t OUT_PUT_NORMAL_LENGTH = 32; + constexpr uint32_t OUT_PUT_MAX_LENGTH = TEST_DATA_MAX_SIZE; constexpr uint32_t SALT_NORMAL_LENGTH = 16; static void TestHkdfGenerateSecretSalt(const char *kdfAlg, const uint8_t* data, size_t size) @@ -45,7 +46,7 @@ namespace OHOS { return; } uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob output = {.data = out, .len = size}; HcfBlob salt = {.data = const_cast(data), .len = size}; HcfBlob key = {.data = reinterpret_cast(const_cast(g_keyData)), .len = strlen(g_keyData)}; @@ -72,7 +73,7 @@ namespace OHOS { return; } uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob output = {.data = out, .len = size}; HcfBlob key = {.data = const_cast(data), .len = size}; HcfBlob salt = {.data = reinterpret_cast(const_cast(g_saltData)), .len = strlen(g_saltData)}; @@ -99,7 +100,7 @@ namespace OHOS { return; } uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob output = {.data = out, .len = size}; HcfBlob info = {.data = const_cast(data), .len = size}; HcfBlob key = {.data = reinterpret_cast(const_cast(g_keyData)), .len = strlen(g_keyData)}; @@ -127,7 +128,7 @@ namespace OHOS { } uint8_t out[OUT_PUT_MAX_LENGTH] = {0}; uint8_t saltData[SALT_NORMAL_LENGTH] = {0}; - HcfBlob output = {.data = out, .len = OUT_PUT_NORMAL_LENGTH}; + HcfBlob output = {.data = out, .len = size}; HcfBlob salt = {.data = saltData, .len = SALT_NORMAL_LENGTH}; HcfBlob password = {.data = const_cast(data), .len = size}; HcfPBKDF2ParamsSpec params = { diff --git a/test/fuzztest/crypto_operation/hcfkeyagreementcreate_fuzzer/corpus/init b/test/fuzztest/crypto_operation/hcfkeyagreementcreate_fuzzer/corpus/init index 2be750d4aca6dd7dc15ec82d18aea969f3d8be30..5786153d0c5a77c73904c5b996a5ebc6b0636e09 100755 --- a/test/fuzztest/crypto_operation/hcfkeyagreementcreate_fuzzer/corpus/init +++ b/test/fuzztest/crypto_operation/hcfkeyagreementcreate_fuzzer/corpus/init @@ -11,4 +11,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -FUZZ \ No newline at end of file +ECC256 \ No newline at end of file diff --git a/test/fuzztest/crypto_operation/hcfmaccreate_fuzzer/hcfmaccreate_fuzzer.cpp b/test/fuzztest/crypto_operation/hcfmaccreate_fuzzer/hcfmaccreate_fuzzer.cpp index 35be61e778715dd85daf27707424c01a398e0839..df479460050ab479941f8c999f8231e7261b9d1f 100755 --- a/test/fuzztest/crypto_operation/hcfmaccreate_fuzzer/hcfmaccreate_fuzzer.cpp +++ b/test/fuzztest/crypto_operation/hcfmaccreate_fuzzer/hcfmaccreate_fuzzer.cpp @@ -25,8 +25,8 @@ #include "sym_key_generator.h" namespace OHOS { - static const int KEY_LEN = 16; + static const char *g_testMacAlg[] = { "MD5", "SHA1", "SHA224", "SHA256", "SHA384", "SHA512", "SM3"}; static void TestMacConvertSymKey(const uint8_t* data, size_t size) { HcfMac *macObj = nullptr; @@ -35,10 +35,10 @@ namespace OHOS { return; } HcfSymKeyGenerator *generator = nullptr; - (void)HcfSymKeyGeneratorCreate("AES128", &generator); + (void)HcfSymKeyGeneratorCreate("HMAC", &generator); HcfSymKey *key = nullptr; HcfBlob keyMaterialBlob = {.data = const_cast(data), .len = size}; - generator->convertSymKey(generator, &keyMaterialBlob, &key); + (void)generator->convertSymKey(generator, &keyMaterialBlob, &key); HcfObjDestroy(macObj); HcfObjDestroy(key); @@ -47,28 +47,31 @@ namespace OHOS { static void TestMac(const uint8_t* data, size_t size) { - HcfMac *macObj = nullptr; - HcfResult res = HcfMacCreate("SHA1", &macObj); + HcfSymKeyGenerator *generator = nullptr; + (void)HcfSymKeyGeneratorCreate("HMAC", &generator); + HcfSymKey *key = nullptr; + HcfBlob keyMaterialBlob = {.data = reinterpret_cast(data), .len = size}; + HcfResult res = generator->convertSymKey(generator, &keyMaterialBlob, &key); if (res != HCF_SUCCESS) { return; } - HcfSymKeyGenerator *generator = nullptr; - (void)HcfSymKeyGeneratorCreate("AES128", &generator); - char testKey[] = "abcdefghijklmnop"; - uint32_t testKeyLen = KEY_LEN; - HcfSymKey *key = nullptr; - HcfBlob keyMaterialBlob = {.data = reinterpret_cast(testKey), .len = testKeyLen}; - generator->convertSymKey(generator, &keyMaterialBlob, &key); + for (size_t index = 0; index < sizeof(g_testMacAlg)/sizeof(g_testMacAlg[0]); index++) { + HcfMac *macObj = nullptr; + res = HcfMacCreate(g_testMacAlg[index], &macObj); + if (res != HCF_SUCCESS) { + return; + } - HcfBlob inBlob = {.data = const_cast(data), .len = size}; - (void)macObj->init(macObj, key); - (void)macObj->update(macObj, &inBlob); - HcfBlob outBlob = { 0 }; - (void)macObj->doFinal(macObj, &outBlob); - (void)macObj->getAlgoName(macObj); - (void)macObj->getMacLength(macObj); - HcfBlobDataClearAndFree(&outBlob); - HcfObjDestroy(macObj); + HcfBlob inBlob = {.data = const_cast(data), .len = size}; + (void)macObj->init(macObj, key); + (void)macObj->update(macObj, &inBlob); + HcfBlob outBlob = { 0 }; + (void)macObj->doFinal(macObj, &outBlob); + (void)macObj->getAlgoName(macObj); + (void)macObj->getMacLength(macObj); + HcfBlobDataClearAndFree(&outBlob); + HcfObjDestroy(macObj); + } HcfObjDestroy(key); HcfObjDestroy(generator); } diff --git a/test/fuzztest/crypto_operation/hcfmdcreate_fuzzer/hcfmdcreate_fuzzer.cpp b/test/fuzztest/crypto_operation/hcfmdcreate_fuzzer/hcfmdcreate_fuzzer.cpp index 91e62ff77b2c0b6ea2f13fe2e3d96290e560d381..32fd8e5f9ae04574aeff2734d9689260bce60651 100755 --- a/test/fuzztest/crypto_operation/hcfmdcreate_fuzzer/hcfmdcreate_fuzzer.cpp +++ b/test/fuzztest/crypto_operation/hcfmdcreate_fuzzer/hcfmdcreate_fuzzer.cpp @@ -24,21 +24,24 @@ #include "result.h" namespace OHOS { + static const char *g_testMdAlg[] = { "MD5", "SHA1", "SHA224", "SHA256", "SHA384", "SHA512", "SM3"}; static void TestMd(const uint8_t* data, size_t size) { - HcfMd *mdObj = nullptr; - HcfResult res = HcfMdCreate("SHA1", &mdObj); - if (res != HCF_SUCCESS) { - return; + for (size_t index = 0; index < sizeof(g_testMdAlg)/sizeof(g_testMdAlg[0]); index++) { + HcfMd *mdObj = nullptr; + HcfResult res = HcfMdCreate(g_testMdAlg[index], &mdObj); + if (res != HCF_SUCCESS) { + return; + } + HcfBlob inBlob = {.data = const_cast(data), .len = size}; + (void)mdObj->update(mdObj, &inBlob); + HcfBlob outBlob = { 0 }; + (void)mdObj->doFinal(mdObj, &outBlob); + (void)mdObj->getAlgoName(mdObj); + (void)mdObj->getMdLength(mdObj); + HcfBlobDataClearAndFree(&outBlob); + HcfObjDestroy(mdObj); } - HcfBlob inBlob = {.data = const_cast(data), .len = size}; - (void)mdObj->update(mdObj, &inBlob); - HcfBlob outBlob = { 0 }; - (void)mdObj->doFinal(mdObj, &outBlob); - (void)mdObj->getAlgoName(mdObj); - (void)mdObj->getMdLength(mdObj); - HcfBlobDataClearAndFree(&outBlob); - HcfObjDestroy(mdObj); } bool HcMdCreateFuzzTest(const uint8_t* data, size_t size)