diff --git a/hapsigntool_cpp/codesigning/sign/src/verify_code_signature.cpp b/hapsigntool_cpp/codesigning/sign/src/verify_code_signature.cpp index 91a1215b821d21864ab731ff04fb8c6d4feeea76..9f76a8f5e4f36d40e419c54f8c35d38694377355 100644 --- a/hapsigntool_cpp/codesigning/sign/src/verify_code_signature.cpp +++ b/hapsigntool_cpp/codesigning/sign/src/verify_code_signature.cpp @@ -21,9 +21,12 @@ namespace SignatureTools { bool VerifyCodeSignature::VerifyHap(std::string file, int64_t offset, int64_t length, std::string fileFormat, std::string profileContent) { + std::string fileFromatTmp = fileFormat; + std::transform(fileFromatTmp.begin(), fileFromatTmp.end(), fileFromatTmp.begin(), ::tolower); if (std::find(CodeSigning::SUPPORT_FILE_FORM.begin(), CodeSigning::SUPPORT_FILE_FORM.end(), - fileFormat) == CodeSigning::SUPPORT_FILE_FORM.end()) { - SIGNATURE_TOOLS_LOGI("Not hap, hsp or hqf file, skip code signing verify, file type: %s", fileFormat.c_str()); + fileFromatTmp) == CodeSigning::SUPPORT_FILE_FORM.end()) { + SIGNATURE_TOOLS_LOGI("Not hap, hsp or hqf file, skip code signing verify, file type: %s", + fileFromatTmp.c_str()); return true; } // 1) generate CodeSignBlock diff --git a/hapsigntool_cpp/hap/provider/src/sign_provider.cpp b/hapsigntool_cpp/hap/provider/src/sign_provider.cpp index 14ea2eb5720a0cc7f52caba12dd6d2622fc3ac72..64327903c2fb3351408e6175965d93d6d9f7f1d3 100644 --- a/hapsigntool_cpp/hap/provider/src/sign_provider.cpp +++ b/hapsigntool_cpp/hap/provider/src/sign_provider.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include "nlohmann/json.hpp" #include "string_utils.h" @@ -348,9 +349,11 @@ bool SignProvider::AppendCodeSignBlock(SignerConfig* signerConfig, std::string o { if (signParams.at(ParamConstants::PARAM_SIGN_CODE) == CodeSigning::ENABLE_SIGN_CODE_VALUE) { SIGNATURE_TOOLS_LOGI("start code signing."); + std::string suffixTmp = suffix; + std::transform(suffixTmp.begin(), suffixTmp.end(), suffixTmp.begin(), ::tolower); if (std::find(CodeSigning::SUPPORT_FILE_FORM.begin(), CodeSigning::SUPPORT_FILE_FORM.end(), - suffix) == CodeSigning::SUPPORT_FILE_FORM.end()) { - SIGNATURE_TOOLS_LOGI("no need to sign code for %s", suffix.c_str()); + suffixTmp) == CodeSigning::SUPPORT_FILE_FORM.end()) { + SIGNATURE_TOOLS_LOGI("no need to sign code for %s", suffixTmp.c_str()); return true; } // 4 means hap format occupy 4 byte storage location,2 means optional blocks reserve 2 storage location @@ -358,7 +361,7 @@ bool SignProvider::AppendCodeSignBlock(SignerConfig* signerConfig, std::string o // create CodeSigning Object CodeSigning codeSigning(signerConfig); std::vector codeSignArray; - if (!codeSigning.GetCodeSignBlock(outputFilePath, codeSignOffset, suffix, profileContent, zip, + if (!codeSigning.GetCodeSignBlock(outputFilePath, codeSignOffset, suffixTmp, profileContent, zip, codeSignArray)) { SIGNATURE_TOOLS_LOGE("Codesigning getCodeSignBlock Fail."); return false; diff --git a/hapsigntool_cpp/hap/verify/src/verify_hap.cpp b/hapsigntool_cpp/hap/verify/src/verify_hap.cpp index 3c9ff687ce4f5ea7033156bf258e467d2806ac40..8e2c070712f7f3c896c83e98ea8886ce6d6a9116 100644 --- a/hapsigntool_cpp/hap/verify/src/verify_hap.cpp +++ b/hapsigntool_cpp/hap/verify/src/verify_hap.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include "securec.h" #include "hap_signer_block_utils.h" @@ -168,10 +169,13 @@ bool VerifyHap::CheckFilePath(const std::string& filePath, std::string& standard return false; } standardFilePath = std::string(path); - bool ret = (!std::regex_match(standardFilePath, std::regex(HAP_APP_PATTERN)) && - !std::regex_match(standardFilePath, std::regex(HSP_APP_PATTERN)) && - !std::regex_match(standardFilePath, std::regex(APP_APP_PATTERN)) && - !std::regex_match(standardFilePath, std::regex(HQF_APP_PATTERN))); + std::string standardFilePathTmp = std::string(path); + std::transform(standardFilePathTmp.begin(), standardFilePathTmp.end(), standardFilePathTmp.begin(), + [](unsigned char c) { return std::tolower(c); }); + bool ret = (!std::regex_match(standardFilePathTmp, std::regex(HAP_APP_PATTERN)) && + !std::regex_match(standardFilePathTmp, std::regex(HSP_APP_PATTERN)) && + !std::regex_match(standardFilePathTmp, std::regex(APP_APP_PATTERN)) && + !std::regex_match(standardFilePathTmp, std::regex(HQF_APP_PATTERN))); if (ret) { PrintErrorNumberMsg("COMMAND_PARAM_ERROR", COMMAND_PARAM_ERROR, "only support format is [hap, hqf, hsp, app]");