From 82ea69403b569236797dd0e41c8ea3cd3e0c2a81 Mon Sep 17 00:00:00 2001 From: jidong Date: Mon, 14 Mar 2022 19:30:02 +0800 Subject: [PATCH] fixed 3eb6d3c from https://gitee.com/JiDong-CS/security_appverify/pulls/67 update magic number Signed-off-by: jidong --- .../appverify_lite/include/app_centraldirectory.h | 7 +++++-- interfaces/innerkits/appverify_lite/src/app_verify.c | 8 +++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/interfaces/innerkits/appverify_lite/include/app_centraldirectory.h b/interfaces/innerkits/appverify_lite/include/app_centraldirectory.h index 919554f..648968a 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 30dcf7b..9301080 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; -- Gitee