diff --git a/interfaces/innerkits/appverify_lite/include/app_centraldirectory.h b/interfaces/innerkits/appverify_lite/include/app_centraldirectory.h index 919554f8dde4e3eda1041cc99e2b45f5902e86a4..648968a62fbe59fab143f46a859c05ef0e691145 100755 --- a/interfaces/innerkits/appverify_lite/include/app_centraldirectory.h +++ b/interfaces/innerkits/appverify_lite/include/app_centraldirectory.h @@ -27,13 +27,16 @@ extern "C" { #endif #endif -#define HAP_SIG_BLOCK_MAGIC_HI 3617552046287187010LL -#define HAP_SIG_BLOCK_MAGIC_LO 2334950737560224072LL +#define HAP_SIG_BLOCK_MAGIC_HI_OLD 3617552046287187010LL +#define HAP_SIG_BLOCK_MAGIC_LO_OLD 2334950737560224072LL +#define HAP_SIG_BLOCK_MAGIC_HI 4497797983070462062LL +#define HAP_SIG_BLOCK_MAGIC_LO 7451613641622775868LL #define HAP_SIG_BLOCK_MIN_SIZE 32 #define UINT16_MAX_VALUE 0xffff #define HAP_EOCD_MAGIC 0x06054b50 #define HAP_FIRST_LEVEL_CHUNK_PREFIX 0x5a #define HAP_SECOND_LEVEL_CHUNK_PREFIX 0xa5 +#define VERSION_FOR_NEW_MAGIC_NUM 3 typedef struct { void *buffer; diff --git a/interfaces/innerkits/appverify_lite/src/app_verify.c b/interfaces/innerkits/appverify_lite/src/app_verify.c index 30dcf7bfb7f8661dabecde940234cb9399d18eb6..9301080ca9778c50260afa698a8b67e5c999d0e6 100755 --- a/interfaces/innerkits/appverify_lite/src/app_verify.c +++ b/interfaces/innerkits/appverify_lite/src/app_verify.c @@ -143,7 +143,13 @@ static int GetSignHead(const FileRead *file, SignatureInfo *signInfo) return V_ERR_GET_SIGNHEAD; } SignHeadN2H(signHead); - if (signHead->magicLow != HAP_SIG_BLOCK_MAGIC_LO || signHead->magicHigh != HAP_SIG_BLOCK_MAGIC_HI) { + unsigned long long magicLow = HAP_SIG_BLOCK_MAGIC_LO; + unsigned long long magicHigh = HAP_SIG_BLOCK_MAGIC_HI; + if (signHead->version < VERSION_FOR_NEW_MAGIC_NUM) { + magicLow = HAP_SIG_BLOCK_MAGIC_LO_OLD; + magicHigh = HAP_SIG_BLOCK_MAGIC_HI_OLD; + } + if (signHead->magicLow != magicLow || signHead->magicHigh != magicHigh) { LOG_ERROR("sign head magic invalid"); APPV_FREE(signHead); return V_ERR_GET_SIGNHEAD;