154aa6d63Sopenharmony_ci/*
254aa6d63Sopenharmony_ci * Copyright (c) 2024-2024 Huawei Device Co., Ltd.
354aa6d63Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
454aa6d63Sopenharmony_ci * you may not use this file except in compliance with the License.
554aa6d63Sopenharmony_ci * You may obtain a copy of the License at
654aa6d63Sopenharmony_ci *
754aa6d63Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
854aa6d63Sopenharmony_ci *
954aa6d63Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1054aa6d63Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1154aa6d63Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1254aa6d63Sopenharmony_ci * See the License for the specific language governing permissions and
1354aa6d63Sopenharmony_ci * limitations under the License.
1454aa6d63Sopenharmony_ci */
1554aa6d63Sopenharmony_ci#include <chrono>
1654aa6d63Sopenharmony_ci#include <thread>
1754aa6d63Sopenharmony_ci#include <string>
1854aa6d63Sopenharmony_ci#include <filesystem>
1954aa6d63Sopenharmony_ci
2054aa6d63Sopenharmony_ci#include "gtest/gtest.h"
2154aa6d63Sopenharmony_ci#include "options.h"
2254aa6d63Sopenharmony_ci#include "sign_tool_service_impl.h"
2354aa6d63Sopenharmony_ci#include "nlohmann/json.hpp"
2454aa6d63Sopenharmony_ci#include "signer_factory.h"
2554aa6d63Sopenharmony_ci#include "profile_sign_tool.h"
2654aa6d63Sopenharmony_ci#include "params_run_tool.h"
2754aa6d63Sopenharmony_ci#include "pkcs7_data.h"
2854aa6d63Sopenharmony_ci#include "signer_config.h"
2954aa6d63Sopenharmony_ci#include "local_signer.h"
3054aa6d63Sopenharmony_ci#include "bc_pkcs7_generator.h"
3154aa6d63Sopenharmony_ci#include "bc_signeddata_generator.h"
3254aa6d63Sopenharmony_ci#include "profile_verify.h"
3354aa6d63Sopenharmony_ci#include "constant.h"
3454aa6d63Sopenharmony_ci#include "cms_utils.h"
3554aa6d63Sopenharmony_ci
3654aa6d63Sopenharmony_ciusing  nlohmann::json;
3754aa6d63Sopenharmony_ci
3854aa6d63Sopenharmony_cinamespace OHOS {
3954aa6d63Sopenharmony_cinamespace SignatureTools {
4054aa6d63Sopenharmony_ci
4154aa6d63Sopenharmony_ci// sign profile使用的全局参数
4254aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_MODE = "localSign";
4354aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_KEY_ALIAS = "oh-profile1-key-v1";
4454aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_PROFILE_CERT_FILE = "./signProfile/profile-release1.pem";
4554aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_SIGN_ALG = "SHA384withECDSA";
4654aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_KEY_STORE_FILE = "./signProfile/ohtest.p12";
4754aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_OUT_FILE = "./signProfile/signed-profile.p7b";
4854aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_IN_FILE = "./signProfile/profile.json";
4954aa6d63Sopenharmony_ci
5054aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_CERT_PEM = "./signProfile/profile-release1-cert.pem";
5154aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_REVERSE_PEM = "./signProfile/profile-release1-reverse.pem";
5254aa6d63Sopenharmony_cistatic const std::string SIGN_PROFILE_DOUBLE_CERT_PEM = "./signProfile/profile-release1-invalid_cert_chain.pem";
5354aa6d63Sopenharmony_ci
5454aa6d63Sopenharmony_ci// verify profile 使用的全局参数
5554aa6d63Sopenharmony_cistatic const std::string VERIFY_PROFILE_IN_FILE = "./signProfile/app1-profile1.p7b";
5654aa6d63Sopenharmony_cistatic const std::string VERIFY_PROFILE_OUT_FILE = "./signProfile/VerifyResult.json";
5754aa6d63Sopenharmony_ci// sign app 使用全局参数
5854aa6d63Sopenharmony_cistatic const std::string SIGN_APP_MODE = "localSign";
5954aa6d63Sopenharmony_cistatic const std::string SIGN_APP_KEY_ALIAS = "oh-app1-key-v1";
6054aa6d63Sopenharmony_cistatic const std::string SIGN_APP_APP_CERT_FILE = "./signProfile/app-release1.pem";
6154aa6d63Sopenharmony_cistatic const std::string SIGN_APP_PROFILE_FILE = "./signProfile/app1-profile1.p7b";
6254aa6d63Sopenharmony_cistatic const std::string SIGN_APP_IN_FILE = "./signProfile/unsigned.hap";
6354aa6d63Sopenharmony_cistatic const std::string SIGN_APP_IN_FILE_TXT = "./signProfile/unsigned.txt";
6454aa6d63Sopenharmony_cistatic const std::string SIGN_APP_SIGN_ALG = "SHA256withECDSA";
6554aa6d63Sopenharmony_cistatic const std::string SIGN_APP_KEY_STORE_FILE = "./signProfile/ohtest.p12";
6654aa6d63Sopenharmony_cistatic const std::string SIGN_APP_OUT_FILE = "./signProfile/signed.hap";
6754aa6d63Sopenharmony_ci
6854aa6d63Sopenharmony_ciclass ProvisionTest : public testing::Test {
6954aa6d63Sopenharmony_cipublic:
7054aa6d63Sopenharmony_ci    static void SetUpTestCase(void);
7154aa6d63Sopenharmony_ci    static void TearDownTestCase(void);
7254aa6d63Sopenharmony_ci    void SetUp()override;
7354aa6d63Sopenharmony_ci    void TearDown()override;
7454aa6d63Sopenharmony_ci};
7554aa6d63Sopenharmony_civoid ProvisionTest::SetUpTestCase(void)
7654aa6d63Sopenharmony_ci{
7754aa6d63Sopenharmony_ci    std::filesystem::copy(SIGN_APP_IN_FILE_TXT, SIGN_APP_IN_FILE);
7854aa6d63Sopenharmony_ci}
7954aa6d63Sopenharmony_ci
8054aa6d63Sopenharmony_civoid ProvisionTest::TearDownTestCase(void)
8154aa6d63Sopenharmony_ci{
8254aa6d63Sopenharmony_ci    std::filesystem::remove(SIGN_APP_IN_FILE);
8354aa6d63Sopenharmony_ci}
8454aa6d63Sopenharmony_ci
8554aa6d63Sopenharmony_civoid ProvisionTest::SetUp()
8654aa6d63Sopenharmony_ci{
8754aa6d63Sopenharmony_ci}
8854aa6d63Sopenharmony_ci
8954aa6d63Sopenharmony_civoid ProvisionTest::TearDown()
9054aa6d63Sopenharmony_ci{
9154aa6d63Sopenharmony_ci}
9254aa6d63Sopenharmony_ci
9354aa6d63Sopenharmony_ci/**
9454aa6d63Sopenharmony_ci * @tc.name: provision_test001
9554aa6d63Sopenharmony_ci * @tc.desc: Test function of LocalSigner::GetCrls() interface get NULL crls.
9654aa6d63Sopenharmony_ci * @tc.size: MEDIUM
9754aa6d63Sopenharmony_ci * @tc.type: FUNC
9854aa6d63Sopenharmony_ci * @tc.level Level 1
9954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
10054aa6d63Sopenharmony_ci */
10154aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test001, testing::ext::TestSize.Level1)
10254aa6d63Sopenharmony_ci{
10354aa6d63Sopenharmony_ci    EVP_PKEY* pkey = NULL;
10454aa6d63Sopenharmony_ci    STACK_OF(X509)* certs = NULL;
10554aa6d63Sopenharmony_ci    std::shared_ptr<LocalSigner> signer = std::make_shared<LocalSigner>(pkey, certs);
10654aa6d63Sopenharmony_ci    STACK_OF(X509_CRL)* crls = signer->GetCrls();
10754aa6d63Sopenharmony_ci    EXPECT_TRUE(crls == NULL);
10854aa6d63Sopenharmony_ci}
10954aa6d63Sopenharmony_ci
11054aa6d63Sopenharmony_ci/**
11154aa6d63Sopenharmony_ci * @tc.name: provision_test002
11254aa6d63Sopenharmony_ci * @tc.desc: Test function of LocalSigner::GetSignature() interface diffrent sign algorithm
11354aa6d63Sopenharmony_ci * for success only support SHA256/384withECDSA.
11454aa6d63Sopenharmony_ci * @tc.size: MEDIUM
11554aa6d63Sopenharmony_ci * @tc.type: FUNC
11654aa6d63Sopenharmony_ci * @tc.level Level 1
11754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
11854aa6d63Sopenharmony_ci */
11954aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test002, testing::ext::TestSize.Level1)
12054aa6d63Sopenharmony_ci{
12154aa6d63Sopenharmony_ci    std::string content = "signed content data";
12254aa6d63Sopenharmony_ci    Options options;
12354aa6d63Sopenharmony_ci    std::string mode = SIGN_PROFILE_MODE;
12454aa6d63Sopenharmony_ci    std::string keyAlias = SIGN_PROFILE_KEY_ALIAS;
12554aa6d63Sopenharmony_ci    std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE;
12654aa6d63Sopenharmony_ci    std::string signAlg = SIGN_PROFILE_SIGN_ALG;
12754aa6d63Sopenharmony_ci    std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE;
12854aa6d63Sopenharmony_ci    std::string outFile = SIGN_PROFILE_OUT_FILE;
12954aa6d63Sopenharmony_ci    std::string inFile = SIGN_PROFILE_IN_FILE;
13054aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
13154aa6d63Sopenharmony_ci    char keypwd[] = "123456";
13254aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = keyAlias;
13354aa6d63Sopenharmony_ci    options[Options::MODE] = mode;
13454aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = profileCertFile;
13554aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = signAlg;
13654aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = keystoreFile;
13754aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = outFile;
13854aa6d63Sopenharmony_ci    options[Options::IN_FILE] = inFile;
13954aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
14054aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
14154aa6d63Sopenharmony_ci
14254aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
14354aa6d63Sopenharmony_ci    SignerFactory factory;
14454aa6d63Sopenharmony_ci    std::shared_ptr<Signer> signer = factory.GetSigner(adapter);
14554aa6d63Sopenharmony_ci    std::string signature1 = signer->GetSignature(content, "SHA384withECDSA");
14654aa6d63Sopenharmony_ci    EXPECT_TRUE(signature1.size());
14754aa6d63Sopenharmony_ci    std::string signature2 = signer->GetSignature(content, "SHA256withECDSA");
14854aa6d63Sopenharmony_ci    EXPECT_TRUE(signature2.size());
14954aa6d63Sopenharmony_ci    std::string signature3 = signer->GetSignature(content, "SHA999withECDSA");
15054aa6d63Sopenharmony_ci    EXPECT_TRUE(signature3.empty());
15154aa6d63Sopenharmony_ci    std::string signature4 = signer->GetSignature("", "SHA384withECDSA");
15254aa6d63Sopenharmony_ci    EXPECT_FALSE(signature4.empty());
15354aa6d63Sopenharmony_ci}
15454aa6d63Sopenharmony_ci
15554aa6d63Sopenharmony_ci/**
15654aa6d63Sopenharmony_ci * @tc.name: provision_test003
15754aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for not debug/release provision.
15854aa6d63Sopenharmony_ci * @tc.size: MEDIUM
15954aa6d63Sopenharmony_ci * @tc.type: FUNC
16054aa6d63Sopenharmony_ci * @tc.level Level 1
16154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
16254aa6d63Sopenharmony_ci */
16354aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test003, testing::ext::TestSize.Level1)
16454aa6d63Sopenharmony_ci{
16554aa6d63Sopenharmony_ci    std::string provision = "{\"acls\":{\"allowed-acls\":[\"ac1\",\"ac2\"]},\"bundle-info\":{\"app-feature\":"
16654aa6d63Sopenharmony_ci        "\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-id\":\"OpenHarmony\","
16754aa6d63Sopenharmony_ci        "\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
16854aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
16954aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
17054aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
17154aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
17254aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
17354aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
17454aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
17554aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
17654aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
17754aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
17854aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
17954aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
18054aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
18154aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
18254aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD53029605"
18354aa6d63Sopenharmony_ci        "4159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]},"
18454aa6d63Sopenharmony_ci        "\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"invalid de"
18554aa6d63Sopenharmony_ci        "bug\",\"uuid\""
18654aa6d63Sopenharmony_ci        ":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532}"
18754aa6d63Sopenharmony_ci        ",\"version-code\":1,\"version-name\":\"1.0.0\",\"baseapp-info\":{\"package-name\":\"package_name\",\"packag"
18854aa6d63Sopenharmony_ci        "e-cert\":\"package_cert\"}}";
18954aa6d63Sopenharmony_ci    ProfileInfo info;
19054aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
19154aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
19254aa6d63Sopenharmony_ci}
19354aa6d63Sopenharmony_ci
19454aa6d63Sopenharmony_ci/**
19554aa6d63Sopenharmony_ci * @tc.name: provision_test004
19654aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() interface for SUCCESS.
19754aa6d63Sopenharmony_ci * @tc.size: MEDIUM
19854aa6d63Sopenharmony_ci * @tc.type: FUNC
19954aa6d63Sopenharmony_ci * @tc.level Level 1
20054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
20154aa6d63Sopenharmony_ci */
20254aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test004, testing::ext::TestSize.Level1)
20354aa6d63Sopenharmony_ci{
20454aa6d63Sopenharmony_ci    std::string provision = "{\"acls\":{\"allowed-acls\":[\"ac1\",\"ac2\"]},\"bundle-info\":{\"app-feature\":"
20554aa6d63Sopenharmony_ci        "\"hos_system_"
20654aa6d63Sopenharmony_ci        "app\",\"bundle-name\":\".*\",\"developer-id\":\"OpenHarmony\",\"development-certificate\":"
20754aa6d63Sopenharmony_ci        "\"-----BEGIN CERTIFICATE-----\\n"
20854aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
20954aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
21054aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
21154aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
21254aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
21354aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
21454aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
21554aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
21654aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
21754aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
21854aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
21954aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
22054aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
22154aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
22254aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD530296"
22354aa6d63Sopenharmony_ci        "054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]},\""
22454aa6d63Sopenharmony_ci        "issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"debug\",\"uuid"
22554aa6d63Sopenharmony_ci        "\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":161051"
22654aa6d63Sopenharmony_ci        "9532},\"version-code\":1,\"version-name\":\"1.0.0\",\"baseapp-info\":{\"package-name\":\"package_name\","
22754aa6d63Sopenharmony_ci        "\"package-cert\":\"package_cert\"}}";
22854aa6d63Sopenharmony_ci    ProfileInfo info2;
22954aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info2);
23054aa6d63Sopenharmony_ci    EXPECT_TRUE(result == PROVISION_OK);
23154aa6d63Sopenharmony_ci}
23254aa6d63Sopenharmony_ci/**
23354aa6d63Sopenharmony_ci * @tc.name: provision_test005
23454aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for not struct json.
23554aa6d63Sopenharmony_ci * @tc.size: MEDIUM
23654aa6d63Sopenharmony_ci * @tc.type: FUNC
23754aa6d63Sopenharmony_ci * @tc.level Level 1
23854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
23954aa6d63Sopenharmony_ci */
24054aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test005, testing::ext::TestSize.Level1)
24154aa6d63Sopenharmony_ci{
24254aa6d63Sopenharmony_ci    ProfileInfo info;
24354aa6d63Sopenharmony_ci    std::string provision = "55.2";
24454aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
24554aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
24654aa6d63Sopenharmony_ci}
24754aa6d63Sopenharmony_ci
24854aa6d63Sopenharmony_ci/**
24954aa6d63Sopenharmony_ci * @tc.name: provision_test006
25054aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for discarded json.
25154aa6d63Sopenharmony_ci * @tc.size: MEDIUM
25254aa6d63Sopenharmony_ci * @tc.type: FUNC
25354aa6d63Sopenharmony_ci * @tc.level Level 1
25454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
25554aa6d63Sopenharmony_ci */
25654aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test006, testing::ext::TestSize.Level1)
25754aa6d63Sopenharmony_ci{
25854aa6d63Sopenharmony_ci    ProfileInfo info;
25954aa6d63Sopenharmony_ci    std::string provision = "{\"name\": \"feixing\",\"age\": 18}+";
26054aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
26154aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
26254aa6d63Sopenharmony_ci}
26354aa6d63Sopenharmony_ci
26454aa6d63Sopenharmony_ci/**
26554aa6d63Sopenharmony_cin * @tc.name: provision_test009
26654aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProfile() interface for SUCCESS.
26754aa6d63Sopenharmony_ci * @tc.size: MEDIUM
26854aa6d63Sopenharmony_ci * @tc.type: FUNC
26954aa6d63Sopenharmony_ci * @tc.level Level 1
27054aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
27154aa6d63Sopenharmony_ci */
27254aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test009, testing::ext::TestSize.Level1)
27354aa6d63Sopenharmony_ci{
27454aa6d63Sopenharmony_ci    ProfileInfo info;
27554aa6d63Sopenharmony_ci    std::string provision = "[88,99,42,11,22]";
27654aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProfile(provision, info);
27754aa6d63Sopenharmony_ci    EXPECT_TRUE(result == PROVISION_OK);
27854aa6d63Sopenharmony_ci}
27954aa6d63Sopenharmony_ci
28054aa6d63Sopenharmony_ci/**
28154aa6d63Sopenharmony_ci * @tc.name: provision_test010
28254aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() interface for SUCCESS.
28354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
28454aa6d63Sopenharmony_ci * @tc.type: FUNC
28554aa6d63Sopenharmony_ci * @tc.level Level 1
28654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
28754aa6d63Sopenharmony_ci */
28854aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test010, testing::ext::TestSize.Level1)
28954aa6d63Sopenharmony_ci{
29054aa6d63Sopenharmony_ci    ProfileInfo info;
29154aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-feature\""
29254aa6d63Sopenharmony_ci        ":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-id\":\"OpenHarm"
29354aa6d63Sopenharmony_ci        "ony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
29454aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
29554aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
29654aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
29754aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
29854aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
29954aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
30054aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
30154aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
30254aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
30354aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
30454aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
30554aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
30654aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
30754aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
30854aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD"
30954aa6d63Sopenharmony_ci        "530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F95873"
31054aa6d63Sopenharmony_ci        "2865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":"
31154aa6d63Sopenharmony_ci        "\"debug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532"
31254aa6d63Sopenharmony_ci        ",\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}";
31354aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
31454aa6d63Sopenharmony_ci    EXPECT_TRUE(result == PROVISION_OK);
31554aa6d63Sopenharmony_ci}
31654aa6d63Sopenharmony_ci
31754aa6d63Sopenharmony_ci/**
31854aa6d63Sopenharmony_ci * @tc.name: provision_test014
31954aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() interface for SUCCESS.
32054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
32154aa6d63Sopenharmony_ci * @tc.type: FUNC
32254aa6d63Sopenharmony_ci * @tc.level Level 1
32354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
32454aa6d63Sopenharmony_ci */
32554aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test014, testing::ext::TestSize.Level1)
32654aa6d63Sopenharmony_ci{
32754aa6d63Sopenharmony_ci    ProfileInfo info;
32854aa6d63Sopenharmony_ci    std::string provision = "{\"app-privilege-capabilities\": [99,\"88\"],\"bundle-info\":{\"app"
32954aa6d63Sopenharmony_ci        "-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer"
33054aa6d63Sopenharmony_ci        "-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
33154aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
33254aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
33354aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
33454aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
33554aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
33654aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
33754aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
33854aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
33954aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
34054aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
34154aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
34254aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
34354aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
34454aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
34554aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB"
34654aa6d63Sopenharmony_ci        "44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7"
34754aa6d63Sopenharmony_ci        "679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\""
34854aa6d63Sopenharmony_ci        ":[\"\"]},\"type\":\"debug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":"
34954aa6d63Sopenharmony_ci        "{\"not-after\":1705127532,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}";
35054aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
35154aa6d63Sopenharmony_ci    EXPECT_TRUE(result == PROVISION_OK);
35254aa6d63Sopenharmony_ci}
35354aa6d63Sopenharmony_ci/**
35454aa6d63Sopenharmony_ci * @tc.name: provision_test019
35554aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for development-certificate is empty.
35654aa6d63Sopenharmony_ci * @tc.size: MEDIUM
35754aa6d63Sopenharmony_ci * @tc.type: FUNC
35854aa6d63Sopenharmony_ci * @tc.level Level 1
35954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
36054aa6d63Sopenharmony_ci */
36154aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test019, testing::ext::TestSize.Level1)
36254aa6d63Sopenharmony_ci{
36354aa6d63Sopenharmony_ci    ProfileInfo info;
36454aa6d63Sopenharmony_ci    std::string provision = "{\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-name\":\"com"
36554aa6d63Sopenharmony_ci        ".example.nativetemplatedemo\",\"developer-id\":\"OpenHarmony\",\"development-certificate\":\"\"},\""
36654aa6d63Sopenharmony_ci        "d""ebug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD53029"
36754aa6d63Sopenharmony_ci        "6054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F95873286"
36854aa6d63Sopenharmony_ci        "5\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"de"
36954aa6d63Sopenharmony_ci        "bug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"no"
37054aa6d63Sopenharmony_ci        "t-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}";
37154aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
37254aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
37354aa6d63Sopenharmony_ci}
37454aa6d63Sopenharmony_ci
37554aa6d63Sopenharmony_ci/**
37654aa6d63Sopenharmony_ci * @tc.name: provision_test021
37754aa6d63Sopenharmony_ci * @tc.desc: Test function of Provision operator==() interface stability.
37854aa6d63Sopenharmony_ci * @tc.size: MEDIUM
37954aa6d63Sopenharmony_ci * @tc.type: FUNC
38054aa6d63Sopenharmony_ci * @tc.level Level 1
38154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
38254aa6d63Sopenharmony_ci */
38354aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test021, testing::ext::TestSize.Level1)
38454aa6d63Sopenharmony_ci{
38554aa6d63Sopenharmony_ci    ProfileInfo info;
38654aa6d63Sopenharmony_ci    ProfileInfo info2;
38754aa6d63Sopenharmony_ci    info2.profileBlockLength = 0;
38854aa6d63Sopenharmony_ci    info = info2;
38954aa6d63Sopenharmony_ci    EXPECT_EQ(info.profileBlockLength, info2.profileBlockLength);
39054aa6d63Sopenharmony_ci}
39154aa6d63Sopenharmony_ci
39254aa6d63Sopenharmony_ci/**
39354aa6d63Sopenharmony_ci * @tc.name: provision_test023
39454aa6d63Sopenharmony_ci * @tc.desc: Test function of Provision operator==() interface stability.
39554aa6d63Sopenharmony_ci * @tc.size: MEDIUM
39654aa6d63Sopenharmony_ci * @tc.type: FUNC
39754aa6d63Sopenharmony_ci * @tc.level Level 1
39854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
39954aa6d63Sopenharmony_ci */
40054aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test023, testing::ext::TestSize.Level1)
40154aa6d63Sopenharmony_ci{
40254aa6d63Sopenharmony_ci    ProfileInfo info;
40354aa6d63Sopenharmony_ci    ProfileInfo info2;
40454aa6d63Sopenharmony_ci    info2.profileBlockLength = 5;
40554aa6d63Sopenharmony_ci    info2.profileBlock = NULL;
40654aa6d63Sopenharmony_ci    info = info2;
40754aa6d63Sopenharmony_ci    EXPECT_EQ(info.profileBlockLength, info2.profileBlockLength);
40854aa6d63Sopenharmony_ci}
40954aa6d63Sopenharmony_ci
41054aa6d63Sopenharmony_ci/**
41154aa6d63Sopenharmony_ci * @tc.name: provision_test025
41254aa6d63Sopenharmony_ci * @tc.desc: Test function of ProfileSignTool::GenerateP7b() failed for invalid keyStorePassword.
41354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
41454aa6d63Sopenharmony_ci * @tc.type: FUNC
41554aa6d63Sopenharmony_ci * @tc.level Level 1
41654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
41754aa6d63Sopenharmony_ci */
41854aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test025, testing::ext::TestSize.Level1)
41954aa6d63Sopenharmony_ci{
42054aa6d63Sopenharmony_ci    Options options;
42154aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
42254aa6d63Sopenharmony_ci    char invalidKeyPwd[] = "12345";
42354aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS;
42454aa6d63Sopenharmony_ci    options[Options::MODE] = SIGN_PROFILE_MODE;
42554aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE;
42654aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG;
42754aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE;
42854aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE;
42954aa6d63Sopenharmony_ci    options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE;
43054aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = invalidKeyPwd;
43154aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
43254aa6d63Sopenharmony_ci
43354aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
43454aa6d63Sopenharmony_ci    std::string content = "json content";
43554aa6d63Sopenharmony_ci    std::string ret;
43654aa6d63Sopenharmony_ci    int result = ProfileSignTool::GenerateP7b(adapter, content, ret);
43754aa6d63Sopenharmony_ci    EXPECT_FALSE(result == 0);
43854aa6d63Sopenharmony_ci}
43954aa6d63Sopenharmony_ci
44054aa6d63Sopenharmony_ci/**
44154aa6d63Sopenharmony_ci * @tc.name: provision_test026
44254aa6d63Sopenharmony_ci * @tc.desc: Test function of ProfileSignTool::GenerateP7b() failed for invalid sign algorithm.
44354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
44454aa6d63Sopenharmony_ci * @tc.type: FUNC
44554aa6d63Sopenharmony_ci * @tc.level Level 1
44654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
44754aa6d63Sopenharmony_ci */
44854aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test026, testing::ext::TestSize.Level1)
44954aa6d63Sopenharmony_ci{
45054aa6d63Sopenharmony_ci    Options options;
45154aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
45254aa6d63Sopenharmony_ci    char keypwd[] = "123456";
45354aa6d63Sopenharmony_ci    std::string invalid_sigAlg = "SHA385withECDSA";
45454aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS;
45554aa6d63Sopenharmony_ci    options[Options::MODE] = SIGN_PROFILE_MODE;
45654aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE;
45754aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = invalid_sigAlg;
45854aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE;
45954aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE;
46054aa6d63Sopenharmony_ci    options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE;
46154aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
46254aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
46354aa6d63Sopenharmony_ci
46454aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
46554aa6d63Sopenharmony_ci    std::string content = "json content";
46654aa6d63Sopenharmony_ci    std::string ret;
46754aa6d63Sopenharmony_ci    int result = ProfileSignTool::GenerateP7b(adapter, content, ret);
46854aa6d63Sopenharmony_ci    EXPECT_FALSE(result == 0);
46954aa6d63Sopenharmony_ci}
47054aa6d63Sopenharmony_ci
47154aa6d63Sopenharmony_ci/**
47254aa6d63Sopenharmony_ci * @tc.name: provision_test027
47354aa6d63Sopenharmony_ci * @tc.desc: Test function of ProfileSignTool::GenerateP7b() interface for SUCCESS.
47454aa6d63Sopenharmony_ci * @tc.size: MEDIUM
47554aa6d63Sopenharmony_ci * @tc.type: FUNC
47654aa6d63Sopenharmony_ci * @tc.level Level 1
47754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
47854aa6d63Sopenharmony_ci */
47954aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test027, testing::ext::TestSize.Level1)
48054aa6d63Sopenharmony_ci{
48154aa6d63Sopenharmony_ci    Options options;
48254aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
48354aa6d63Sopenharmony_ci    char keypwd[] = "123456";
48454aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS;
48554aa6d63Sopenharmony_ci    options[Options::MODE] = SIGN_PROFILE_MODE;
48654aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE;
48754aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG;
48854aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE;
48954aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE;
49054aa6d63Sopenharmony_ci    options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE;
49154aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
49254aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
49354aa6d63Sopenharmony_ci
49454aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
49554aa6d63Sopenharmony_ci    std::string content = "json content";
49654aa6d63Sopenharmony_ci    std::string ret;
49754aa6d63Sopenharmony_ci    int result = ProfileSignTool::GenerateP7b(adapter, content, ret);
49854aa6d63Sopenharmony_ci    EXPECT_TRUE(result == 0);
49954aa6d63Sopenharmony_ci}
50054aa6d63Sopenharmony_ci
50154aa6d63Sopenharmony_ci/**
50254aa6d63Sopenharmony_ci * @tc.name: provision_test028
50354aa6d63Sopenharmony_ci * @tc.desc: Test function of ProfileSignTool::SignProfile() interface for SUCCESS.
50454aa6d63Sopenharmony_ci * @tc.size: MEDIUM
50554aa6d63Sopenharmony_ci * @tc.type: FUNC
50654aa6d63Sopenharmony_ci * @tc.level Level 1
50754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
50854aa6d63Sopenharmony_ci */
50954aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test028, testing::ext::TestSize.Level1)
51054aa6d63Sopenharmony_ci{
51154aa6d63Sopenharmony_ci    Options options;
51254aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
51354aa6d63Sopenharmony_ci    char keypwd[] = "123456";
51454aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS;
51554aa6d63Sopenharmony_ci    options[Options::MODE] = SIGN_PROFILE_MODE;
51654aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_PROFILE_CERT_FILE;
51754aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG;
51854aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE;
51954aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE;
52054aa6d63Sopenharmony_ci    options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE;
52154aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
52254aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
52354aa6d63Sopenharmony_ci
52454aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
52554aa6d63Sopenharmony_ci    SignerFactory factory;
52654aa6d63Sopenharmony_ci    std::shared_ptr<Signer> signer = factory.GetSigner(adapter);
52754aa6d63Sopenharmony_ci    std::string content = "json content";
52854aa6d63Sopenharmony_ci    std::string ret;
52954aa6d63Sopenharmony_ci    int result = ProfileSignTool::SignProfile(content, signer, SIGN_PROFILE_SIGN_ALG, ret);
53054aa6d63Sopenharmony_ci    EXPECT_TRUE(result == 0);
53154aa6d63Sopenharmony_ci}
53254aa6d63Sopenharmony_ci
53354aa6d63Sopenharmony_ci/**
53454aa6d63Sopenharmony_ci * @tc.name: provision_test029
53554aa6d63Sopenharmony_ci * @tc.desc: Test function of ProfileSignTool::GenerateP7b() failed for invalid certchain.
53654aa6d63Sopenharmony_ci * @tc.size: MEDIUM
53754aa6d63Sopenharmony_ci * @tc.type: FUNC
53854aa6d63Sopenharmony_ci * @tc.level Level 1
53954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
54054aa6d63Sopenharmony_ci */
54154aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test029, testing::ext::TestSize.Level1)
54254aa6d63Sopenharmony_ci{
54354aa6d63Sopenharmony_ci    Options options;
54454aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
54554aa6d63Sopenharmony_ci    char keypwd[] = "123456";
54654aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS;
54754aa6d63Sopenharmony_ci    options[Options::MODE] = SIGN_PROFILE_MODE;
54854aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_CERT_PEM;
54954aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG;
55054aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE;
55154aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE;
55254aa6d63Sopenharmony_ci    options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE;
55354aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
55454aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
55554aa6d63Sopenharmony_ci
55654aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
55754aa6d63Sopenharmony_ci    std::string content = "json content";
55854aa6d63Sopenharmony_ci    std::string ret;
55954aa6d63Sopenharmony_ci    int result = ProfileSignTool::GenerateP7b(adapter, content, ret);
56054aa6d63Sopenharmony_ci    EXPECT_FALSE(result == 0);
56154aa6d63Sopenharmony_ci}
56254aa6d63Sopenharmony_ci
56354aa6d63Sopenharmony_ci/**
56454aa6d63Sopenharmony_ci * @tc.name: provision_test030
56554aa6d63Sopenharmony_ci * @tc.desc: Test function of ProfileSignTool::GenerateP7b() failed for invalid certichain.
56654aa6d63Sopenharmony_ci * @tc.size: MEDIUM
56754aa6d63Sopenharmony_ci * @tc.type: FUNC
56854aa6d63Sopenharmony_ci * @tc.level Level 1
56954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
57054aa6d63Sopenharmony_ci */
57154aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test030, testing::ext::TestSize.Level1)
57254aa6d63Sopenharmony_ci{
57354aa6d63Sopenharmony_ci    Options options;
57454aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
57554aa6d63Sopenharmony_ci    char keypwd[] = "123456";
57654aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = SIGN_PROFILE_KEY_ALIAS;
57754aa6d63Sopenharmony_ci    options[Options::MODE] = SIGN_PROFILE_MODE;
57854aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = SIGN_PROFILE_DOUBLE_CERT_PEM;
57954aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = SIGN_PROFILE_SIGN_ALG;
58054aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = SIGN_PROFILE_KEY_STORE_FILE;
58154aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = SIGN_PROFILE_OUT_FILE;
58254aa6d63Sopenharmony_ci    options[Options::IN_FILE] = SIGN_PROFILE_IN_FILE;
58354aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
58454aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
58554aa6d63Sopenharmony_ci
58654aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
58754aa6d63Sopenharmony_ci    std::string content = "json content";
58854aa6d63Sopenharmony_ci    std::string ret;
58954aa6d63Sopenharmony_ci    int result = ProfileSignTool::GenerateP7b(adapter, content, ret);
59054aa6d63Sopenharmony_ci    EXPECT_FALSE(result == 0);
59154aa6d63Sopenharmony_ci}
59254aa6d63Sopenharmony_ci
59354aa6d63Sopenharmony_ci/**
59454aa6d63Sopenharmony_ci * @tc.name: provision_test031
59554aa6d63Sopenharmony_ci * @tc.desc: Test function of LocalSigner::GetCrls() interface get NULL crls.
59654aa6d63Sopenharmony_ci * @tc.size: MEDIUM
59754aa6d63Sopenharmony_ci * @tc.type: FUNC
59854aa6d63Sopenharmony_ci * @tc.level Level 1
59954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
60054aa6d63Sopenharmony_ci */
60154aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test031, testing::ext::TestSize.Level1)
60254aa6d63Sopenharmony_ci{
60354aa6d63Sopenharmony_ci    Options options;
60454aa6d63Sopenharmony_ci    std::string mode = SIGN_PROFILE_MODE;
60554aa6d63Sopenharmony_ci    std::string keyAlias = SIGN_PROFILE_KEY_ALIAS;
60654aa6d63Sopenharmony_ci    std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE;
60754aa6d63Sopenharmony_ci    std::string signAlg = SIGN_PROFILE_SIGN_ALG;
60854aa6d63Sopenharmony_ci    std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE;
60954aa6d63Sopenharmony_ci    std::string outFile = SIGN_PROFILE_OUT_FILE;
61054aa6d63Sopenharmony_ci    std::string inFile = SIGN_PROFILE_IN_FILE;
61154aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
61254aa6d63Sopenharmony_ci    char keypwd[] = "123456";
61354aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = keyAlias;
61454aa6d63Sopenharmony_ci    options[Options::MODE] = mode;
61554aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = profileCertFile;
61654aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = signAlg;
61754aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = keystoreFile;
61854aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = outFile;
61954aa6d63Sopenharmony_ci    options[Options::IN_FILE] = inFile;
62054aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
62154aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
62254aa6d63Sopenharmony_ci
62354aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
62454aa6d63Sopenharmony_ci    SignerFactory factory;
62554aa6d63Sopenharmony_ci    std::shared_ptr<Signer> signer = factory.GetSigner(adapter);
62654aa6d63Sopenharmony_ci    STACK_OF(X509_CRL)* crls = signer->GetCrls();
62754aa6d63Sopenharmony_ci    EXPECT_TRUE(crls == NULL);
62854aa6d63Sopenharmony_ci}
62954aa6d63Sopenharmony_ci
63054aa6d63Sopenharmony_ci/**
63154aa6d63Sopenharmony_ci * @tc.name: provision_test032
63254aa6d63Sopenharmony_ci * @tc.desc: Test function of LocalSigner() constructor.
63354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
63454aa6d63Sopenharmony_ci * @tc.type: FUNC
63554aa6d63Sopenharmony_ci * @tc.level Level 1
63654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
63754aa6d63Sopenharmony_ci */
63854aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test032, testing::ext::TestSize.Level1)
63954aa6d63Sopenharmony_ci{
64054aa6d63Sopenharmony_ci    Options options;
64154aa6d63Sopenharmony_ci    std::string mode = SIGN_PROFILE_MODE;
64254aa6d63Sopenharmony_ci    std::string keyAlias = SIGN_PROFILE_KEY_ALIAS;
64354aa6d63Sopenharmony_ci    std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE;
64454aa6d63Sopenharmony_ci    std::string signAlg = SIGN_PROFILE_SIGN_ALG;
64554aa6d63Sopenharmony_ci    std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE;
64654aa6d63Sopenharmony_ci    std::string outFile = SIGN_PROFILE_OUT_FILE;
64754aa6d63Sopenharmony_ci    std::string inFile = SIGN_PROFILE_IN_FILE;
64854aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
64954aa6d63Sopenharmony_ci    char keypwd[] = "123456";
65054aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = keyAlias;
65154aa6d63Sopenharmony_ci    options[Options::MODE] = mode;
65254aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = profileCertFile;
65354aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = signAlg;
65454aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = keystoreFile;
65554aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = outFile;
65654aa6d63Sopenharmony_ci    options[Options::IN_FILE] = inFile;
65754aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
65854aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
65954aa6d63Sopenharmony_ci
66054aa6d63Sopenharmony_ci    EVP_PKEY* pkey = NULL;
66154aa6d63Sopenharmony_ci    STACK_OF(X509)* certs = NULL;
66254aa6d63Sopenharmony_ci    std::shared_ptr<Signer> signer = NULL;
66354aa6d63Sopenharmony_ci    signer = std::make_shared<LocalSigner>(pkey, certs);
66454aa6d63Sopenharmony_ci    EXPECT_NE(signer, nullptr);
66554aa6d63Sopenharmony_ci}
66654aa6d63Sopenharmony_ci
66754aa6d63Sopenharmony_ci/**
66854aa6d63Sopenharmony_ci * @tc.name: provision_test033
66954aa6d63Sopenharmony_ci * @tc.desc: Test function of LocalSigner() interface constructor.
67054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
67154aa6d63Sopenharmony_ci * @tc.type: FUNC
67254aa6d63Sopenharmony_ci * @tc.level Level 1
67354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
67454aa6d63Sopenharmony_ci */
67554aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test033, testing::ext::TestSize.Level1)
67654aa6d63Sopenharmony_ci{
67754aa6d63Sopenharmony_ci    Options options;
67854aa6d63Sopenharmony_ci    std::string mode = SIGN_PROFILE_MODE;
67954aa6d63Sopenharmony_ci    std::string keyAlias = SIGN_PROFILE_KEY_ALIAS;
68054aa6d63Sopenharmony_ci    std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE;
68154aa6d63Sopenharmony_ci    std::string signAlg = SIGN_PROFILE_SIGN_ALG;
68254aa6d63Sopenharmony_ci    std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE;
68354aa6d63Sopenharmony_ci    std::string outFile = SIGN_PROFILE_OUT_FILE;
68454aa6d63Sopenharmony_ci    std::string inFile = SIGN_PROFILE_IN_FILE;
68554aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
68654aa6d63Sopenharmony_ci    char keypwd[] = "123456";
68754aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = keyAlias;
68854aa6d63Sopenharmony_ci    options[Options::MODE] = mode;
68954aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = profileCertFile;
69054aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = signAlg;
69154aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = keystoreFile;
69254aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = outFile;
69354aa6d63Sopenharmony_ci    options[Options::IN_FILE] = inFile;
69454aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
69554aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
69654aa6d63Sopenharmony_ci
69754aa6d63Sopenharmony_ci    EVP_PKEY* pkey = NULL;
69854aa6d63Sopenharmony_ci    STACK_OF(X509)* certs = NULL;
69954aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
70054aa6d63Sopenharmony_ci    pkey = adapter.GetAliasKey(false);
70154aa6d63Sopenharmony_ci    std::shared_ptr<Signer> signer = std::make_shared<LocalSigner>(pkey, certs);
70254aa6d63Sopenharmony_ci    EXPECT_NE(signer, nullptr);
70354aa6d63Sopenharmony_ci}
70454aa6d63Sopenharmony_ci
70554aa6d63Sopenharmony_ci/**
70654aa6d63Sopenharmony_ci * @tc.name: provision_test034
70754aa6d63Sopenharmony_ci * @tc.desc: Test function of LocalSigner() interface constructor.
70854aa6d63Sopenharmony_ci * @tc.size: MEDIUM
70954aa6d63Sopenharmony_ci * @tc.type: FUNC
71054aa6d63Sopenharmony_ci * @tc.level Level 1
71154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
71254aa6d63Sopenharmony_ci */
71354aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test034, testing::ext::TestSize.Level1)
71454aa6d63Sopenharmony_ci{
71554aa6d63Sopenharmony_ci    Options options;
71654aa6d63Sopenharmony_ci    std::string mode = SIGN_PROFILE_MODE;
71754aa6d63Sopenharmony_ci    std::string keyAlias = SIGN_PROFILE_KEY_ALIAS;
71854aa6d63Sopenharmony_ci    std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE;
71954aa6d63Sopenharmony_ci    std::string signAlg = SIGN_PROFILE_SIGN_ALG;
72054aa6d63Sopenharmony_ci    std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE;
72154aa6d63Sopenharmony_ci    std::string outFile = SIGN_PROFILE_OUT_FILE;
72254aa6d63Sopenharmony_ci    std::string inFile = SIGN_PROFILE_IN_FILE;
72354aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
72454aa6d63Sopenharmony_ci    char keypwd[] = "123456";
72554aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = keyAlias;
72654aa6d63Sopenharmony_ci    options[Options::MODE] = mode;
72754aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = profileCertFile;
72854aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = signAlg;
72954aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = keystoreFile;
73054aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = outFile;
73154aa6d63Sopenharmony_ci    options[Options::IN_FILE] = inFile;
73254aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
73354aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
73454aa6d63Sopenharmony_ci
73554aa6d63Sopenharmony_ci    EVP_PKEY* pkey = NULL;
73654aa6d63Sopenharmony_ci    STACK_OF(X509)* certs = sk_X509_new(NULL);
73754aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
73854aa6d63Sopenharmony_ci    pkey = adapter.GetAliasKey(false);
73954aa6d63Sopenharmony_ci    std::shared_ptr<Signer> signer = std::make_shared<LocalSigner>(pkey, certs);
74054aa6d63Sopenharmony_ci    EXPECT_NE(signer, nullptr);
74154aa6d63Sopenharmony_ci}
74254aa6d63Sopenharmony_ci
74354aa6d63Sopenharmony_ci/**
74454aa6d63Sopenharmony_ci * @tc.name: provision_test035
74554aa6d63Sopenharmony_ci * @tc.desc: Test function of GetSignature::GetSignature() interface for SUCCESS.
74654aa6d63Sopenharmony_ci * @tc.size: MEDIUM
74754aa6d63Sopenharmony_ci * @tc.type: FUNC
74854aa6d63Sopenharmony_ci * @tc.level Level 1
74954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
75054aa6d63Sopenharmony_ci */
75154aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test035, testing::ext::TestSize.Level1)
75254aa6d63Sopenharmony_ci{
75354aa6d63Sopenharmony_ci    Options options;
75454aa6d63Sopenharmony_ci    std::string mode = SIGN_PROFILE_MODE;
75554aa6d63Sopenharmony_ci    std::string keyAlias = SIGN_PROFILE_KEY_ALIAS;
75654aa6d63Sopenharmony_ci    std::string profileCertFile = SIGN_PROFILE_PROFILE_CERT_FILE;
75754aa6d63Sopenharmony_ci    std::string signAlg = SIGN_PROFILE_SIGN_ALG;
75854aa6d63Sopenharmony_ci    std::string keystoreFile = SIGN_PROFILE_KEY_STORE_FILE;
75954aa6d63Sopenharmony_ci    std::string outFile = SIGN_PROFILE_OUT_FILE;
76054aa6d63Sopenharmony_ci    std::string inFile = SIGN_PROFILE_IN_FILE;
76154aa6d63Sopenharmony_ci    char keyStorePwd[] = "123456";
76254aa6d63Sopenharmony_ci    char keypwd[] = "123456";
76354aa6d63Sopenharmony_ci    options[Options::KEY_ALIAS] = keyAlias;
76454aa6d63Sopenharmony_ci    options[Options::MODE] = mode;
76554aa6d63Sopenharmony_ci    options[Options::PROFILE_CERT_FILE] = profileCertFile;
76654aa6d63Sopenharmony_ci    options[Options::SIGN_ALG] = signAlg;
76754aa6d63Sopenharmony_ci    options[Options::KEY_STORE_FILE] = keystoreFile;
76854aa6d63Sopenharmony_ci    options[Options::OUT_FILE] = outFile;
76954aa6d63Sopenharmony_ci    options[Options::IN_FILE] = inFile;
77054aa6d63Sopenharmony_ci    options[Options::KEY_RIGHTS] = keypwd;
77154aa6d63Sopenharmony_ci    options[Options::KEY_STORE_RIGHTS] = keyStorePwd;
77254aa6d63Sopenharmony_ci
77354aa6d63Sopenharmony_ci    EVP_PKEY* pkey = NULL;
77454aa6d63Sopenharmony_ci    LocalizationAdapter adapter(&options);
77554aa6d63Sopenharmony_ci    SignerFactory factory;
77654aa6d63Sopenharmony_ci    std::shared_ptr<Signer> signer = factory.GetSigner(adapter);
77754aa6d63Sopenharmony_ci    STACK_OF(X509)* certs = signer->GetCertificates();
77854aa6d63Sopenharmony_ci    STACK_OF(X509)* certsDup = sk_X509_new(NULL);
77954aa6d63Sopenharmony_ci    X509* cert = sk_X509_value(certs, 0);
78054aa6d63Sopenharmony_ci    X509_up_ref(cert);
78154aa6d63Sopenharmony_ci    sk_X509_push(certsDup, cert);
78254aa6d63Sopenharmony_ci    std::shared_ptr<Signer> signer2 = std::make_shared<LocalSigner>(pkey, certsDup);
78354aa6d63Sopenharmony_ci    std::string signature = signer2->GetSignature("content", "SHA384withECDSA");
78454aa6d63Sopenharmony_ci    EXPECT_NE(signer, nullptr);
78554aa6d63Sopenharmony_ci}
78654aa6d63Sopenharmony_ci
78754aa6d63Sopenharmony_ci/**
78854aa6d63Sopenharmony_ci * @tc.name: provision_test036
78954aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty.
79054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
79154aa6d63Sopenharmony_ci * @tc.type: FUNC
79254aa6d63Sopenharmony_ci * @tc.level Level 1
79354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
79454aa6d63Sopenharmony_ci */
79554aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test036, testing::ext::TestSize.Level1)
79654aa6d63Sopenharmony_ci{
79754aa6d63Sopenharmony_ci    ProfileInfo info;
79854aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"app-distribution-type"
79954aa6d63Sopenharmony_ci        "\": \"app_gallery\",\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-name\":\"co"
80054aa6d63Sopenharmony_ci        "m.example.nativetemplatedemo\",\"developer-id\":\"OpenHarmony\",\"development-certifica"
80154aa6d63Sopenharmony_ci        "te\":\"-----BEGIN CERTIFICATE-----\\n"
80254aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
80354aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
80454aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
80554aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
80654aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
80754aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
80854aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
80954aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
81054aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
81154aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
81254aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
81354aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
81454aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
81554aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
81654aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD530"
81754aa6d63Sopenharmony_ci        "296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865"
81854aa6d63Sopenharmony_ci        "\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"re"
81954aa6d63Sopenharmony_ci        "lease\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"n"
82054aa6d63Sopenharmony_ci        "ot-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}";
82154aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
82254aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
82354aa6d63Sopenharmony_ci}
82454aa6d63Sopenharmony_ci
82554aa6d63Sopenharmony_ci/**
82654aa6d63Sopenharmony_ci * @tc.name: provision_test037
82754aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty.
82854aa6d63Sopenharmony_ci * @tc.size: MEDIUM
82954aa6d63Sopenharmony_ci * @tc.type: FUNC
83054aa6d63Sopenharmony_ci * @tc.level Level 1
83154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
83254aa6d63Sopenharmony_ci */
83354aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test037, testing::ext::TestSize.Level1)
83454aa6d63Sopenharmony_ci{
83554aa6d63Sopenharmony_ci    ProfileInfo info;
83654aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-featur"
83754aa6d63Sopenharmony_ci        "e\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-id\":\"Ope"
83854aa6d63Sopenharmony_ci        "nHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
83954aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
84054aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
84154aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
84254aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
84354aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
84454aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
84554aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
84654aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
84754aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
84854aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
84954aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
85054aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
85154aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
85254aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
85354aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44A"
85454aa6d63Sopenharmony_ci        "BCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73"
85554aa6d63Sopenharmony_ci        "F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]"
85654aa6d63Sopenharmony_ci        "},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-a"
85754aa6d63Sopenharmony_ci        "fter\":1705127532,\"not-before\":1610519532},\"version-code\":0,\"version-name\":\"1.0.0\"}";
85854aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
85954aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
86054aa6d63Sopenharmony_ci}
86154aa6d63Sopenharmony_ci
86254aa6d63Sopenharmony_ci/**
86354aa6d63Sopenharmony_ci * @tc.name: provision_test038
86454aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty.
86554aa6d63Sopenharmony_ci * @tc.size: MEDIUM
86654aa6d63Sopenharmony_ci * @tc.type: FUNC
86754aa6d63Sopenharmony_ci * @tc.level Level 1
86854aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
86954aa6d63Sopenharmony_ci */
87054aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test038, testing::ext::TestSize.Level1)
87154aa6d63Sopenharmony_ci{
87254aa6d63Sopenharmony_ci    ProfileInfo info;
87354aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-fea"
87454aa6d63Sopenharmony_ci        "ture\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-id\":\""
87554aa6d63Sopenharmony_ci        "OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
87654aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
87754aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
87854aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
87954aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
88054aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
88154aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
88254aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
88354aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
88454aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
88554aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
88654aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
88754aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
88854aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
88954aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
89054aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0C"
89154aa6d63Sopenharmony_ci        "B44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718"
89254aa6d63Sopenharmony_ci        "C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-permission"
89354aa6d63Sopenharmony_ci        "s\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"valid"
89454aa6d63Sopenharmony_ci        "ity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"version-code_no\":0,\"ver"
89554aa6d63Sopenharmony_ci        "sion-name\":\"1.0.0\"}";
89654aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
89754aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
89854aa6d63Sopenharmony_ci}
89954aa6d63Sopenharmony_ci
90054aa6d63Sopenharmony_ci/**
90154aa6d63Sopenharmony_ci * @tc.name: provision_test039
90254aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty.
90354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
90454aa6d63Sopenharmony_ci * @tc.type: FUNC
90554aa6d63Sopenharmony_ci * @tc.level Level 1
90654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
90754aa6d63Sopenharmony_ci */
90854aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test039, testing::ext::TestSize.Level1)
90954aa6d63Sopenharmony_ci{
91054aa6d63Sopenharmony_ci    ProfileInfo info;
91154aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app-f"
91254aa6d63Sopenharmony_ci        "eature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"developer-"
91354aa6d63Sopenharmony_ci        "id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
91454aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
91554aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
91654aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
91754aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
91854aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
91954aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
92054aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
92154aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
92254aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
92354aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
92454aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
92554aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
92654aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
92754aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
92854aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69"
92954aa6d63Sopenharmony_ci        "C7505BE341BDA5948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7E"
93054aa6d63Sopenharmony_ci        "ED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]},\"is"
93154aa6d63Sopenharmony_ci        "suer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"t"
93254aa6d63Sopenharmony_ci        "ype\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"no"
93354aa6d63Sopenharmony_ci        "t-after\":1705127532,\"not-before\":1610519532},\"version-code\":\"0\",\"version-name\":\"1.0.0\"}";
93454aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
93554aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
93654aa6d63Sopenharmony_ci}
93754aa6d63Sopenharmony_ci
93854aa6d63Sopenharmony_ci/**
93954aa6d63Sopenharmony_ci * @tc.name: provision_test040
94054aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty.
94154aa6d63Sopenharmony_ci * @tc.size: MEDIUM
94254aa6d63Sopenharmony_ci * @tc.type: FUNC
94354aa6d63Sopenharmony_ci * @tc.level Level 1
94454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
94554aa6d63Sopenharmony_ci */
94654aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test040, testing::ext::TestSize.Level1)
94754aa6d63Sopenharmony_ci{
94854aa6d63Sopenharmony_ci    ProfileInfo info;
94954aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"app-privilege-cap"
95054aa6d63Sopenharmony_ci        "abilities\": [99,\"88\"],\"bundle-info\":{\"app-feature\":\"hos_system_app\",\"bundle-"
95154aa6d63Sopenharmony_ci        "name\":\"com.example.nativetemplatedemo\",\"developer-id\":\"OpenHarmony\",\"develop"
95254aa6d63Sopenharmony_ci        "ment-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
95354aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
95454aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
95554aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
95654aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
95754aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
95854aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
95954aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
96054aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
96154aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
96254aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
96354aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
96454aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
96554aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
96654aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
96754aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341B"
96854aa6d63Sopenharmony_ci        "DA5948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2F"
96954aa6d63Sopenharmony_ci        "AA019458B856AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"perm"
97054aa6d63Sopenharmony_ci        "issions\":{\"restricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe6"
97154aa6d63Sopenharmony_ci        "86e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-bef"
97254aa6d63Sopenharmony_ci        "ore\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}";
97354aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
97454aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
97554aa6d63Sopenharmony_ci}
97654aa6d63Sopenharmony_ci
97754aa6d63Sopenharmony_ci/**
97854aa6d63Sopenharmony_ci * @tc.name: provision_test041
97954aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty.
98054aa6d63Sopenharmony_ci * @tc.size: MEDIUM
98154aa6d63Sopenharmony_ci * @tc.type: FUNC
98254aa6d63Sopenharmony_ci * @tc.level Level 1
98354aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
98454aa6d63Sopenharmony_ci */
98554aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test041, testing::ext::TestSize.Level1)
98654aa6d63Sopenharmony_ci{
98754aa6d63Sopenharmony_ci    ProfileInfo info;
98854aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-in"
98954aa6d63Sopenharmony_ci        "fo\":{\"app-feature\":\"hos_system_app\",\"bundle-name\":\"\",\"developer-id\":\"Op"
99054aa6d63Sopenharmony_ci        "enHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
99154aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
99254aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
99354aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
99454aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
99554aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
99654aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
99754aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
99854aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
99954aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
100054aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
100154aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
100254aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
100354aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
100454aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
100554aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA"
100654aa6d63Sopenharmony_ci        "5948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA0194"
100754aa6d63Sopenharmony_ci        "58B856AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions"
100854aa6d63Sopenharmony_ci        "\":{\"restricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-37"
100954aa6d63Sopenharmony_ci        "70-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610"
101054aa6d63Sopenharmony_ci        "519532},\"version-code\":1,\"version-name\":\"1.0.0\"}";
101154aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
101254aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
101354aa6d63Sopenharmony_ci}
101454aa6d63Sopenharmony_ci
101554aa6d63Sopenharmony_ci/**
101654aa6d63Sopenharmony_ci * @tc.name: provision_test042
101754aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty.
101854aa6d63Sopenharmony_ci * @tc.size: MEDIUM
101954aa6d63Sopenharmony_ci * @tc.type: FUNC
102054aa6d63Sopenharmony_ci * @tc.level Level 1
102154aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
102254aa6d63Sopenharmony_ci */
102354aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test042, testing::ext::TestSize.Level1)
102454aa6d63Sopenharmony_ci{
102554aa6d63Sopenharmony_ci    ProfileInfo info;
102654aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"ap"
102754aa6d63Sopenharmony_ci        "p-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"devel"
102854aa6d63Sopenharmony_ci        "oper-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
102954aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
103054aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
103154aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
103254aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
103354aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
103454aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
103554aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
103654aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
103754aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
103854aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
103954aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
104054aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
104154aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
104254aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
104354aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C"
104454aa6d63Sopenharmony_ci        "0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493"
104554aa6d63Sopenharmony_ci        "A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restricted-pe"
104654aa6d63Sopenharmony_ci        "rmissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c9"
104754aa6d63Sopenharmony_ci        "8\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"version-code\":"
104854aa6d63Sopenharmony_ci        "1,\"version-name\":\"\"}";
104954aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
105054aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
105154aa6d63Sopenharmony_ci}
105254aa6d63Sopenharmony_ci
105354aa6d63Sopenharmony_ci/**
105454aa6d63Sopenharmony_ci * @tc.name: provision_test043
105554aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty.
105654aa6d63Sopenharmony_ci * @tc.size: MEDIUM
105754aa6d63Sopenharmony_ci * @tc.type: FUNC
105854aa6d63Sopenharmony_ci * @tc.level Level 1
105954aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
106054aa6d63Sopenharmony_ci */
106154aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test043, testing::ext::TestSize.Level1)
106254aa6d63Sopenharmony_ci{
106354aa6d63Sopenharmony_ci    ProfileInfo info;
106454aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"a"
106554aa6d63Sopenharmony_ci        "pp-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"d"
106654aa6d63Sopenharmony_ci        "eveloper-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
106754aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
106854aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
106954aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
107054aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
107154aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
107254aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
107354aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
107454aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
107554aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
107654aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
107754aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
107854aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
107954aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
108054aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
108154aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA59"
108254aa6d63Sopenharmony_ci        "48C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B"
108354aa6d63Sopenharmony_ci        "856AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"r"
108454aa6d63Sopenharmony_ci        "estricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"\",\"validity\":{\"no"
108554aa6d63Sopenharmony_ci        "t-after\":1705127532,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"\"}";
108654aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
108754aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
108854aa6d63Sopenharmony_ci}
108954aa6d63Sopenharmony_ci
109054aa6d63Sopenharmony_ci/**
109154aa6d63Sopenharmony_ci * @tc.name: provision_test044
109254aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for distribution-certificate is empty.
109354aa6d63Sopenharmony_ci * @tc.size: MEDIUM
109454aa6d63Sopenharmony_ci * @tc.type: FUNC
109554aa6d63Sopenharmony_ci * @tc.level Level 1
109654aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
109754aa6d63Sopenharmony_ci */
109854aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test044, testing::ext::TestSize.Level1)
109954aa6d63Sopenharmony_ci{
110054aa6d63Sopenharmony_ci    ProfileInfo info;
110154aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"app"
110254aa6d63Sopenharmony_ci        "-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"develo"
110354aa6d63Sopenharmony_ci        "per-id\":\"\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
110454aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
110554aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
110654aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
110754aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
110854aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
110954aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
111054aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
111154aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
111254aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
111354aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
111454aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
111554aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
111654aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
111754aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
111854aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5"
111954aa6d63Sopenharmony_ci        "948C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B"
112054aa6d63Sopenharmony_ci        "856AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"re"
112154aa6d63Sopenharmony_ci        "stricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938"
112254aa6d63Sopenharmony_ci        "-961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"ver"
112354aa6d63Sopenharmony_ci        "sion-code\":1,\"version-name\":\"1.0.0\"}";
112454aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
112554aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
112654aa6d63Sopenharmony_ci}
112754aa6d63Sopenharmony_ci
112854aa6d63Sopenharmony_ci/**
112954aa6d63Sopenharmony_ci * @tc.name: provision_test045
113054aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() failed for development-certificate is empty..
113154aa6d63Sopenharmony_ci * @tc.size: MEDIUM
113254aa6d63Sopenharmony_ci * @tc.type: FUNC
113354aa6d63Sopenharmony_ci * @tc.level Level 1
113454aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
113554aa6d63Sopenharmony_ci */
113654aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test045, testing::ext::TestSize.Level1)
113754aa6d63Sopenharmony_ci{
113854aa6d63Sopenharmony_ci    ProfileInfo info;
113954aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"a"
114054aa6d63Sopenharmony_ci        "pp-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"dev"
114154aa6d63Sopenharmony_ci        "eloper-id\":\"OpenHarmony\",\"development-certificate\":\"\"},\"debug-info\":{\"device-i"
114254aa6d63Sopenharmony_ci        "d-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA5948C3C0CB44ABCD530296054159EFE0BD16"
114354aa6d63Sopenharmony_ci        "A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856AB10493A6718C7679A73F958732865\"]},\"i"
114454aa6d63Sopenharmony_ci        "ssuer\":\"pki_internal\",\"permissions\":{\"restricted-permissions\":[\"\"]},\"type\":\"de"
114554aa6d63Sopenharmony_ci        "bug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b140a7c98\",\"validity\":{\"not-after\":17051275"
114654aa6d63Sopenharmony_ci        "32,\"not-before\":1610519532},\"version-code\":1,\"version-name\":\"1.0.0\"}";
114754aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
114854aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
114954aa6d63Sopenharmony_ci}
115054aa6d63Sopenharmony_ci
115154aa6d63Sopenharmony_ci/**
115254aa6d63Sopenharmony_ci * @tc.name: provision_test046
115354aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() distribution-certificate is empty..
115454aa6d63Sopenharmony_ci * @tc.size: MEDIUM
115554aa6d63Sopenharmony_ci * @tc.type: FUNC
115654aa6d63Sopenharmony_ci * @tc.level Level 1
115754aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
115854aa6d63Sopenharmony_ci */
115954aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test046, testing::ext::TestSize.Level1)
116054aa6d63Sopenharmony_ci{
116154aa6d63Sopenharmony_ci    ProfileInfo info;
116254aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-in"
116354aa6d63Sopenharmony_ci        "fo\":{\"app-feature\":\"\",\"bundle-name\":\"com.example.nativetemplatedemo\",\"de"
116454aa6d63Sopenharmony_ci        "veloper-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
116554aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
116654aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
116754aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
116854aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
116954aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
117054aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
117154aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
117254aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
117354aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
117454aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
117554aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
117654aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
117754aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
117854aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
117954aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA59"
118054aa6d63Sopenharmony_ci        "48C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B8"
118154aa6d63Sopenharmony_ci        "56AB10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"re"
118254aa6d63Sopenharmony_ci        "stricted-permissions\":[\"\"]},\"type\":\"release\",\"uuid\":\"fe686e1b-3770-4824-a938-"
118354aa6d63Sopenharmony_ci        "961b140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"ver"
118454aa6d63Sopenharmony_ci        "sion-code\":1,\"version-name\":\"1.0.0\"}";
118554aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
118654aa6d63Sopenharmony_ci    EXPECT_FALSE(result == PROVISION_OK);
118754aa6d63Sopenharmony_ci}
118854aa6d63Sopenharmony_ci
118954aa6d63Sopenharmony_ci/**
119054aa6d63Sopenharmony_ci * @tc.name: provision_test047
119154aa6d63Sopenharmony_ci * @tc.desc: Test function of ParseProvision() interface for SUCCESS.
119254aa6d63Sopenharmony_ci * @tc.size: MEDIUM
119354aa6d63Sopenharmony_ci * @tc.type: FUNC
119454aa6d63Sopenharmony_ci * @tc.level Level 1
119554aa6d63Sopenharmony_ci * @tc.require: SR000H63TL
119654aa6d63Sopenharmony_ci */
119754aa6d63Sopenharmony_ciHWTEST_F(ProvisionTest, provision_test047, testing::ext::TestSize.Level1)
119854aa6d63Sopenharmony_ci{
119954aa6d63Sopenharmony_ci    ProfileInfo info;
120054aa6d63Sopenharmony_ci    std::string provision = "{\"app-distribution-type\": \"app_gallery\",\"bundle-info\":{\"a"
120154aa6d63Sopenharmony_ci        "pl\":\"apl_\",\"app-feature\":\"hos_system_app\",\"bundle-name\":\"com.example.nativetemp"
120254aa6d63Sopenharmony_ci        "latedemo\",\"developer-id\":\"OpenHarmony\",\"development-certificate\":\"-----BEGIN CERTIFICATE-----\\n"
120354aa6d63Sopenharmony_ci        "MIICXjCCAeOgAwIBAgIBATAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJDTjEUMBIG\\n"
120454aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
120554aa6d63Sopenharmony_ci        "eTEpMCcGA1UEAwwgQXBwbGljYXRpb24gU2lnbmF0dXJlIFNlcnZpY2UgQ0EwHhcN\\n"
120654aa6d63Sopenharmony_ci        "MjQwNDE1MDUzOTUyWhcNMjUwNDE1MDUzOTUyWjBaMQswCQYDVQQGEwJDTjEUMBIG\\n"
120754aa6d63Sopenharmony_ci        "A1UECgwLT3Blbkhhcm1vbnkxHjAcBgNVBAsMFU9wZW5IYXJtb255IENvbW11bml0\\n"
120854aa6d63Sopenharmony_ci        "eTEVMBMGA1UEAwwMQXBwMSBSZWxlYXNlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE\\n"
120954aa6d63Sopenharmony_ci        "odSztdiucyVAo7VQnzHzBJsS9vQYa1vU1cP92F6fiJLazWtvEljNP1XoJldSZaN9\\n"
121054aa6d63Sopenharmony_ci        "UYGdAVHh2yrHzaJFEqHCSB3uQhlJgSbl9sT0lJ4hro1YvVx921/knMRlunz4eAGX\\n"
121154aa6d63Sopenharmony_ci        "o2kwZzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEF\\n"
121254aa6d63Sopenharmony_ci        "BQcDAzAbBgNVHQ4EFEpzK6IntvQxLaKGX6xZQSiISBx+MBgGDCsGAQQBj1sCgngB\\n"
121354aa6d63Sopenharmony_ci        "AwQIMAYCAQEKAQAwCgYIKoZIzj0EAwMDaQAwZgIxAPboDdi9EhOiwAhO3N6vTRcK\\n"
121454aa6d63Sopenharmony_ci        "QT1K1TQq2vjvpC2231Dq4tLPeSzLz6ROq+Zv6IgBYgIxAJ9sZZUBoR2lgPHBzt01\\n"
121554aa6d63Sopenharmony_ci        "4uxt5nLfJj2XKa6Leb/JWDoosXjoVXoB47y699PtGetcFw==\\n"
121654aa6d63Sopenharmony_ci        "-----END CERTIFICATE-----\\n"
121754aa6d63Sopenharmony_ci        "\"},\"debug-info\":{\"device-id-type\":\"udid\",\"device-ids\":[\"69C7505BE341BDA594"
121854aa6d63Sopenharmony_ci        "8C3C0CB44ABCD530296054159EFE0BD16A16CD0129CC42\",\"7EED06506FCE6325EB2E2FAA019458B856A"
121954aa6d63Sopenharmony_ci        "B10493A6718C7679A73F958732865\"]},\"issuer\":\"pki_internal\",\"permissions\":{\"restr"
122054aa6d63Sopenharmony_ci        "icted-permissions\":[\"\"]},\"type\":\"debug\",\"uuid\":\"fe686e1b-3770-4824-a938-961b"
122154aa6d63Sopenharmony_ci        "140a7c98\",\"validity\":{\"not-after\":1705127532,\"not-before\":1610519532},\"versio"
122254aa6d63Sopenharmony_ci        "n-code\":3,\"version-name\":\"1.0.0\"}";
122354aa6d63Sopenharmony_ci    AppProvisionVerifyResult result = ParseProvision(provision, info);
122454aa6d63Sopenharmony_ci    EXPECT_TRUE(result == PROVISION_OK);
122554aa6d63Sopenharmony_ci}
122654aa6d63Sopenharmony_ci
122754aa6d63Sopenharmony_ci}
122854aa6d63Sopenharmony_ci}
1229