1/* 2 * Copyright (c) 2024-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15#include <chrono> 16#include <thread> 17#include <string> 18#include <filesystem> 19 20#include "gtest/gtest.h" 21#include "options.h" 22#include "sign_tool_service_impl.h" 23#include "nlohmann/json.hpp" 24#include "signer_factory.h" 25#include "profile_sign_tool.h" 26#include "params_run_tool.h" 27#include "pkcs7_data.h" 28#include "signer_config.h" 29#include "local_signer.h" 30#include "bc_pkcs7_generator.h" 31#include "bc_signeddata_generator.h" 32#include "profile_verify.h" 33#include "constant.h" 34#include "cms_utils.h" 35 36using nlohmann::json; 37 38namespace OHOS { 39namespace SignatureTools { 40 41// sign profile使用的全局参数 42static const std::string SIGN_PROFILE_MODE = "localSign"; 43static const std::string SIGN_PROFILE_KEY_ALIAS = "oh-profile1-key-v1"; 44static const std::string SIGN_PROFILE_PROFILE_CERT_FILE = "./signProfile/profile-release1.pem"; 45static const std::string SIGN_PROFILE_SIGN_ALG = "SHA384withECDSA"; 46static const std::string SIGN_PROFILE_KEY_STORE_FILE = "./signProfile/ohtest.p12"; 47static const std::string SIGN_PROFILE_OUT_FILE = "./signProfile/signed-profile.p7b"; 48static const std::string SIGN_PROFILE_IN_FILE = "./signProfile/profile.json"; 49 50static const std::string SIGN_PROFILE_CERT_PEM = "./signProfile/profile-release1-cert.pem"; 51static const std::string SIGN_PROFILE_REVERSE_PEM = "./signProfile/profile-release1-reverse.pem"; 52static const std::string SIGN_PROFILE_DOUBLE_CERT_PEM = "./signProfile/profile-release1-invalid_cert_chain.pem"; 53 54// verify profile 使用的全局参数 55static const std::string VERIFY_PROFILE_IN_FILE = "./signProfile/app1-profile1.p7b"; 56static const std::string VERIFY_PROFILE_OUT_FILE = "./signProfile/VerifyResult.json"; 57// sign app 使用全局参数 58static const std::string SIGN_APP_MODE = "localSign"; 59static const std::string SIGN_APP_KEY_ALIAS = "oh-app1-key-v1"; 60static const std::string SIGN_APP_APP_CERT_FILE = "./signProfile/app-release1.pem"; 61static const std::string SIGN_APP_PROFILE_FILE = "./signProfile/app1-profile1.p7b"; 62static const std::string SIGN_APP_IN_FILE = "./signProfile/unsigned.hap"; 63static const std::string SIGN_APP_IN_FILE_TXT = "./signProfile/unsigned.txt"; 64static const std::string SIGN_APP_SIGN_ALG = "SHA256withECDSA"; 65static const std::string SIGN_APP_KEY_STORE_FILE = "./signProfile/ohtest.p12"; 66static const std::string SIGN_APP_OUT_FILE = "./signProfile/signed.hap"; 67 68class ProvisionTest : public testing::Test { 69public: 70 static void SetUpTestCase(void); 71 static void TearDownTestCase(void); 72 void SetUp()override; 73 void TearDown()override; 74}; 75void ProvisionTest::SetUpTestCase(void) 76{ 77 std::filesystem::copy(SIGN_APP_IN_FILE_TXT, SIGN_APP_IN_FILE); 78} 79 80void ProvisionTest::TearDownTestCase(void) 81{ 82 std::filesystem::remove(SIGN_APP_IN_FILE); 83} 84 85void ProvisionTest::SetUp() 86{ 87} 88 89void ProvisionTest::TearDown() 90{ 91} 92 93/** 94 * @tc.name: provision_test001 95 * @tc.desc: Test function of LocalSigner::GetCrls() interface get NULL crls. 96 * @tc.size: MEDIUM 97 * @tc.type: FUNC 98 * @tc.level Level 1 99 * @tc.require: SR000H63TL 100 */ 101HWTEST_F(ProvisionTest, provision_test001, testing::ext::TestSize.Level1) 102{ 103 EVP_PKEY* pkey = NULL; 104 STACK_OF(X509)* certs = NULL; 105 std::shared_ptr<LocalSigner> signer = std::make_shared<LocalSigner>(pkey, certs); 106 STACK_OF(X509_CRL)* crls = signer->GetCrls(); 107 EXPECT_TRUE(crls == NULL); 108} 109 110/** 111 * @tc.name: provision_test002 112 * @tc.desc: Test function of LocalSigner::GetSignature() interface diffrent sign algorithm 113 * for success only support SHA256/384withECDSA. 114 * @tc.size: MEDIUM 115 * @tc.type: FUNC 116 * @tc.level Level 1 117 * @tc.require: SR000H63TL 118 */ 119HWTEST_F(ProvisionTest, provision_test002, testing::ext::TestSize.Level1) 120{ 121 std::string content = "signed content data"; 122 Options options; 123 std::string mode = SIGN_PROFILE_MODE; 124 std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 125 std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 126 std::string signAlg = SIGN_PROFILE_SIGN_ALG; 127 std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 128 std::string outFile = SIGN_PROFILE_OUT_FILE; 129 std::string inFile = SIGN_PROFILE_IN_FILE; 130 char keyStorePwd[] = "123456"; 131 char keypwd[] = "123456"; 132 options[Options::KEY_ALIAS] = keyAlias; 133 options[Options::MODE] = mode; 134 options[Options::PROFILE_CERT_FILE] = profileCertFile; 135 options[Options::SIGN_ALG] = signAlg; 136 options[Options::KEY_STORE_FILE] = keystoreFile; 137 options[Options::OUT_FILE] = outFile; 138 options[Options::IN_FILE] = inFile; 139 options[Options::KEY_RIGHTS] = keypwd; 140 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 141 142 LocalizationAdapter adapter(&options); 143 SignerFactory factory; 144 std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 145 std::string signature1 = signer->GetSignature(content, "SHA384withECDSA"); 146 EXPECT_TRUE(signature1.size()); 147 std::string signature2 = signer->GetSignature(content, "SHA256withECDSA"); 148 EXPECT_TRUE(signature2.size()); 149 std::string signature3 = signer->GetSignature(content, "SHA999withECDSA"); 150 EXPECT_TRUE(signature3.empty()); 151 std::string signature4 = signer->GetSignature("", "SHA384withECDSA"); 152 EXPECT_FALSE(signature4.empty()); 153} 154 155/** 156 * @tc.name: provision_test003 157 * @tc.desc: Test function of ParseProvision() failed for not debug/release provision. 158 * @tc.size: MEDIUM 159 * @tc.type: FUNC 160 * @tc.level Level 1 161 * @tc.require: SR000H63TL 162 */ 163HWTEST_F(ProvisionTest, provision_test003, testing::ext::TestSize.Level1) 164{ 165 std::string provision = "{\"acls\":{\"allowed-acls\":[\"ac1\",\"ac2\"]},\"bundle-info\":{\"app-feature\":" 166 "\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-id\":\"OpenHarmony\"," 167 "\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 168 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 169 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 170 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 171 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 172 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 173 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 174 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 175 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 176 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 177 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 178 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 179 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 180 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 181 "-----END CERTIFICATE-----\\n" 182 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD53029605" 183 "4159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]}," 184 "\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"invalid de" 185 "bug\",\"uuid\"" 186 ":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532}" 187 ",\"version-code\":1,\"version-name\":\"1.0.0\",\"baseapp-info\":{\"package-name\":\"package_name\",\"packag" 188 "e-cert\":\"package_cert\"}}"; 189 ProfileInfo info; 190 AppProvisionVerifyResult result = ParseProvision(provision, info); 191 EXPECT_FALSE(result == PROVISION_OK); 192} 193 194/** 195 * @tc.name: provision_test004 196 * @tc.desc: Test function of ParseProvision() interface for SUCCESS. 197 * @tc.size: MEDIUM 198 * @tc.type: FUNC 199 * @tc.level Level 1 200 * @tc.require: SR000H63TL 201 */ 202HWTEST_F(ProvisionTest, provision_test004, testing::ext::TestSize.Level1) 203{ 204 std::string provision = "{\"acls\":{\"allowed-acls\":[\"ac1\",\"ac2\"]},\"bundle-info\":{\"app-feature\":" 205 "\"hos_system_" 206 "app\",\"bundle-name\":\".*\",\"developer-id\":\"OpenHarmony\",\"development-certificate\":" 207 "\"-----BEGIN CERTIFICATE-----\\n" 208 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 209 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 210 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 211 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 212 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 213 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 214 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 215 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 216 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 217 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 218 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 219 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 220 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 221 "-----END CERTIFICATE-----\\n" 222 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD530296" 223 "054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]},\"" 224 "issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"debug\",\"uuid" 225 "\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":161051" 226 "9532},\"version-code\":1,\"version-name\":\"1.0.0\",\"baseapp-info\":{\"package-name\":\"package_name\"," 227 "\"package-cert\":\"package_cert\"}}"; 228 ProfileInfo info2; 229 AppProvisionVerifyResult result = ParseProvision(provision, info2); 230 EXPECT_TRUE(result == PROVISION_OK); 231} 232/** 233 * @tc.name: provision_test005 234 * @tc.desc: Test function of ParseProvision() failed for not struct json. 235 * @tc.size: MEDIUM 236 * @tc.type: FUNC 237 * @tc.level Level 1 238 * @tc.require: SR000H63TL 239 */ 240HWTEST_F(ProvisionTest, provision_test005, testing::ext::TestSize.Level1) 241{ 242 ProfileInfo info; 243 std::string provision = "55.2"; 244 AppProvisionVerifyResult result = ParseProvision(provision, info); 245 EXPECT_FALSE(result == PROVISION_OK); 246} 247 248/** 249 * @tc.name: provision_test006 250 * @tc.desc: Test function of ParseProvision() failed for discarded json. 251 * @tc.size: MEDIUM 252 * @tc.type: FUNC 253 * @tc.level Level 1 254 * @tc.require: SR000H63TL 255 */ 256HWTEST_F(ProvisionTest, provision_test006, testing::ext::TestSize.Level1) 257{ 258 ProfileInfo info; 259 std::string provision = "{\"name\": \"feixing\",\"age\": 18}+"; 260 AppProvisionVerifyResult result = ParseProvision(provision, info); 261 EXPECT_FALSE(result == PROVISION_OK); 262} 263 264/** 265n * @tc.name: provision_test009 266 * @tc.desc: Test function of ParseProfile() interface for SUCCESS. 267 * @tc.size: MEDIUM 268 * @tc.type: FUNC 269 * @tc.level Level 1 270 * @tc.require: SR000H63TL 271 */ 272HWTEST_F(ProvisionTest, provision_test009, testing::ext::TestSize.Level1) 273{ 274 ProfileInfo info; 275 std::string provision = "[88,99,42,11,22]"; 276 AppProvisionVerifyResult result = ParseProfile(provision, info); 277 EXPECT_TRUE(result == PROVISION_OK); 278} 279 280/** 281 * @tc.name: provision_test010 282 * @tc.desc: Test function of ParseProvision() interface for SUCCESS. 283 * @tc.size: MEDIUM 284 * @tc.type: FUNC 285 * @tc.level Level 1 286 * @tc.require: SR000H63TL 287 */ 288HWTEST_F(ProvisionTest, provision_test010, testing::ext::TestSize.Level1) 289{ 290 ProfileInfo info; 291 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-feature\"" 292 ":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-id\":\"OpenHarm" 293 "ony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 294 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 295 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 296 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 297 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 298 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 299 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 300 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 301 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 302 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 303 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 304 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 305 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 306 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 307 "-----END CERTIFICATE-----\\n" 308 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD" 309 "530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F95873" 310 "2865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":" 311 "\"debug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532" 312 ",\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 313 AppProvisionVerifyResult result = ParseProvision(provision, info); 314 EXPECT_TRUE(result == PROVISION_OK); 315} 316 317/** 318 * @tc.name: provision_test014 319 * @tc.desc: Test function of ParseProvision() interface for SUCCESS. 320 * @tc.size: MEDIUM 321 * @tc.type: FUNC 322 * @tc.level Level 1 323 * @tc.require: SR000H63TL 324 */ 325HWTEST_F(ProvisionTest, provision_test014, testing::ext::TestSize.Level1) 326{ 327 ProfileInfo info; 328 std::string provision = "{\"app-privilege-capabilities\": [99,\"88\"],\"bundle-info\":{\"app" 329 "-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer" 330 "-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 331 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 332 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 333 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 334 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 335 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 336 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 337 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 338 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 339 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 340 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 341 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 342 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 343 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 344 "-----END CERTIFICATE-----\\n" 345 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB" 346 "44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7" 347 "679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\"" 348 ":[\"\"]},\"type\":\"debug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":" 349 "{\"not-after\":1705127532,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 350 AppProvisionVerifyResult result = ParseProvision(provision, info); 351 EXPECT_TRUE(result == PROVISION_OK); 352} 353/** 354 * @tc.name: provision_test019 355 * @tc.desc: Test function of ParseProvision() failed for development-certificate is empty. 356 * @tc.size: MEDIUM 357 * @tc.type: FUNC 358 * @tc.level Level 1 359 * @tc.require: SR000H63TL 360 */ 361HWTEST_F(ProvisionTest, provision_test019, testing::ext::TestSize.Level1) 362{ 363 ProfileInfo info; 364 std::string provision = "{\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-name\":\"com" 365 ".example.nativetemplatedemo\",\"developer-id\":\"OpenHarmony\",\"development-certificate\":\"\"},\"" 366 "d""ebug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD53029" 367 "6054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F95873286" 368 "5\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"de" 369 "bug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"no" 370 "t-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 371 AppProvisionVerifyResult result = ParseProvision(provision, info); 372 EXPECT_FALSE(result == PROVISION_OK); 373} 374 375/** 376 * @tc.name: provision_test021 377 * @tc.desc: Test function of Provision operator==() interface stability. 378 * @tc.size: MEDIUM 379 * @tc.type: FUNC 380 * @tc.level Level 1 381 * @tc.require: SR000H63TL 382 */ 383HWTEST_F(ProvisionTest, provision_test021, testing::ext::TestSize.Level1) 384{ 385 ProfileInfo info; 386 ProfileInfo info2; 387 info2.profileBlockLength = 0; 388 info = info2; 389 EXPECT_EQ(info.profileBlockLength, info2.profileBlockLength); 390} 391 392/** 393 * @tc.name: provision_test023 394 * @tc.desc: Test function of Provision operator==() interface stability. 395 * @tc.size: MEDIUM 396 * @tc.type: FUNC 397 * @tc.level Level 1 398 * @tc.require: SR000H63TL 399 */ 400HWTEST_F(ProvisionTest, provision_test023, testing::ext::TestSize.Level1) 401{ 402 ProfileInfo info; 403 ProfileInfo info2; 404 info2.profileBlockLength = 5; 405 info2.profileBlock = NULL; 406 info = info2; 407 EXPECT_EQ(info.profileBlockLength, info2.profileBlockLength); 408} 409 410/** 411 * @tc.name: provision_test025 412 * @tc.desc: Test function of ProfileSignTool::GenerateP7b() failed for invalid keyStorePassword. 413 * @tc.size: MEDIUM 414 * @tc.type: FUNC 415 * @tc.level Level 1 416 * @tc.require: SR000H63TL 417 */ 418HWTEST_F(ProvisionTest, provision_test025, testing::ext::TestSize.Level1) 419{ 420 Options options; 421 char keyStorePwd[] = "123456"; 422 char invalidKeyPwd[] = "12345"; 423 options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 424 options[Options::MODE] = SIGN_PROFILE_MODE; 425 options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE; 426 options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG; 427 options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 428 options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 429 options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 430 options[Options::KEY_RIGHTS] = invalidKeyPwd; 431 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 432 433 LocalizationAdapter adapter(&options); 434 std::string content = "json content"; 435 std::string ret; 436 int result = ProfileSignTool::GenerateP7b(adapter, content, ret); 437 EXPECT_FALSE(result == 0); 438} 439 440/** 441 * @tc.name: provision_test026 442 * @tc.desc: Test function of ProfileSignTool::GenerateP7b() failed for invalid sign algorithm. 443 * @tc.size: MEDIUM 444 * @tc.type: FUNC 445 * @tc.level Level 1 446 * @tc.require: SR000H63TL 447 */ 448HWTEST_F(ProvisionTest, provision_test026, testing::ext::TestSize.Level1) 449{ 450 Options options; 451 char keyStorePwd[] = "123456"; 452 char keypwd[] = "123456"; 453 std::string invalid_sigAlg = "SHA385withECDSA"; 454 options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 455 options[Options::MODE] = SIGN_PROFILE_MODE; 456 options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE; 457 options[Options::SIGN_ALG] = invalid_sigAlg; 458 options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 459 options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 460 options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 461 options[Options::KEY_RIGHTS] = keypwd; 462 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 463 464 LocalizationAdapter adapter(&options); 465 std::string content = "json content"; 466 std::string ret; 467 int result = ProfileSignTool::GenerateP7b(adapter, content, ret); 468 EXPECT_FALSE(result == 0); 469} 470 471/** 472 * @tc.name: provision_test027 473 * @tc.desc: Test function of ProfileSignTool::GenerateP7b() interface for SUCCESS. 474 * @tc.size: MEDIUM 475 * @tc.type: FUNC 476 * @tc.level Level 1 477 * @tc.require: SR000H63TL 478 */ 479HWTEST_F(ProvisionTest, provision_test027, testing::ext::TestSize.Level1) 480{ 481 Options options; 482 char keyStorePwd[] = "123456"; 483 char keypwd[] = "123456"; 484 options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 485 options[Options::MODE] = SIGN_PROFILE_MODE; 486 options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE; 487 options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG; 488 options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 489 options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 490 options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 491 options[Options::KEY_RIGHTS] = keypwd; 492 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 493 494 LocalizationAdapter adapter(&options); 495 std::string content = "json content"; 496 std::string ret; 497 int result = ProfileSignTool::GenerateP7b(adapter, content, ret); 498 EXPECT_TRUE(result == 0); 499} 500 501/** 502 * @tc.name: provision_test028 503 * @tc.desc: Test function of ProfileSignTool::SignProfile() interface for SUCCESS. 504 * @tc.size: MEDIUM 505 * @tc.type: FUNC 506 * @tc.level Level 1 507 * @tc.require: SR000H63TL 508 */ 509HWTEST_F(ProvisionTest, provision_test028, testing::ext::TestSize.Level1) 510{ 511 Options options; 512 char keyStorePwd[] = "123456"; 513 char keypwd[] = "123456"; 514 options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 515 options[Options::MODE] = SIGN_PROFILE_MODE; 516 options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE; 517 options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG; 518 options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 519 options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 520 options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 521 options[Options::KEY_RIGHTS] = keypwd; 522 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 523 524 LocalizationAdapter adapter(&options); 525 SignerFactory factory; 526 std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 527 std::string content = "json content"; 528 std::string ret; 529 int result = ProfileSignTool::SignProfile(content, signer, SIGN_PROFILE_SIGN_ALG, ret); 530 EXPECT_TRUE(result == 0); 531} 532 533/** 534 * @tc.name: provision_test029 535 * @tc.desc: Test function of ProfileSignTool::GenerateP7b() failed for invalid certchain. 536 * @tc.size: MEDIUM 537 * @tc.type: FUNC 538 * @tc.level Level 1 539 * @tc.require: SR000H63TL 540 */ 541HWTEST_F(ProvisionTest, provision_test029, testing::ext::TestSize.Level1) 542{ 543 Options options; 544 char keyStorePwd[] = "123456"; 545 char keypwd[] = "123456"; 546 options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 547 options[Options::MODE] = SIGN_PROFILE_MODE; 548 options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_CERT_PEM; 549 options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG; 550 options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 551 options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 552 options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 553 options[Options::KEY_RIGHTS] = keypwd; 554 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 555 556 LocalizationAdapter adapter(&options); 557 std::string content = "json content"; 558 std::string ret; 559 int result = ProfileSignTool::GenerateP7b(adapter, content, ret); 560 EXPECT_FALSE(result == 0); 561} 562 563/** 564 * @tc.name: provision_test030 565 * @tc.desc: Test function of ProfileSignTool::GenerateP7b() failed for invalid certichain. 566 * @tc.size: MEDIUM 567 * @tc.type: FUNC 568 * @tc.level Level 1 569 * @tc.require: SR000H63TL 570 */ 571HWTEST_F(ProvisionTest, provision_test030, testing::ext::TestSize.Level1) 572{ 573 Options options; 574 char keyStorePwd[] = "123456"; 575 char keypwd[] = "123456"; 576 options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS; 577 options[Options::MODE] = SIGN_PROFILE_MODE; 578 options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_DOUBLE_CERT_PEM; 579 options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG; 580 options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE; 581 options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE; 582 options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE; 583 options[Options::KEY_RIGHTS] = keypwd; 584 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 585 586 LocalizationAdapter adapter(&options); 587 std::string content = "json content"; 588 std::string ret; 589 int result = ProfileSignTool::GenerateP7b(adapter, content, ret); 590 EXPECT_FALSE(result == 0); 591} 592 593/** 594 * @tc.name: provision_test031 595 * @tc.desc: Test function of LocalSigner::GetCrls() interface get NULL crls. 596 * @tc.size: MEDIUM 597 * @tc.type: FUNC 598 * @tc.level Level 1 599 * @tc.require: SR000H63TL 600 */ 601HWTEST_F(ProvisionTest, provision_test031, testing::ext::TestSize.Level1) 602{ 603 Options options; 604 std::string mode = SIGN_PROFILE_MODE; 605 std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 606 std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 607 std::string signAlg = SIGN_PROFILE_SIGN_ALG; 608 std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 609 std::string outFile = SIGN_PROFILE_OUT_FILE; 610 std::string inFile = SIGN_PROFILE_IN_FILE; 611 char keyStorePwd[] = "123456"; 612 char keypwd[] = "123456"; 613 options[Options::KEY_ALIAS] = keyAlias; 614 options[Options::MODE] = mode; 615 options[Options::PROFILE_CERT_FILE] = profileCertFile; 616 options[Options::SIGN_ALG] = signAlg; 617 options[Options::KEY_STORE_FILE] = keystoreFile; 618 options[Options::OUT_FILE] = outFile; 619 options[Options::IN_FILE] = inFile; 620 options[Options::KEY_RIGHTS] = keypwd; 621 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 622 623 LocalizationAdapter adapter(&options); 624 SignerFactory factory; 625 std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 626 STACK_OF(X509_CRL)* crls = signer->GetCrls(); 627 EXPECT_TRUE(crls == NULL); 628} 629 630/** 631 * @tc.name: provision_test032 632 * @tc.desc: Test function of LocalSigner() constructor. 633 * @tc.size: MEDIUM 634 * @tc.type: FUNC 635 * @tc.level Level 1 636 * @tc.require: SR000H63TL 637 */ 638HWTEST_F(ProvisionTest, provision_test032, testing::ext::TestSize.Level1) 639{ 640 Options options; 641 std::string mode = SIGN_PROFILE_MODE; 642 std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 643 std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 644 std::string signAlg = SIGN_PROFILE_SIGN_ALG; 645 std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 646 std::string outFile = SIGN_PROFILE_OUT_FILE; 647 std::string inFile = SIGN_PROFILE_IN_FILE; 648 char keyStorePwd[] = "123456"; 649 char keypwd[] = "123456"; 650 options[Options::KEY_ALIAS] = keyAlias; 651 options[Options::MODE] = mode; 652 options[Options::PROFILE_CERT_FILE] = profileCertFile; 653 options[Options::SIGN_ALG] = signAlg; 654 options[Options::KEY_STORE_FILE] = keystoreFile; 655 options[Options::OUT_FILE] = outFile; 656 options[Options::IN_FILE] = inFile; 657 options[Options::KEY_RIGHTS] = keypwd; 658 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 659 660 EVP_PKEY* pkey = NULL; 661 STACK_OF(X509)* certs = NULL; 662 std::shared_ptr<Signer> signer = NULL; 663 signer = std::make_shared<LocalSigner>(pkey, certs); 664 EXPECT_NE(signer, nullptr); 665} 666 667/** 668 * @tc.name: provision_test033 669 * @tc.desc: Test function of LocalSigner() interface constructor. 670 * @tc.size: MEDIUM 671 * @tc.type: FUNC 672 * @tc.level Level 1 673 * @tc.require: SR000H63TL 674 */ 675HWTEST_F(ProvisionTest, provision_test033, testing::ext::TestSize.Level1) 676{ 677 Options options; 678 std::string mode = SIGN_PROFILE_MODE; 679 std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 680 std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 681 std::string signAlg = SIGN_PROFILE_SIGN_ALG; 682 std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 683 std::string outFile = SIGN_PROFILE_OUT_FILE; 684 std::string inFile = SIGN_PROFILE_IN_FILE; 685 char keyStorePwd[] = "123456"; 686 char keypwd[] = "123456"; 687 options[Options::KEY_ALIAS] = keyAlias; 688 options[Options::MODE] = mode; 689 options[Options::PROFILE_CERT_FILE] = profileCertFile; 690 options[Options::SIGN_ALG] = signAlg; 691 options[Options::KEY_STORE_FILE] = keystoreFile; 692 options[Options::OUT_FILE] = outFile; 693 options[Options::IN_FILE] = inFile; 694 options[Options::KEY_RIGHTS] = keypwd; 695 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 696 697 EVP_PKEY* pkey = NULL; 698 STACK_OF(X509)* certs = NULL; 699 LocalizationAdapter adapter(&options); 700 pkey = adapter.GetAliasKey(false); 701 std::shared_ptr<Signer> signer = std::make_shared<LocalSigner>(pkey, certs); 702 EXPECT_NE(signer, nullptr); 703} 704 705/** 706 * @tc.name: provision_test034 707 * @tc.desc: Test function of LocalSigner() interface constructor. 708 * @tc.size: MEDIUM 709 * @tc.type: FUNC 710 * @tc.level Level 1 711 * @tc.require: SR000H63TL 712 */ 713HWTEST_F(ProvisionTest, provision_test034, testing::ext::TestSize.Level1) 714{ 715 Options options; 716 std::string mode = SIGN_PROFILE_MODE; 717 std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 718 std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 719 std::string signAlg = SIGN_PROFILE_SIGN_ALG; 720 std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 721 std::string outFile = SIGN_PROFILE_OUT_FILE; 722 std::string inFile = SIGN_PROFILE_IN_FILE; 723 char keyStorePwd[] = "123456"; 724 char keypwd[] = "123456"; 725 options[Options::KEY_ALIAS] = keyAlias; 726 options[Options::MODE] = mode; 727 options[Options::PROFILE_CERT_FILE] = profileCertFile; 728 options[Options::SIGN_ALG] = signAlg; 729 options[Options::KEY_STORE_FILE] = keystoreFile; 730 options[Options::OUT_FILE] = outFile; 731 options[Options::IN_FILE] = inFile; 732 options[Options::KEY_RIGHTS] = keypwd; 733 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 734 735 EVP_PKEY* pkey = NULL; 736 STACK_OF(X509)* certs = sk_X509_new(NULL); 737 LocalizationAdapter adapter(&options); 738 pkey = adapter.GetAliasKey(false); 739 std::shared_ptr<Signer> signer = std::make_shared<LocalSigner>(pkey, certs); 740 EXPECT_NE(signer, nullptr); 741} 742 743/** 744 * @tc.name: provision_test035 745 * @tc.desc: Test function of GetSignature::GetSignature() interface for SUCCESS. 746 * @tc.size: MEDIUM 747 * @tc.type: FUNC 748 * @tc.level Level 1 749 * @tc.require: SR000H63TL 750 */ 751HWTEST_F(ProvisionTest, provision_test035, testing::ext::TestSize.Level1) 752{ 753 Options options; 754 std::string mode = SIGN_PROFILE_MODE; 755 std::string keyAlias = SIGN_PROFILE_KEY_ALIAS; 756 std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE; 757 std::string signAlg = SIGN_PROFILE_SIGN_ALG; 758 std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE; 759 std::string outFile = SIGN_PROFILE_OUT_FILE; 760 std::string inFile = SIGN_PROFILE_IN_FILE; 761 char keyStorePwd[] = "123456"; 762 char keypwd[] = "123456"; 763 options[Options::KEY_ALIAS] = keyAlias; 764 options[Options::MODE] = mode; 765 options[Options::PROFILE_CERT_FILE] = profileCertFile; 766 options[Options::SIGN_ALG] = signAlg; 767 options[Options::KEY_STORE_FILE] = keystoreFile; 768 options[Options::OUT_FILE] = outFile; 769 options[Options::IN_FILE] = inFile; 770 options[Options::KEY_RIGHTS] = keypwd; 771 options[Options::KEY_STORE_RIGHTS] = keyStorePwd; 772 773 EVP_PKEY* pkey = NULL; 774 LocalizationAdapter adapter(&options); 775 SignerFactory factory; 776 std::shared_ptr<Signer> signer = factory.GetSigner(adapter); 777 STACK_OF(X509)* certs = signer->GetCertificates(); 778 STACK_OF(X509)* certsDup = sk_X509_new(NULL); 779 X509* cert = sk_X509_value(certs, 0); 780 X509_up_ref(cert); 781 sk_X509_push(certsDup, cert); 782 std::shared_ptr<Signer> signer2 = std::make_shared<LocalSigner>(pkey, certsDup); 783 std::string signature = signer2->GetSignature("content", "SHA384withECDSA"); 784 EXPECT_NE(signer, nullptr); 785} 786 787/** 788 * @tc.name: provision_test036 789 * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty. 790 * @tc.size: MEDIUM 791 * @tc.type: FUNC 792 * @tc.level Level 1 793 * @tc.require: SR000H63TL 794 */ 795HWTEST_F(ProvisionTest, provision_test036, testing::ext::TestSize.Level1) 796{ 797 ProfileInfo info; 798 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"app-distribution-type" 799 "\": \"app_gallery\",\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-name\":\"co" 800 "m.example.nativetemplatedemo\",\"developer-id\":\"OpenHarmony\",\"development-certifica" 801 "te\":\"-----BEGIN CERTIFICATE-----\\n" 802 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 803 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 804 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 805 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 806 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 807 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 808 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 809 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 810 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 811 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 812 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 813 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 814 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 815 "-----END CERTIFICATE-----\\n" 816 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD530" 817 "296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865" 818 "\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"re" 819 "lease\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"n" 820 "ot-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 821 AppProvisionVerifyResult result = ParseProvision(provision, info); 822 EXPECT_FALSE(result == PROVISION_OK); 823} 824 825/** 826 * @tc.name: provision_test037 827 * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty. 828 * @tc.size: MEDIUM 829 * @tc.type: FUNC 830 * @tc.level Level 1 831 * @tc.require: SR000H63TL 832 */ 833HWTEST_F(ProvisionTest, provision_test037, testing::ext::TestSize.Level1) 834{ 835 ProfileInfo info; 836 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-featur" 837 "e\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-id\":\"Ope" 838 "nHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 839 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 840 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 841 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 842 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 843 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 844 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 845 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 846 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 847 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 848 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 849 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 850 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 851 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 852 "-----END CERTIFICATE-----\\n" 853 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44A" 854 "BCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73" 855 "F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]" 856 "},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-a" 857 "fter\":1705127532,\"not-before\":1610519532},\"version-code\":0,\"version-name\":\"1.0.0\"}"; 858 AppProvisionVerifyResult result = ParseProvision(provision, info); 859 EXPECT_FALSE(result == PROVISION_OK); 860} 861 862/** 863 * @tc.name: provision_test038 864 * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty. 865 * @tc.size: MEDIUM 866 * @tc.type: FUNC 867 * @tc.level Level 1 868 * @tc.require: SR000H63TL 869 */ 870HWTEST_F(ProvisionTest, provision_test038, testing::ext::TestSize.Level1) 871{ 872 ProfileInfo info; 873 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-fea" 874 "ture\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-id\":\"" 875 "OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 876 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 877 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 878 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 879 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 880 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 881 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 882 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 883 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 884 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 885 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 886 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 887 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 888 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 889 "-----END CERTIFICATE-----\\n" 890 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0C" 891 "B44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718" 892 "C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permission" 893 "s\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"valid" 894 "ity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"version-code_no\":0,\"ver" 895 "sion-name\":\"1.0.0\"}"; 896 AppProvisionVerifyResult result = ParseProvision(provision, info); 897 EXPECT_FALSE(result == PROVISION_OK); 898} 899 900/** 901 * @tc.name: provision_test039 902 * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty. 903 * @tc.size: MEDIUM 904 * @tc.type: FUNC 905 * @tc.level Level 1 906 * @tc.require: SR000H63TL 907 */ 908HWTEST_F(ProvisionTest, provision_test039, testing::ext::TestSize.Level1) 909{ 910 ProfileInfo info; 911 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-f" 912 "eature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-" 913 "id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 914 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 915 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 916 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 917 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 918 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 919 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 920 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 921 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 922 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 923 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 924 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 925 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 926 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 927 "-----END CERTIFICATE-----\\n" 928 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69" 929 "C7505BE341BDA5948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7E" 930 "ED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]},\"is" 931 "suer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"t" 932 "ype\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"no" 933 "t-after\":1705127532,\"not-before\":1610519532},\"version-code\":\"0\",\"version-name\":\"1.0.0\"}"; 934 AppProvisionVerifyResult result = ParseProvision(provision, info); 935 EXPECT_FALSE(result == PROVISION_OK); 936} 937 938/** 939 * @tc.name: provision_test040 940 * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty. 941 * @tc.size: MEDIUM 942 * @tc.type: FUNC 943 * @tc.level Level 1 944 * @tc.require: SR000H63TL 945 */ 946HWTEST_F(ProvisionTest, provision_test040, testing::ext::TestSize.Level1) 947{ 948 ProfileInfo info; 949 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"app-privilege-cap" 950 "abilities\": [99,\"88\"],\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-" 951 "name\":\"com.example.nativetemplatedemo\",\"developer-id\":\"OpenHarmony\",\"develop" 952 "ment-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 953 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 954 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 955 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 956 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 957 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 958 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 959 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 960 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 961 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 962 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 963 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 964 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 965 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 966 "-----END CERTIFICATE-----\\n" 967 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341B" 968 "DA5948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2F" 969 "AA019458B856AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"perm" 970 "issions\":{\"restricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe6" 971 "86e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-bef" 972 "ore\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 973 AppProvisionVerifyResult result = ParseProvision(provision, info); 974 EXPECT_FALSE(result == PROVISION_OK); 975} 976 977/** 978 * @tc.name: provision_test041 979 * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty. 980 * @tc.size: MEDIUM 981 * @tc.type: FUNC 982 * @tc.level Level 1 983 * @tc.require: SR000H63TL 984 */ 985HWTEST_F(ProvisionTest, provision_test041, testing::ext::TestSize.Level1) 986{ 987 ProfileInfo info; 988 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-in" 989 "fo\":{\"app-feature\":\"hos_system_app\",\"bundle-name\":\"\",\"developer-id\":\"Op" 990 "enHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 991 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 992 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 993 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 994 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 995 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 996 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 997 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 998 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 999 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 1000 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 1001 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 1002 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 1003 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 1004 "-----END CERTIFICATE-----\\n" 1005 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA" 1006 "5948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA0194" 1007 "58B856AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions" 1008 "\":{\"restricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-37" 1009 "70-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610" 1010 "519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 1011 AppProvisionVerifyResult result = ParseProvision(provision, info); 1012 EXPECT_FALSE(result == PROVISION_OK); 1013} 1014 1015/** 1016 * @tc.name: provision_test042 1017 * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty. 1018 * @tc.size: MEDIUM 1019 * @tc.type: FUNC 1020 * @tc.level Level 1 1021 * @tc.require: SR000H63TL 1022 */ 1023HWTEST_F(ProvisionTest, provision_test042, testing::ext::TestSize.Level1) 1024{ 1025 ProfileInfo info; 1026 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"ap" 1027 "p-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"devel" 1028 "oper-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 1029 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 1030 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1031 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 1032 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 1033 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1034 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 1035 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 1036 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 1037 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 1038 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 1039 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 1040 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 1041 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 1042 "-----END CERTIFICATE-----\\n" 1043 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C" 1044 "0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493" 1045 "A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-pe" 1046 "rmissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c9" 1047 "8\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"version-code\":" 1048 "1,\"version-name\":\"\"}"; 1049 AppProvisionVerifyResult result = ParseProvision(provision, info); 1050 EXPECT_FALSE(result == PROVISION_OK); 1051} 1052 1053/** 1054 * @tc.name: provision_test043 1055 * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty. 1056 * @tc.size: MEDIUM 1057 * @tc.type: FUNC 1058 * @tc.level Level 1 1059 * @tc.require: SR000H63TL 1060 */ 1061HWTEST_F(ProvisionTest, provision_test043, testing::ext::TestSize.Level1) 1062{ 1063 ProfileInfo info; 1064 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"a" 1065 "pp-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"d" 1066 "eveloper-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 1067 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 1068 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1069 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 1070 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 1071 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1072 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 1073 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 1074 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 1075 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 1076 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 1077 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 1078 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 1079 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 1080 "-----END CERTIFICATE-----\\n" 1081 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA59" 1082 "48C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B" 1083 "856AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"r" 1084 "estricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"\",\"validity\":{\"no" 1085 "t-after\":1705127532,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"\"}"; 1086 AppProvisionVerifyResult result = ParseProvision(provision, info); 1087 EXPECT_FALSE(result == PROVISION_OK); 1088} 1089 1090/** 1091 * @tc.name: provision_test044 1092 * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty. 1093 * @tc.size: MEDIUM 1094 * @tc.type: FUNC 1095 * @tc.level Level 1 1096 * @tc.require: SR000H63TL 1097 */ 1098HWTEST_F(ProvisionTest, provision_test044, testing::ext::TestSize.Level1) 1099{ 1100 ProfileInfo info; 1101 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app" 1102 "-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"develo" 1103 "per-id\":\"\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 1104 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 1105 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1106 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 1107 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 1108 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1109 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 1110 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 1111 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 1112 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 1113 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 1114 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 1115 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 1116 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 1117 "-----END CERTIFICATE-----\\n" 1118 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5" 1119 "948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B" 1120 "856AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"re" 1121 "stricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938" 1122 "-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"ver" 1123 "sion-code\":1,\"version-name\":\"1.0.0\"}"; 1124 AppProvisionVerifyResult result = ParseProvision(provision, info); 1125 EXPECT_FALSE(result == PROVISION_OK); 1126} 1127 1128/** 1129 * @tc.name: provision_test045 1130 * @tc.desc: Test function of ParseProvision() failed for development-certificate is empty.. 1131 * @tc.size: MEDIUM 1132 * @tc.type: FUNC 1133 * @tc.level Level 1 1134 * @tc.require: SR000H63TL 1135 */ 1136HWTEST_F(ProvisionTest, provision_test045, testing::ext::TestSize.Level1) 1137{ 1138 ProfileInfo info; 1139 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"a" 1140 "pp-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"dev" 1141 "eloper-id\":\"OpenHarmony\",\"development-certificate\":\"\"},\"debug-info\":{\"device-i" 1142 "d-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD530296054159EFE0BD16" 1143 "A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]},\"i" 1144 "ssuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"de" 1145 "bug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":17051275" 1146 "32,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}"; 1147 AppProvisionVerifyResult result = ParseProvision(provision, info); 1148 EXPECT_FALSE(result == PROVISION_OK); 1149} 1150 1151/** 1152 * @tc.name: provision_test046 1153 * @tc.desc: Test function of ParseProvision() distribution-certificate is empty.. 1154 * @tc.size: MEDIUM 1155 * @tc.type: FUNC 1156 * @tc.level Level 1 1157 * @tc.require: SR000H63TL 1158 */ 1159HWTEST_F(ProvisionTest, provision_test046, testing::ext::TestSize.Level1) 1160{ 1161 ProfileInfo info; 1162 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-in" 1163 "fo\":{\"app-feature\":\"\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"de" 1164 "veloper-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 1165 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 1166 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1167 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 1168 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 1169 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1170 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 1171 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 1172 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 1173 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 1174 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 1175 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 1176 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 1177 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 1178 "-----END CERTIFICATE-----\\n" 1179 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA59" 1180 "48C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B8" 1181 "56AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"re" 1182 "stricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-" 1183 "961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"ver" 1184 "sion-code\":1,\"version-name\":\"1.0.0\"}"; 1185 AppProvisionVerifyResult result = ParseProvision(provision, info); 1186 EXPECT_FALSE(result == PROVISION_OK); 1187} 1188 1189/** 1190 * @tc.name: provision_test047 1191 * @tc.desc: Test function of ParseProvision() interface for SUCCESS. 1192 * @tc.size: MEDIUM 1193 * @tc.type: FUNC 1194 * @tc.level Level 1 1195 * @tc.require: SR000H63TL 1196 */ 1197HWTEST_F(ProvisionTest, provision_test047, testing::ext::TestSize.Level1) 1198{ 1199 ProfileInfo info; 1200 std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"a" 1201 "pl\":\"apl_\",\"app-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemp" 1202 "latedemo\",\"developer-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n" 1203 "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n" 1204 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1205 "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n" 1206 "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n" 1207 "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n" 1208 "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n" 1209 "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n" 1210 "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n" 1211 "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n" 1212 "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n" 1213 "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n" 1214 "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n" 1215 "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n" 1216 "-----END CERTIFICATE-----\\n" 1217 "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA594" 1218 "8C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856A" 1219 "B10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restr" 1220 "icted-permissions\":[\"\"]},\"type\":\"debug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b" 1221 "140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"versio" 1222 "n-code\":3,\"version-name\":\"1.0.0\"}"; 1223 AppProvisionVerifyResult result = ParseProvision(provision, info); 1224 EXPECT_TRUE(result == PROVISION_OK); 1225} 1226 1227} 1228} 1229