14e56987cSopenharmony_ci/*
24e56987cSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
34e56987cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44e56987cSopenharmony_ci * you may not use this file except in compliance with the License.
54e56987cSopenharmony_ci * You may obtain a copy of the License at
64e56987cSopenharmony_ci *
74e56987cSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84e56987cSopenharmony_ci *
94e56987cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104e56987cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114e56987cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124e56987cSopenharmony_ci * See the License for the specific language governing permissions and
134e56987cSopenharmony_ci * limitations under the License.
144e56987cSopenharmony_ci */
154e56987cSopenharmony_ci
164e56987cSopenharmony_ci#include <gtest/gtest.h>
174e56987cSopenharmony_ci
184e56987cSopenharmony_ci#include "cm_test_common.h"
194e56987cSopenharmony_ci
204e56987cSopenharmony_ci#include "cert_manager_api.h"
214e56987cSopenharmony_ci
224e56987cSopenharmony_ciusing namespace testing::ext;
234e56987cSopenharmony_ciusing namespace CertmanagerTest;
244e56987cSopenharmony_cinamespace {
254e56987cSopenharmony_cistatic constexpr uint32_t DEFAULT_AUTH_URI_LEN = 256;
264e56987cSopenharmony_cistatic constexpr uint32_t INVALID_AUTH_URI_LEN = 100;
274e56987cSopenharmony_cistatic constexpr uint32_t DEFAULT_APP_ID = 1000;
284e56987cSopenharmony_cistatic constexpr uint32_t GRANT_ONE_APP_ID = 1;
294e56987cSopenharmony_cistatic constexpr uint32_t GRANT_MULTIPLE_APP_ID = 10;
304e56987cSopenharmony_ci
314e56987cSopenharmony_ciclass CmGrantTest : public testing::Test {
324e56987cSopenharmony_cipublic:
334e56987cSopenharmony_ci    static void SetUpTestCase(void);
344e56987cSopenharmony_ci
354e56987cSopenharmony_ci    static void TearDownTestCase(void);
364e56987cSopenharmony_ci
374e56987cSopenharmony_ci    void SetUp();
384e56987cSopenharmony_ci
394e56987cSopenharmony_ci    void TearDown();
404e56987cSopenharmony_ci};
414e56987cSopenharmony_ci
424e56987cSopenharmony_civoid CmGrantTest::SetUpTestCase(void)
434e56987cSopenharmony_ci{
444e56987cSopenharmony_ci    SetATPermission();
454e56987cSopenharmony_ci}
464e56987cSopenharmony_ci
474e56987cSopenharmony_civoid CmGrantTest::TearDownTestCase(void)
484e56987cSopenharmony_ci{
494e56987cSopenharmony_ci}
504e56987cSopenharmony_ci
514e56987cSopenharmony_civoid CmGrantTest::SetUp()
524e56987cSopenharmony_ci{
534e56987cSopenharmony_ci}
544e56987cSopenharmony_ci
554e56987cSopenharmony_civoid CmGrantTest::TearDown()
564e56987cSopenharmony_ci{
574e56987cSopenharmony_ci}
584e56987cSopenharmony_ci
594e56987cSopenharmony_cistatic void TestNormalGrant(uint32_t count, bool isSameUid)
604e56987cSopenharmony_ci{
614e56987cSopenharmony_ci    uint8_t aliasData[] = "TestNormalGrant";
624e56987cSopenharmony_ci    struct CmBlob alias = { sizeof(aliasData), aliasData };
634e56987cSopenharmony_ci    int32_t ret = TestGenerateAppCert(&alias, CERT_KEY_ALG_RSA, CM_CREDENTIAL_STORE);
644e56987cSopenharmony_ci    EXPECT_EQ(ret, CM_SUCCESS) << "TestGenerateAppCert failed, retcode:" << ret;
654e56987cSopenharmony_ci
664e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=TestNormalGrant;u=0;a=0";
674e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
684e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
694e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
704e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
714e56987cSopenharmony_ci
724e56987cSopenharmony_ci    for (uint32_t i = 0; i < count; ++i) {
734e56987cSopenharmony_ci        if (!isSameUid) {
744e56987cSopenharmony_ci            appId += i;
754e56987cSopenharmony_ci        }
764e56987cSopenharmony_ci        authUri.size = DEFAULT_AUTH_URI_LEN; /* clear authUri size */
774e56987cSopenharmony_ci        ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
784e56987cSopenharmony_ci        EXPECT_EQ(ret, CM_SUCCESS) << "CmGrantAppCertificate failed, retcode:" << ret;
794e56987cSopenharmony_ci    }
804e56987cSopenharmony_ci
814e56987cSopenharmony_ci    ret = CmUninstallAppCert(&keyUri, CM_CREDENTIAL_STORE);
824e56987cSopenharmony_ci    EXPECT_EQ(ret, CM_SUCCESS) << "CmUninstallAppCert failed, retcode:" << ret;
834e56987cSopenharmony_ci}
844e56987cSopenharmony_ci
854e56987cSopenharmony_ci/**
864e56987cSopenharmony_ci * @tc.name: CmGrantTest001
874e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest keyUri is NULL
884e56987cSopenharmony_ci * @tc.type: FUNC
894e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
904e56987cSopenharmony_ci */
914e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest001, TestSize.Level0)
924e56987cSopenharmony_ci{
934e56987cSopenharmony_ci    struct CmBlob *keyUri = nullptr; /* keyUri is NULL */
944e56987cSopenharmony_ci
954e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
964e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
974e56987cSopenharmony_ci
984e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
994e56987cSopenharmony_ci
1004e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(keyUri, appId, &authUri);
1014e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT);
1024e56987cSopenharmony_ci}
1034e56987cSopenharmony_ci
1044e56987cSopenharmony_ci/**
1054e56987cSopenharmony_ci * @tc.name: CmGrantTest002
1064e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest keyUri size is 0
1074e56987cSopenharmony_ci * @tc.type: FUNC
1084e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
1094e56987cSopenharmony_ci */
1104e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest002, TestSize.Level0)
1114e56987cSopenharmony_ci{
1124e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=keyA;u=0;a=0";
1134e56987cSopenharmony_ci    struct CmBlob keyUri = { 0, uriData }; /* keyUri size is 0 */
1144e56987cSopenharmony_ci
1154e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
1164e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
1174e56987cSopenharmony_ci
1184e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
1194e56987cSopenharmony_ci
1204e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
1214e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT);
1224e56987cSopenharmony_ci}
1234e56987cSopenharmony_ci
1244e56987cSopenharmony_ci/**
1254e56987cSopenharmony_ci * @tc.name: CmGrantTest003
1264e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest keyUri data is null
1274e56987cSopenharmony_ci * @tc.type: FUNC
1284e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
1294e56987cSopenharmony_ci */
1304e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest003, TestSize.Level0)
1314e56987cSopenharmony_ci{
1324e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=keyA;u=0;a=0";
1334e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), nullptr }; /* keyUri data is null */
1344e56987cSopenharmony_ci
1354e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
1364e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
1374e56987cSopenharmony_ci
1384e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
1394e56987cSopenharmony_ci
1404e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
1414e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT);
1424e56987cSopenharmony_ci}
1434e56987cSopenharmony_ci
1444e56987cSopenharmony_ci/**
1454e56987cSopenharmony_ci * @tc.name: CmGrantTest004
1464e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest keyUri data not end of '\0'
1474e56987cSopenharmony_ci * @tc.type: FUNC
1484e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
1494e56987cSopenharmony_ci */
1504e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest004, TestSize.Level0)
1514e56987cSopenharmony_ci{
1524e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=keyA;u=0;a=0";
1534e56987cSopenharmony_ci    struct CmBlob keyUri = { strlen((char *)uriData), uriData }; /* keyUri data not end of '\0' */
1544e56987cSopenharmony_ci
1554e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
1564e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
1574e56987cSopenharmony_ci
1584e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
1594e56987cSopenharmony_ci
1604e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
1614e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT);
1624e56987cSopenharmony_ci}
1634e56987cSopenharmony_ci
1644e56987cSopenharmony_ci/**
1654e56987cSopenharmony_ci * @tc.name: CmGrantTest005
1664e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest keyUri data has no app: can't find cert
1674e56987cSopenharmony_ci * @tc.type: FUNC
1684e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
1694e56987cSopenharmony_ci */
1704e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest005, TestSize.Level0)
1714e56987cSopenharmony_ci{
1724e56987cSopenharmony_ci    /* keyUri data has no app */
1734e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=keyA;u=0";
1744e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
1754e56987cSopenharmony_ci
1764e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
1774e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
1784e56987cSopenharmony_ci
1794e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
1804e56987cSopenharmony_ci
1814e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
1824e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_NOT_EXIST);
1834e56987cSopenharmony_ci}
1844e56987cSopenharmony_ci
1854e56987cSopenharmony_ci/**
1864e56987cSopenharmony_ci * @tc.name: CmGrantTest006
1874e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest keyUri data has no user: can't find cert
1884e56987cSopenharmony_ci * @tc.type: FUNC
1894e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
1904e56987cSopenharmony_ci */
1914e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest006, TestSize.Level0)
1924e56987cSopenharmony_ci{
1934e56987cSopenharmony_ci    /* keyUri data has no user */
1944e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=keyA;a=0";
1954e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
1964e56987cSopenharmony_ci
1974e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
1984e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
1994e56987cSopenharmony_ci
2004e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
2014e56987cSopenharmony_ci
2024e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
2034e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_NOT_EXIST);
2044e56987cSopenharmony_ci}
2054e56987cSopenharmony_ci
2064e56987cSopenharmony_ci/**
2074e56987cSopenharmony_ci * @tc.name: CmGrantTest007
2084e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest keyUri data has no object: can't find cert
2094e56987cSopenharmony_ci * @tc.type: FUNC
2104e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
2114e56987cSopenharmony_ci */
2124e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest007, TestSize.Level0)
2134e56987cSopenharmony_ci{
2144e56987cSopenharmony_ci    /* keyUri data has no object */
2154e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;u=0;a=0";
2164e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
2174e56987cSopenharmony_ci
2184e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
2194e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
2204e56987cSopenharmony_ci
2214e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
2224e56987cSopenharmony_ci
2234e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
2244e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_NOT_EXIST);
2254e56987cSopenharmony_ci}
2264e56987cSopenharmony_ci
2274e56987cSopenharmony_ci/**
2284e56987cSopenharmony_ci * @tc.name: CmGrantTest008
2294e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest keyUri data type not ak: can't find cert
2304e56987cSopenharmony_ci * @tc.type: FUNC
2314e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
2324e56987cSopenharmony_ci */
2334e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest008, TestSize.Level0)
2344e56987cSopenharmony_ci{
2354e56987cSopenharmony_ci    /* keyUri data type not ak */
2364e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=m;o=keyA;u=0;a=0";
2374e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
2384e56987cSopenharmony_ci
2394e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
2404e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
2414e56987cSopenharmony_ci
2424e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
2434e56987cSopenharmony_ci
2444e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
2454e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_NOT_EXIST);
2464e56987cSopenharmony_ci}
2474e56987cSopenharmony_ci
2484e56987cSopenharmony_ci/**
2494e56987cSopenharmony_ci * @tc.name: CmGrantTest009
2504e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest authUri null
2514e56987cSopenharmony_ci * @tc.type: FUNC
2524e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
2534e56987cSopenharmony_ci */
2544e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest009, TestSize.Level0)
2554e56987cSopenharmony_ci{
2564e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=keyA;u=0;a=0";
2574e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
2584e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
2594e56987cSopenharmony_ci    struct CmBlob *authUri = nullptr; /* authUri nullptr */
2604e56987cSopenharmony_ci
2614e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, authUri);
2624e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT);
2634e56987cSopenharmony_ci}
2644e56987cSopenharmony_ci
2654e56987cSopenharmony_ci/**
2664e56987cSopenharmony_ci * @tc.name: CmGrantTest010
2674e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest authUri size is 0
2684e56987cSopenharmony_ci * @tc.type: FUNC
2694e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
2704e56987cSopenharmony_ci */
2714e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest010, TestSize.Level0)
2724e56987cSopenharmony_ci{
2734e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=keyA;u=0;a=0";
2744e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
2754e56987cSopenharmony_ci
2764e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
2774e56987cSopenharmony_ci    struct CmBlob authUri = { 0, authUriData }; /* authUri size is 0 */
2784e56987cSopenharmony_ci
2794e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
2804e56987cSopenharmony_ci
2814e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
2824e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT);
2834e56987cSopenharmony_ci}
2844e56987cSopenharmony_ci
2854e56987cSopenharmony_ci/**
2864e56987cSopenharmony_ci * @tc.name: CmGrantTest011
2874e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest authUri data is NULL
2884e56987cSopenharmony_ci * @tc.type: FUNC
2894e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
2904e56987cSopenharmony_ci */
2914e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest011, TestSize.Level0)
2924e56987cSopenharmony_ci{
2934e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=keyA;u=0;a=0";
2944e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
2954e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, nullptr }; /* authUri data is NULL */
2964e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
2974e56987cSopenharmony_ci
2984e56987cSopenharmony_ci    int32_t ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
2994e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT);
3004e56987cSopenharmony_ci}
3014e56987cSopenharmony_ci
3024e56987cSopenharmony_ci/**
3034e56987cSopenharmony_ci * @tc.name: CmGrantTest012
3044e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest normal case: grant 1 app id
3054e56987cSopenharmony_ci * @tc.type: FUNC
3064e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
3074e56987cSopenharmony_ci */
3084e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest012, TestSize.Level0)
3094e56987cSopenharmony_ci{
3104e56987cSopenharmony_ci    TestNormalGrant(GRANT_ONE_APP_ID, true); /* grant 1 app id */
3114e56987cSopenharmony_ci}
3124e56987cSopenharmony_ci
3134e56987cSopenharmony_ci/**
3144e56987cSopenharmony_ci * @tc.name: CmGrantTest013
3154e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest normal case: grant 10 same app id
3164e56987cSopenharmony_ci * @tc.type: FUNC
3174e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
3184e56987cSopenharmony_ci */
3194e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest013, TestSize.Level0)
3204e56987cSopenharmony_ci{
3214e56987cSopenharmony_ci    TestNormalGrant(GRANT_MULTIPLE_APP_ID, true); /* grant 10 same app id */
3224e56987cSopenharmony_ci}
3234e56987cSopenharmony_ci
3244e56987cSopenharmony_ci/**
3254e56987cSopenharmony_ci * @tc.name: CmGrantTest014
3264e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest normal case: grant 10 different app id
3274e56987cSopenharmony_ci * @tc.type: FUNC
3284e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
3294e56987cSopenharmony_ci */
3304e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest014, TestSize.Level0)
3314e56987cSopenharmony_ci{
3324e56987cSopenharmony_ci    TestNormalGrant(GRANT_MULTIPLE_APP_ID, false); /* grant 10 different app id */
3334e56987cSopenharmony_ci}
3344e56987cSopenharmony_ci
3354e56987cSopenharmony_ci/**
3364e56987cSopenharmony_ci * @tc.name: CmGrantTest015
3374e56987cSopenharmony_ci * @tc.desc: Test CmGrantTest authUri size too small
3384e56987cSopenharmony_ci * @tc.type: FUNC
3394e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
3404e56987cSopenharmony_ci */
3414e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTest015, TestSize.Level0)
3424e56987cSopenharmony_ci{
3434e56987cSopenharmony_ci    uint8_t aliasData[] = "CmGrantTest014";
3444e56987cSopenharmony_ci    struct CmBlob alias = { sizeof(aliasData), aliasData };
3454e56987cSopenharmony_ci    int32_t ret = TestGenerateAppCert(&alias, CERT_KEY_ALG_RSA, CM_CREDENTIAL_STORE);
3464e56987cSopenharmony_ci    EXPECT_EQ(ret, CM_SUCCESS) << "TestGenerateAppCert failed, retcode:" << ret;
3474e56987cSopenharmony_ci
3484e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=CmGrantTest014;u=0;a=0";
3494e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
3504e56987cSopenharmony_ci    uint8_t authUriData[INVALID_AUTH_URI_LEN] = {0}; /* size too small */
3514e56987cSopenharmony_ci    struct CmBlob authUri = { INVALID_AUTH_URI_LEN, authUriData };
3524e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
3534e56987cSopenharmony_ci
3544e56987cSopenharmony_ci    ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
3554e56987cSopenharmony_ci    EXPECT_EQ(ret, CMR_ERROR_BUFFER_TOO_SMALL) << "CmGrantAppCertificate failed, retcode:" << ret;
3564e56987cSopenharmony_ci
3574e56987cSopenharmony_ci    ret = CmUninstallAppCert(&keyUri, CM_CREDENTIAL_STORE);
3584e56987cSopenharmony_ci    EXPECT_EQ(ret, CM_SUCCESS) << "CmUninstallAppCert failed, retcode:" << ret;
3594e56987cSopenharmony_ci}
3604e56987cSopenharmony_ci
3614e56987cSopenharmony_ci/**
3624e56987cSopenharmony_ci * @tc.name: CmGrantTestPerformance016
3634e56987cSopenharmony_ci * @tc.desc: 1000 times: grant and remove grant
3644e56987cSopenharmony_ci * @tc.type: FUNC
3654e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA
3664e56987cSopenharmony_ci */
3674e56987cSopenharmony_ciHWTEST_F(CmGrantTest, CmGrantTestPerformance016, TestSize.Level1)
3684e56987cSopenharmony_ci{
3694e56987cSopenharmony_ci    uint8_t aliasData[] = "TestGrantPer";
3704e56987cSopenharmony_ci    struct CmBlob alias = { sizeof(aliasData), aliasData };
3714e56987cSopenharmony_ci    int32_t ret = TestGenerateAppCert(&alias, CERT_KEY_ALG_RSA, CM_CREDENTIAL_STORE);
3724e56987cSopenharmony_ci    EXPECT_EQ(ret, CM_SUCCESS) << "TestGenerateAppCert failed, retcode:" << ret;
3734e56987cSopenharmony_ci
3744e56987cSopenharmony_ci    uint8_t uriData[] = "oh:t=ak;o=TestGrantPer;u=0;a=0";
3754e56987cSopenharmony_ci    struct CmBlob keyUri = { sizeof(uriData), uriData };
3764e56987cSopenharmony_ci    uint8_t authUriData[DEFAULT_AUTH_URI_LEN] = {0};
3774e56987cSopenharmony_ci    struct CmBlob authUri = { DEFAULT_AUTH_URI_LEN, authUriData };
3784e56987cSopenharmony_ci    uint32_t appId = DEFAULT_APP_ID;
3794e56987cSopenharmony_ci
3804e56987cSopenharmony_ci    for (uint32_t i = 0; i < PERFORMACE_COUNT; ++i) {
3814e56987cSopenharmony_ci        ret = CmGrantAppCertificate(&keyUri, appId, &authUri);
3824e56987cSopenharmony_ci        EXPECT_EQ(ret, CM_SUCCESS) << "CmGrantAppCertificate failed, retcode:" << ret;
3834e56987cSopenharmony_ci
3844e56987cSopenharmony_ci        ret = CmRemoveGrantedApp(&keyUri, appId);
3854e56987cSopenharmony_ci        EXPECT_EQ(ret, CM_SUCCESS) << "CmRemoveGrantedApp failed, retcode:" << ret;
3864e56987cSopenharmony_ci    }
3874e56987cSopenharmony_ci
3884e56987cSopenharmony_ci    ret = CmUninstallAppCert(&keyUri, CM_CREDENTIAL_STORE);
3894e56987cSopenharmony_ci    EXPECT_EQ(ret, CM_SUCCESS) << "CmUninstallAppCert failed, retcode:" << ret;
3904e56987cSopenharmony_ci}
3914e56987cSopenharmony_ci} // end of namespace
3924e56987cSopenharmony_ci
393