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