diff --git a/interfaces/innerkits/appverify/include/provision/provision_info.h b/interfaces/innerkits/appverify/include/provision/provision_info.h index 18d3858870e2841a116a1960ff506e56f9adccc0..3d6221838814bc48d25d87533664ab691344a881 100644 --- a/interfaces/innerkits/appverify/include/provision/provision_info.h +++ b/interfaces/innerkits/appverify/include/provision/provision_info.h @@ -57,6 +57,11 @@ struct DebugInfo { std::vector deviceIds; }; +struct Validity { + int64_t notBefore; + int64_t notAfter; +}; + struct ProvisionInfo { int32_t versionCode = 0; std::string versionName; @@ -71,6 +76,7 @@ struct ProvisionInfo { std::string appId; std::string fingerprint; std::vector appPrivilegeCapabilities; + Validity validity; }; } // namespace Verify } // namespace Security diff --git a/interfaces/innerkits/appverify/src/provision/provision_verify.cpp b/interfaces/innerkits/appverify/src/provision/provision_verify.cpp index dd4d0e0fda4ec3da099099b4272647e9dad40e71..c85ad4cf82dacb3c47f07f31163d6cf7469f76c5 100644 --- a/interfaces/innerkits/appverify/src/provision/provision_verify.cpp +++ b/interfaces/innerkits/appverify/src/provision/provision_verify.cpp @@ -62,6 +62,9 @@ const string VALUE_DIST_TYPE_ENTERPRISE = "enterprise"; const string VALUE_DIST_TYPE_OS_INTEGRATION = "os_integration"; const string VALUE_DIST_TYPE_CROWDTESTING = "crowdtesting"; const string VALUE_DEVICE_ID_TYPE_UDID = "udid"; +const string VALUE_VALIDITY = "validity"; +const string VALUE_NOT_BEFORE = "not-before"; +const string VALUE_NOT_AFTER = "not-after"; const string GENERIC_BUNDLE_NAME = ".*"; const string VALUE_DEVELOPMENT_MODE = "1"; @@ -84,6 +87,13 @@ inline void GetInt32IfExist(const json& obj, const string& key, int32_t& out) } } +inline void GetInt64IfExist(const json& obj, const string& key, int64_t& out) +{ + if (obj.find(key.c_str()) != obj.end() && obj[key.c_str()].is_number_integer()) { + obj[key.c_str()].get_to(out); + } +} + inline void GetStringArrayIfExist(const json& obj, const string& key, vector& out) { if (obj.find(key.c_str()) != obj.end() && obj[key.c_str()].is_array()) { @@ -167,6 +177,14 @@ void ParseDebugInfo(const json& obj, ProvisionInfo& out) } } +void ParseValidity(const json& obj, Validity& out) +{ + if (IsObjectExist(obj, VALUE_VALIDITY)) { + GetInt64IfExist(obj[VALUE_VALIDITY], VALUE_NOT_BEFORE, out.notBefore); + GetInt64IfExist(obj[VALUE_VALIDITY], VALUE_NOT_AFTER, out.notAfter); + } +} + void from_json(const json& obj, ProvisionInfo& out) { if (!obj.is_object()) { @@ -183,6 +201,7 @@ void from_json(const json& obj, ProvisionInfo& out) ParseDebugInfo(obj, out); GetStringIfExist(obj, KEY_ISSUER, out.issuer); GetStringArrayIfExist(obj, KEY_APP_PRIVILEGE_CAPABILITIES, out.appPrivilegeCapabilities); + ParseValidity(obj, out.validity); } #define RETURN_IF_STRING_IS_EMPTY(str, msg) \ diff --git a/interfaces/innerkits/appverify/test/unittest/src/provision_verify_test.cpp b/interfaces/innerkits/appverify/test/unittest/src/provision_verify_test.cpp index 858ce956389b5264129b55fe97f1136a9c8534c5..9c1989787f10e89937886a5585bbe46c5ec9f854 100644 --- a/interfaces/innerkits/appverify/test/unittest/src/provision_verify_test.cpp +++ b/interfaces/innerkits/appverify/test/unittest/src/provision_verify_test.cpp @@ -489,6 +489,8 @@ HWTEST_F(ProvisionVerifyTest, ProvisionVerify009, TestSize.Level1) ASSERT_EQ(ret, AppProvisionVerifyResult::PROVISION_OK); ASSERT_EQ(info.distributionType, AppDistType::CROWDTESTING); ASSERT_EQ(info.type, ProvisionType::DEBUG); + ASSERT_EQ(info.validity.notBefore, 1262275200); + ASSERT_EQ(info.validity.notAfter, 2524579300); } /** * @tc.name: Test HarmonyAppProvision ProvisionVerify009 function