diff --git a/interfaces/innerkits/appverify/include/util/hap_signing_block_utils.h b/interfaces/innerkits/appverify/include/util/hap_signing_block_utils.h index d5c44b040f07880aaec2d2cef25af943d1a84e5e..b91679b1049f68680acde2a6acefd8c305f3901c 100644 --- a/interfaces/innerkits/appverify/include/util/hap_signing_block_utils.h +++ b/interfaces/innerkits/appverify/include/util/hap_signing_block_utils.h @@ -117,6 +117,7 @@ private: static bool ParseSignBlockHead(HapSignBlockHead& hapSignBlockHead, HapByteBuffer& hapBlockHead); static bool ParseSubSignBlockHead(HapSubSignBlockHead& subSignBlockHead, HapByteBuffer& hapBlockHead); static bool CheckSignBlockHead(const HapSignBlockHead& hapSignBlockHead); + static bool HapVerifyParallelizationSupported(); }; } // namespace Verify } // namespace Security diff --git a/interfaces/innerkits/appverify/src/util/hap_signing_block_utils.cpp b/interfaces/innerkits/appverify/src/util/hap_signing_block_utils.cpp index 693c4f35b6f08c63df9168f49366eeb9e223b435..5e1cbade57df87a12dcfd0fd647b6d926c96859c 100644 --- a/interfaces/innerkits/appverify/src/util/hap_signing_block_utils.cpp +++ b/interfaces/innerkits/appverify/src/util/hap_signing_block_utils.cpp @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -451,7 +452,7 @@ bool HapSigningBlockUtils::VerifyHapIntegrity( chunkDigest.SetCapacity(sumOfChunksLen); chunkDigest.PutByte(0, ZIP_FIRST_LEVEL_CHUNK_PREFIX); chunkDigest.PutInt32(1, chunkCount); - if (contentsZipSize <= SMALL_FILE_SIZE) { + if (!HapVerifyParallelizationSupported() || contentsZipSize <= SMALL_FILE_SIZE) { // No parallel for small size <= 2MB. int32_t offset = ZIP_CHUNK_DIGEST_PRIFIX_LEN; if (!ComputeDigestsForDataSourceArray(digestParam, content, ZIP_BLOCKS_NUM_NEED_DIGEST, chunkDigest, offset)) { @@ -662,6 +663,11 @@ bool HapSigningBlockUtils::InitDigestPrefix(const DigestParameter& digestParam, } return true; } + +bool HapSigningBlockUtils::HapVerifyParallelizationSupported() +{ + return OHOS::system::GetBoolParameter("const.appverify.hap_verify_parallel", false); +} } // namespace Verify } // namespace Security } // namespace OHOS