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_ci#include "cm_log.h" 234e56987cSopenharmony_ci#include "cm_mem.h" 244e56987cSopenharmony_ci 254e56987cSopenharmony_ciusing namespace testing::ext; 264e56987cSopenharmony_ciusing namespace CertmanagerTest; 274e56987cSopenharmony_cinamespace { 284e56987cSopenharmony_cistatic constexpr uint32_t DEFAULT_SIGNATURE_LEN = 1024; 294e56987cSopenharmony_cistatic constexpr uint32_t MAX_SESSION_NUM_MORE_1 = 10; 304e56987cSopenharmony_ci 314e56987cSopenharmony_ciclass CmFinishTest : 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 CmFinishTest::SetUpTestCase(void) 434e56987cSopenharmony_ci{ 444e56987cSopenharmony_ci SetATPermission(); 454e56987cSopenharmony_ci} 464e56987cSopenharmony_ci 474e56987cSopenharmony_civoid CmFinishTest::TearDownTestCase(void) 484e56987cSopenharmony_ci{ 494e56987cSopenharmony_ci} 504e56987cSopenharmony_ci 514e56987cSopenharmony_civoid CmFinishTest::SetUp() 524e56987cSopenharmony_ci{ 534e56987cSopenharmony_ci} 544e56987cSopenharmony_ci 554e56987cSopenharmony_civoid CmFinishTest::TearDown() 564e56987cSopenharmony_ci{ 574e56987cSopenharmony_ci} 584e56987cSopenharmony_ci 594e56987cSopenharmony_cistatic const uint8_t g_uriData[] = "oh:t=ak;o=TestFinishSignVerify;u=0;a=0"; 604e56987cSopenharmony_cistatic const CmBlob g_keyUri = { sizeof(g_uriData), (uint8_t *)g_uriData }; 614e56987cSopenharmony_ci 624e56987cSopenharmony_cistatic const uint8_t g_messageData[] = "This_is_test_message_for_test_sign_and_verify"; 634e56987cSopenharmony_ci 644e56987cSopenharmony_cistatic void TestInstallAppCert(uint32_t alg) 654e56987cSopenharmony_ci{ 664e56987cSopenharmony_ci uint8_t aliasData[] = "TestFinishSignVerify"; 674e56987cSopenharmony_ci struct CmBlob alias = { sizeof(aliasData), aliasData }; 684e56987cSopenharmony_ci 694e56987cSopenharmony_ci int32_t ret = TestGenerateAppCert(&alias, alg, CM_CREDENTIAL_STORE); 704e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "TestGenerateAppCert failed, retcode:" << ret; 714e56987cSopenharmony_ci} 724e56987cSopenharmony_ci 734e56987cSopenharmony_cistatic void TestUninstallAppCert(void) 744e56987cSopenharmony_ci{ 754e56987cSopenharmony_ci int32_t ret = CmUninstallAppCert(&g_keyUri, CM_CREDENTIAL_STORE); 764e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "CmUninstallAppCert failed, retcode:" << ret; 774e56987cSopenharmony_ci} 784e56987cSopenharmony_ci 794e56987cSopenharmony_cistatic void TestSign(const struct CmBlob *keyUri, const struct CmSignatureSpec *spec, 804e56987cSopenharmony_ci const struct CmBlob *message, struct CmBlob *signature) 814e56987cSopenharmony_ci{ 824e56987cSopenharmony_ci uint64_t handleValue = 0; 834e56987cSopenharmony_ci struct CmBlob handle = { sizeof(uint64_t), (uint8_t *)&handleValue }; 844e56987cSopenharmony_ci 854e56987cSopenharmony_ci int32_t ret = CmInit(keyUri, spec, &handle); 864e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "TestSign CmInit test failed"; 874e56987cSopenharmony_ci 884e56987cSopenharmony_ci ret = CmUpdate(&handle, message); 894e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "TestSign CmUpdate test failed"; 904e56987cSopenharmony_ci 914e56987cSopenharmony_ci struct CmBlob inDataFinish = { 0, nullptr }; 924e56987cSopenharmony_ci ret = CmFinish(&handle, &inDataFinish, signature); 934e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "TestSign CmFinish test failed"; 944e56987cSopenharmony_ci 954e56987cSopenharmony_ci ret = CmAbort(&handle); 964e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "TestSign CmAbort test failed"; 974e56987cSopenharmony_ci} 984e56987cSopenharmony_ci 994e56987cSopenharmony_cistatic void TestVerify(const struct CmBlob *keyUri, const struct CmSignatureSpec *spec, 1004e56987cSopenharmony_ci const struct CmBlob *message, const struct CmBlob *signature, bool isValidSignature) 1014e56987cSopenharmony_ci{ 1024e56987cSopenharmony_ci uint64_t handleValue = 0; 1034e56987cSopenharmony_ci struct CmBlob handle = { sizeof(uint64_t), (uint8_t *)&handleValue }; 1044e56987cSopenharmony_ci 1054e56987cSopenharmony_ci int32_t ret = CmInit(keyUri, spec, &handle); 1064e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "TestVerify CmInit test failed"; 1074e56987cSopenharmony_ci 1084e56987cSopenharmony_ci ret = CmUpdate(&handle, message); 1094e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "TestVerify CmUpdate test failed"; 1104e56987cSopenharmony_ci 1114e56987cSopenharmony_ci struct CmBlob inDataFinish = { signature->size, signature->data }; 1124e56987cSopenharmony_ci if (!isValidSignature && signature->size > 0) { 1134e56987cSopenharmony_ci signature->data[0] += 0x01; /* change the first byte of signature, ignore data flipping */ 1144e56987cSopenharmony_ci } 1154e56987cSopenharmony_ci 1164e56987cSopenharmony_ci struct CmBlob outDataFinish = { 0, nullptr }; 1174e56987cSopenharmony_ci ret = CmFinish(&handle, &inDataFinish, &outDataFinish); 1184e56987cSopenharmony_ci if (isValidSignature) { 1194e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "TestVerify CmFinish test failed"; 1204e56987cSopenharmony_ci } else { 1214e56987cSopenharmony_ci EXPECT_EQ(ret, CMR_ERROR_KEY_OPERATION_FAILED) << "TestVerify CmFinish test failed"; 1224e56987cSopenharmony_ci } 1234e56987cSopenharmony_ci 1244e56987cSopenharmony_ci ret = CmAbort(&handle); 1254e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "TestVerify CmAbort test failed"; 1264e56987cSopenharmony_ci} 1274e56987cSopenharmony_ci 1284e56987cSopenharmony_cistatic void TestSignVerify(uint32_t alg, bool isValidSignature, struct CmSignatureSpec *spec) 1294e56987cSopenharmony_ci{ 1304e56987cSopenharmony_ci /* install credential */ 1314e56987cSopenharmony_ci TestInstallAppCert(alg); 1324e56987cSopenharmony_ci 1334e56987cSopenharmony_ci struct CmBlob message = { 0, nullptr }; 1344e56987cSopenharmony_ci uint8_t srcData[] = { 1354e56987cSopenharmony_ci 0xc2, 0xa7, 0xc5, 0x33, 0x79, 0xb0, 0xcd, 0x86, 0x74, 0x09, 0x98, 0x16, 0xd5, 0x85, 0x1b, 0xd6, 1364e56987cSopenharmony_ci 0x87, 0xe3, 0xe0, 0x53, 0x7d, 0xe0, 0xff, 0x1d, 0xdb, 0x27, 0x98, 0xe8, 0x87, 0xe5, 0xb7, 0x03, 1374e56987cSopenharmony_ci }; 1384e56987cSopenharmony_ci if (spec->digest != CM_DIGEST_NONE) { 1394e56987cSopenharmony_ci message.size = sizeof(g_messageData); 1404e56987cSopenharmony_ci message.data = const_cast<uint8_t *>(g_messageData); 1414e56987cSopenharmony_ci } else { 1424e56987cSopenharmony_ci message.size = sizeof(srcData); 1434e56987cSopenharmony_ci message.data = srcData; 1444e56987cSopenharmony_ci } 1454e56987cSopenharmony_ci 1464e56987cSopenharmony_ci uint8_t signData[DEFAULT_SIGNATURE_LEN] = {0}; 1474e56987cSopenharmony_ci struct CmBlob signature = { DEFAULT_SIGNATURE_LEN, signData }; 1484e56987cSopenharmony_ci 1494e56987cSopenharmony_ci /* sign */ 1504e56987cSopenharmony_ci spec->purpose = CM_KEY_PURPOSE_SIGN; 1514e56987cSopenharmony_ci TestSign(&g_keyUri, spec, &message, &signature); 1524e56987cSopenharmony_ci 1534e56987cSopenharmony_ci /* verify */ 1544e56987cSopenharmony_ci spec->purpose = CM_KEY_PURPOSE_VERIFY; 1554e56987cSopenharmony_ci TestVerify(&g_keyUri, spec, &message, &signature, isValidSignature); 1564e56987cSopenharmony_ci 1574e56987cSopenharmony_ci /* uninstall rsa credential */ 1584e56987cSopenharmony_ci TestUninstallAppCert(); 1594e56987cSopenharmony_ci} 1604e56987cSopenharmony_ci 1614e56987cSopenharmony_cistatic void ProducerSessionMaxTest(void) 1624e56987cSopenharmony_ci{ 1634e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA256 }; 1644e56987cSopenharmony_ci uint64_t handle[MAX_SESSION_NUM_MORE_1]; 1654e56987cSopenharmony_ci int32_t ret; 1664e56987cSopenharmony_ci 1674e56987cSopenharmony_ci for (uint32_t i = 0; i < MAX_SESSION_NUM_MORE_1; ++i) { 1684e56987cSopenharmony_ci struct CmBlob handleBlob = { sizeof(uint64_t), (uint8_t *)&handle[i] }; 1694e56987cSopenharmony_ci ret = CmInit(&g_keyUri, &spec, &handleBlob); 1704e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "cm init failed, index[" << i << "]"; 1714e56987cSopenharmony_ci } 1724e56987cSopenharmony_ci 1734e56987cSopenharmony_ci for (uint32_t i = 0; i < MAX_SESSION_NUM_MORE_1; ++i) { 1744e56987cSopenharmony_ci uint8_t tmpInput[] = "thisIstestForSessionMaxTestInData"; 1754e56987cSopenharmony_ci struct CmBlob updateInput = { sizeof(tmpInput), tmpInput }; 1764e56987cSopenharmony_ci struct CmBlob handleBlob = { sizeof(uint64_t), (uint8_t *)&handle[i] }; 1774e56987cSopenharmony_ci 1784e56987cSopenharmony_ci int32_t expectRet = CM_SUCCESS; 1794e56987cSopenharmony_ci ret = CmUpdate(&handleBlob, &updateInput); 1804e56987cSopenharmony_ci EXPECT_EQ(ret, expectRet) << "update failed, i:" << i; 1814e56987cSopenharmony_ci 1824e56987cSopenharmony_ci uint8_t tmpOutput[DEFAULT_SIGNATURE_LEN] = {0}; 1834e56987cSopenharmony_ci struct CmBlob finishInput = { 0, nullptr }; 1844e56987cSopenharmony_ci struct CmBlob finishOutput = { sizeof(tmpOutput), tmpOutput }; 1854e56987cSopenharmony_ci ret = CmFinish(&handleBlob, &finishInput, &finishOutput); 1864e56987cSopenharmony_ci EXPECT_EQ(ret, expectRet) << "finish failed, i:" << i; 1874e56987cSopenharmony_ci } 1884e56987cSopenharmony_ci 1894e56987cSopenharmony_ci for (uint32_t i = 0; i < MAX_SESSION_NUM_MORE_1; ++i) { 1904e56987cSopenharmony_ci struct CmBlob handleBlob = { sizeof(uint64_t), (uint8_t *)&handle[i] }; 1914e56987cSopenharmony_ci ret = CmAbort(&handleBlob); 1924e56987cSopenharmony_ci EXPECT_EQ(ret, CM_SUCCESS) << "abort failed, i:" << i; 1934e56987cSopenharmony_ci } 1944e56987cSopenharmony_ci} 1954e56987cSopenharmony_ci 1964e56987cSopenharmony_ci 1974e56987cSopenharmony_ci/** 1984e56987cSopenharmony_ci* @tc.name: CmFinishTest001 1994e56987cSopenharmony_ci* @tc.desc: Test CmFinish handle is null 2004e56987cSopenharmony_ci* @tc.type: FUNC 2014e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 2024e56987cSopenharmony_ci*/ 2034e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest001, TestSize.Level0) 2044e56987cSopenharmony_ci{ 2054e56987cSopenharmony_ci struct CmBlob *handle = nullptr; 2064e56987cSopenharmony_ci struct CmBlob inData = { 0, nullptr }; 2074e56987cSopenharmony_ci struct CmBlob outData = { 0, nullptr }; 2084e56987cSopenharmony_ci 2094e56987cSopenharmony_ci int32_t ret = CmFinish(handle, &inData, &outData); 2104e56987cSopenharmony_ci EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT); 2114e56987cSopenharmony_ci} 2124e56987cSopenharmony_ci 2134e56987cSopenharmony_ci/** 2144e56987cSopenharmony_ci * @tc.name: CmFinishTest002 2154e56987cSopenharmony_ci * @tc.desc: Test CmFinish handle size is 0 2164e56987cSopenharmony_ci * @tc.type: FUNC 2174e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA 2184e56987cSopenharmony_ci */ 2194e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest002, TestSize.Level0) 2204e56987cSopenharmony_ci{ 2214e56987cSopenharmony_ci uint64_t handleValue = 0; 2224e56987cSopenharmony_ci struct CmBlob handle = { 0, (uint8_t *)&handleValue }; 2234e56987cSopenharmony_ci struct CmBlob inData = { 0, nullptr }; 2244e56987cSopenharmony_ci struct CmBlob outData = { 0, nullptr }; 2254e56987cSopenharmony_ci 2264e56987cSopenharmony_ci int32_t ret = CmFinish(&handle, &inData, &outData); 2274e56987cSopenharmony_ci EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT); 2284e56987cSopenharmony_ci} 2294e56987cSopenharmony_ci 2304e56987cSopenharmony_ci/** 2314e56987cSopenharmony_ci * @tc.name: CmFinishTest003 2324e56987cSopenharmony_ci * @tc.desc: Test CmFinish handle data is null 2334e56987cSopenharmony_ci * @tc.type: FUNC 2344e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA 2354e56987cSopenharmony_ci */ 2364e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest003, TestSize.Level0) 2374e56987cSopenharmony_ci{ 2384e56987cSopenharmony_ci uint64_t handleValue = 0; 2394e56987cSopenharmony_ci struct CmBlob handle = { sizeof(handleValue), nullptr }; 2404e56987cSopenharmony_ci struct CmBlob inData = { 0, nullptr }; 2414e56987cSopenharmony_ci struct CmBlob outData = { 0, nullptr }; 2424e56987cSopenharmony_ci 2434e56987cSopenharmony_ci int32_t ret = CmFinish(&handle, &inData, &outData); 2444e56987cSopenharmony_ci EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT); 2454e56987cSopenharmony_ci} 2464e56987cSopenharmony_ci 2474e56987cSopenharmony_ci/** 2484e56987cSopenharmony_ci* @tc.name: CmFinishTest004 2494e56987cSopenharmony_ci* @tc.desc: Test CmFinish inData is null 2504e56987cSopenharmony_ci* @tc.type: FUNC 2514e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 2524e56987cSopenharmony_ci*/ 2534e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest004, TestSize.Level0) 2544e56987cSopenharmony_ci{ 2554e56987cSopenharmony_ci uint64_t handleValue = 0; 2564e56987cSopenharmony_ci struct CmBlob handle = { sizeof(handleValue), (uint8_t *)&handleValue }; 2574e56987cSopenharmony_ci struct CmBlob *inData = nullptr; 2584e56987cSopenharmony_ci struct CmBlob outData = { 0, nullptr }; 2594e56987cSopenharmony_ci 2604e56987cSopenharmony_ci int32_t ret = CmFinish(&handle, inData, &outData); 2614e56987cSopenharmony_ci EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT); 2624e56987cSopenharmony_ci} 2634e56987cSopenharmony_ci 2644e56987cSopenharmony_ci/** 2654e56987cSopenharmony_ci * @tc.name: CmFinishTest005 2664e56987cSopenharmony_ci * @tc.desc: Test CmFinish outData is null 2674e56987cSopenharmony_ci * @tc.type: FUNC 2684e56987cSopenharmony_ci * @tc.require: AR000H0MIA /SR000H09NA 2694e56987cSopenharmony_ci */ 2704e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest005, TestSize.Level0) 2714e56987cSopenharmony_ci{ 2724e56987cSopenharmony_ci uint64_t handleValue = 0; 2734e56987cSopenharmony_ci struct CmBlob handle = { sizeof(handleValue), (uint8_t *)&handleValue }; 2744e56987cSopenharmony_ci struct CmBlob inData = { 0, nullptr }; 2754e56987cSopenharmony_ci struct CmBlob *outData = nullptr; 2764e56987cSopenharmony_ci 2774e56987cSopenharmony_ci int32_t ret = CmFinish(&handle, &inData, outData); 2784e56987cSopenharmony_ci EXPECT_EQ(ret, CMR_ERROR_INVALID_ARGUMENT); 2794e56987cSopenharmony_ci} 2804e56987cSopenharmony_ci 2814e56987cSopenharmony_ci/** 2824e56987cSopenharmony_ci* @tc.name: CmFinishTest006 2834e56987cSopenharmony_ci* @tc.desc: Test CmFinish handle not exist 2844e56987cSopenharmony_ci* @tc.type: FUNC 2854e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 2864e56987cSopenharmony_ci*/ 2874e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest006, TestSize.Level0) 2884e56987cSopenharmony_ci{ 2894e56987cSopenharmony_ci uint64_t handleValue = 0; 2904e56987cSopenharmony_ci struct CmBlob handle = { sizeof(handleValue), (uint8_t *)&handleValue }; 2914e56987cSopenharmony_ci struct CmBlob inData = { 0, nullptr }; 2924e56987cSopenharmony_ci struct CmBlob outData = { 0, nullptr }; 2934e56987cSopenharmony_ci 2944e56987cSopenharmony_ci int32_t ret = CmFinish(&handle, &inData, &outData); 2954e56987cSopenharmony_ci EXPECT_EQ(ret, CMR_ERROR_NOT_EXIST); 2964e56987cSopenharmony_ci} 2974e56987cSopenharmony_ci 2984e56987cSopenharmony_ci/** 2994e56987cSopenharmony_ci* @tc.name: CmFinishTest007 3004e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pss sha256 3014e56987cSopenharmony_ci* @tc.type: FUNC 3024e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 3034e56987cSopenharmony_ci*/ 3044e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest007, TestSize.Level0) 3054e56987cSopenharmony_ci{ 3064e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA256 }; 3074e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 3084e56987cSopenharmony_ci} 3094e56987cSopenharmony_ci 3104e56987cSopenharmony_ci/** 3114e56987cSopenharmony_ci* @tc.name: CmFinishTest008 3124e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, ecc sign verify, sha256 3134e56987cSopenharmony_ci* @tc.type: FUNC 3144e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 3154e56987cSopenharmony_ci*/ 3164e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest008, TestSize.Level0) 3174e56987cSopenharmony_ci{ 3184e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, CM_DIGEST_SHA256 }; 3194e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC, true, &spec); 3204e56987cSopenharmony_ci} 3214e56987cSopenharmony_ci 3224e56987cSopenharmony_ci/** 3234e56987cSopenharmony_ci* @tc.name: CmFinishTest009 3244e56987cSopenharmony_ci* @tc.desc: Test CmFinish abnormal case: caller is producer, rsa sign verify(sign invalid) 3254e56987cSopenharmony_ci* @tc.type: FUNC 3264e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 3274e56987cSopenharmony_ci*/ 3284e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest009, TestSize.Level0) 3294e56987cSopenharmony_ci{ 3304e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA256 }; 3314e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, false, &spec); 3324e56987cSopenharmony_ci} 3334e56987cSopenharmony_ci 3344e56987cSopenharmony_ci/** 3354e56987cSopenharmony_ci* @tc.name: CmFinishTest010 3364e56987cSopenharmony_ci* @tc.desc: Test CmFinish abnormal case: caller is producer, ecc sign verify(sign invalid) 3374e56987cSopenharmony_ci* @tc.type: FUNC 3384e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 3394e56987cSopenharmony_ci*/ 3404e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest010, TestSize.Level0) 3414e56987cSopenharmony_ci{ 3424e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, CM_DIGEST_SHA256 }; 3434e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC, false, &spec); 3444e56987cSopenharmony_ci} 3454e56987cSopenharmony_ci 3464e56987cSopenharmony_ci/** 3474e56987cSopenharmony_ci* @tc.name: CmFinishTest011 3484e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: normal case: caller is producer, max times + 1(first fail) 3494e56987cSopenharmony_ci* @tc.type: FUNC 3504e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 3514e56987cSopenharmony_ci*/ 3524e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest011, TestSize.Level0) 3534e56987cSopenharmony_ci{ 3544e56987cSopenharmony_ci TestInstallAppCert(CERT_KEY_ALG_ECC); 3554e56987cSopenharmony_ci ProducerSessionMaxTest(); 3564e56987cSopenharmony_ci TestUninstallAppCert(); 3574e56987cSopenharmony_ci} 3584e56987cSopenharmony_ci 3594e56987cSopenharmony_ci/** 3604e56987cSopenharmony_ci* @tc.name: CmFinishTestPerformance012 3614e56987cSopenharmony_ci* @tc.desc: 1000 times normal case: caller is producer, ecc sign verify 3624e56987cSopenharmony_ci* @tc.type: FUNC 3634e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 3644e56987cSopenharmony_ci*/ 3654e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTestPerformance012, TestSize.Level1) 3664e56987cSopenharmony_ci{ 3674e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA256 }; 3684e56987cSopenharmony_ci for (uint32_t i = 0; i < PERFORMACE_COUNT; ++i) { 3694e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC, true, &spec); 3704e56987cSopenharmony_ci } 3714e56987cSopenharmony_ci} 3724e56987cSopenharmony_ci 3734e56987cSopenharmony_ci/** 3744e56987cSopenharmony_ci* @tc.name: CmFinishTestPerformance013 3754e56987cSopenharmony_ci* @tc.desc: 1000 times normal case: caller is producer, rsa sign verify 3764e56987cSopenharmony_ci* @tc.type: FUNC 3774e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 3784e56987cSopenharmony_ci*/ 3794e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTestPerformance013, TestSize.Level1) 3804e56987cSopenharmony_ci{ 3814e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA256 }; 3824e56987cSopenharmony_ci for (uint32_t i = 0; i < PERFORMACE_COUNT; ++i) { 3834e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 3844e56987cSopenharmony_ci } 3854e56987cSopenharmony_ci} 3864e56987cSopenharmony_ci 3874e56987cSopenharmony_ci/** 3884e56987cSopenharmony_ci* @tc.name: CmFinishTest014 3894e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pss, sha512 3904e56987cSopenharmony_ci* @tc.type: FUNC 3914e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 3924e56987cSopenharmony_ci*/ 3934e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest014, TestSize.Level0) 3944e56987cSopenharmony_ci{ 3954e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA512 }; 3964e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 3974e56987cSopenharmony_ci} 3984e56987cSopenharmony_ci 3994e56987cSopenharmony_ci/** 4004e56987cSopenharmony_ci* @tc.name: CmFinishTest015 4014e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pss, sha384 4024e56987cSopenharmony_ci* @tc.type: FUNC 4034e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 4044e56987cSopenharmony_ci*/ 4054e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest015, TestSize.Level0) 4064e56987cSopenharmony_ci{ 4074e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA384 }; 4084e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 4094e56987cSopenharmony_ci} 4104e56987cSopenharmony_ci 4114e56987cSopenharmony_ci#ifdef DEPS_HKS_UNTRUSTED_RUNNING_ENV 4124e56987cSopenharmony_ci/** 4134e56987cSopenharmony_ci* @tc.name: CmFinishTest016 4144e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pss, sha224 4154e56987cSopenharmony_ci* @tc.type: FUNC 4164e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 4174e56987cSopenharmony_ci*/ 4184e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest016, TestSize.Level0) 4194e56987cSopenharmony_ci{ 4204e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA224 }; 4214e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 4224e56987cSopenharmony_ci} 4234e56987cSopenharmony_ci 4244e56987cSopenharmony_ci/** 4254e56987cSopenharmony_ci* @tc.name: CmFinishTest017 4264e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pss, sha1 4274e56987cSopenharmony_ci* @tc.type: FUNC 4284e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 4294e56987cSopenharmony_ci*/ 4304e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest017, TestSize.Level0) 4314e56987cSopenharmony_ci{ 4324e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA1 }; 4334e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 4344e56987cSopenharmony_ci} 4354e56987cSopenharmony_ci#endif 4364e56987cSopenharmony_ci 4374e56987cSopenharmony_ci/** 4384e56987cSopenharmony_ci* @tc.name: CmFinishTest018 4394e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pkcs1, nosha 4404e56987cSopenharmony_ci* @tc.type: FUNC 4414e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 4424e56987cSopenharmony_ci*/ 4434e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest018, TestSize.Level0) 4444e56987cSopenharmony_ci{ 4454e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PKCS1_V1_5, CM_DIGEST_NONE }; 4464e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 4474e56987cSopenharmony_ci} 4484e56987cSopenharmony_ci 4494e56987cSopenharmony_ci#ifdef DEPS_HKS_UNTRUSTED_RUNNING_ENV 4504e56987cSopenharmony_ci/** 4514e56987cSopenharmony_ci* @tc.name: CmFinishTest019 4524e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pkcs1, md5 4534e56987cSopenharmony_ci* @tc.type: FUNC 4544e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 4554e56987cSopenharmony_ci*/ 4564e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest019, TestSize.Level0) 4574e56987cSopenharmony_ci{ 4584e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PKCS1_V1_5, CM_DIGEST_MD5 }; 4594e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 4604e56987cSopenharmony_ci} 4614e56987cSopenharmony_ci 4624e56987cSopenharmony_ci/** 4634e56987cSopenharmony_ci* @tc.name: CmFinishTest020 4644e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pkcs1, sha224 4654e56987cSopenharmony_ci* @tc.type: FUNC 4664e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 4674e56987cSopenharmony_ci*/ 4684e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest020, TestSize.Level0) 4694e56987cSopenharmony_ci{ 4704e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PKCS1_V1_5, CM_DIGEST_SHA224 }; 4714e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 4724e56987cSopenharmony_ci} 4734e56987cSopenharmony_ci#endif 4744e56987cSopenharmony_ci 4754e56987cSopenharmony_ci/** 4764e56987cSopenharmony_ci* @tc.name: CmFinishTest021 4774e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pkcs1, sha256 4784e56987cSopenharmony_ci* @tc.type: FUNC 4794e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 4804e56987cSopenharmony_ci*/ 4814e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest021, TestSize.Level0) 4824e56987cSopenharmony_ci{ 4834e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PKCS1_V1_5, CM_DIGEST_SHA256 }; 4844e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 4854e56987cSopenharmony_ci} 4864e56987cSopenharmony_ci 4874e56987cSopenharmony_ci/** 4884e56987cSopenharmony_ci* @tc.name: CmFinishTest022 4894e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pkcs1, sha384 4904e56987cSopenharmony_ci* @tc.type: FUNC 4914e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 4924e56987cSopenharmony_ci*/ 4934e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest022, TestSize.Level0) 4944e56987cSopenharmony_ci{ 4954e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PKCS1_V1_5, CM_DIGEST_SHA384 }; 4964e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 4974e56987cSopenharmony_ci} 4984e56987cSopenharmony_ci 4994e56987cSopenharmony_ci/** 5004e56987cSopenharmony_ci* @tc.name: CmFinishTest023 5014e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pkcs1, sha512 5024e56987cSopenharmony_ci* @tc.type: FUNC 5034e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 5044e56987cSopenharmony_ci*/ 5054e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest023, TestSize.Level0) 5064e56987cSopenharmony_ci{ 5074e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PKCS1_V1_5, CM_DIGEST_SHA512 }; 5084e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 5094e56987cSopenharmony_ci} 5104e56987cSopenharmony_ci 5114e56987cSopenharmony_ci#ifdef DEPS_HKS_UNTRUSTED_RUNNING_ENV 5124e56987cSopenharmony_ci/** 5134e56987cSopenharmony_ci* @tc.name: CmFinishTest024 5144e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, pkcs1, sha1 5154e56987cSopenharmony_ci* @tc.type: FUNC 5164e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 5174e56987cSopenharmony_ci*/ 5184e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest024, TestSize.Level0) 5194e56987cSopenharmony_ci{ 5204e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PKCS1_V1_5, CM_DIGEST_SHA1 }; 5214e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA, true, &spec); 5224e56987cSopenharmony_ci} 5234e56987cSopenharmony_ci 5244e56987cSopenharmony_ci/** 5254e56987cSopenharmony_ci* @tc.name: CmFinishTest025 5264e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, ecc sign verify, sha1 5274e56987cSopenharmony_ci* @tc.type: FUNC 5284e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 5294e56987cSopenharmony_ci*/ 5304e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest025, TestSize.Level0) 5314e56987cSopenharmony_ci{ 5324e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, CM_DIGEST_SHA1 }; 5334e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC, true, &spec); 5344e56987cSopenharmony_ci} 5354e56987cSopenharmony_ci 5364e56987cSopenharmony_ci/** 5374e56987cSopenharmony_ci* @tc.name: CmFinishTest026 5384e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, ecc sign verify, sha224 5394e56987cSopenharmony_ci* @tc.type: FUNC 5404e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 5414e56987cSopenharmony_ci*/ 5424e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest026, TestSize.Level0) 5434e56987cSopenharmony_ci{ 5444e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, CM_DIGEST_SHA224 }; 5454e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC, true, &spec); 5464e56987cSopenharmony_ci} 5474e56987cSopenharmony_ci#endif 5484e56987cSopenharmony_ci 5494e56987cSopenharmony_ci/** 5504e56987cSopenharmony_ci* @tc.name: CmFinishTest027 5514e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, ecc sign verify, sha384 5524e56987cSopenharmony_ci* @tc.type: FUNC 5534e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 5544e56987cSopenharmony_ci*/ 5554e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest027, TestSize.Level0) 5564e56987cSopenharmony_ci{ 5574e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, CM_DIGEST_SHA384 }; 5584e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC, true, &spec); 5594e56987cSopenharmony_ci} 5604e56987cSopenharmony_ci 5614e56987cSopenharmony_ci/** 5624e56987cSopenharmony_ci* @tc.name: CmFinishTest028 5634e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, ecc sign verify, sha512 5644e56987cSopenharmony_ci* @tc.type: FUNC 5654e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 5664e56987cSopenharmony_ci*/ 5674e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest028, TestSize.Level0) 5684e56987cSopenharmony_ci{ 5694e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, CM_DIGEST_SHA512 }; 5704e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC, true, &spec); 5714e56987cSopenharmony_ci} 5724e56987cSopenharmony_ci 5734e56987cSopenharmony_ci#ifdef DEPS_HKS_UNTRUSTED_RUNNING_ENV 5744e56987cSopenharmony_ci/** 5754e56987cSopenharmony_ci* @tc.name: CmFinishTest029 5764e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, 512 5774e56987cSopenharmony_ci* @tc.type: FUNC 5784e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 5794e56987cSopenharmony_ci*/ 5804e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest029, TestSize.Level0) 5814e56987cSopenharmony_ci{ 5824e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA224 }; 5834e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA_512, true, &spec); 5844e56987cSopenharmony_ci} 5854e56987cSopenharmony_ci 5864e56987cSopenharmony_ci/** 5874e56987cSopenharmony_ci* @tc.name: CmFinishTest030 5884e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, 1024 5894e56987cSopenharmony_ci* @tc.type: FUNC 5904e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 5914e56987cSopenharmony_ci*/ 5924e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest030, TestSize.Level0) 5934e56987cSopenharmony_ci{ 5944e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PSS, CM_DIGEST_SHA384 }; 5954e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA_1024, true, &spec); 5964e56987cSopenharmony_ci} 5974e56987cSopenharmony_ci#endif 5984e56987cSopenharmony_ci 5994e56987cSopenharmony_ci/** 6004e56987cSopenharmony_ci* @tc.name: CmFinishTest031 6014e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, 3072 6024e56987cSopenharmony_ci* @tc.type: FUNC 6034e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 6044e56987cSopenharmony_ci*/ 6054e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest031, TestSize.Level0) 6064e56987cSopenharmony_ci{ 6074e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PKCS1_V1_5, CM_DIGEST_NONE }; 6084e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA_3072, true, &spec); 6094e56987cSopenharmony_ci} 6104e56987cSopenharmony_ci 6114e56987cSopenharmony_ci/** 6124e56987cSopenharmony_ci* @tc.name: CmFinishTest032 6134e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, rsa sign verify, 4096 6144e56987cSopenharmony_ci* @tc.type: FUNC 6154e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 6164e56987cSopenharmony_ci*/ 6174e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest032, TestSize.Level0) 6184e56987cSopenharmony_ci{ 6194e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, CM_PADDING_PKCS1_V1_5, CM_DIGEST_SHA512 }; 6204e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_RSA_4096, true, &spec); 6214e56987cSopenharmony_ci} 6224e56987cSopenharmony_ci 6234e56987cSopenharmony_ci#ifdef DEPS_HKS_UNTRUSTED_RUNNING_ENV 6244e56987cSopenharmony_ci/** 6254e56987cSopenharmony_ci* @tc.name: CmFinishTest033 6264e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, ecc sign verify, P224 6274e56987cSopenharmony_ci* @tc.type: FUNC 6284e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 6294e56987cSopenharmony_ci*/ 6304e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest033, TestSize.Level0) 6314e56987cSopenharmony_ci{ 6324e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, CM_DIGEST_SHA256 }; 6334e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC_P224, true, &spec); 6344e56987cSopenharmony_ci} 6354e56987cSopenharmony_ci#endif 6364e56987cSopenharmony_ci 6374e56987cSopenharmony_ci/** 6384e56987cSopenharmony_ci* @tc.name: CmFinishTest034 6394e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, ecc sign verify, P384 6404e56987cSopenharmony_ci* @tc.type: FUNC 6414e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 6424e56987cSopenharmony_ci*/ 6434e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest034, TestSize.Level0) 6444e56987cSopenharmony_ci{ 6454e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, CM_DIGEST_SHA384 }; 6464e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC_P384, true, &spec); 6474e56987cSopenharmony_ci} 6484e56987cSopenharmony_ci 6494e56987cSopenharmony_ci/** 6504e56987cSopenharmony_ci* @tc.name: CmFinishTest035 6514e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, ecc sign verify, P521 6524e56987cSopenharmony_ci* @tc.type: FUNC 6534e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 6544e56987cSopenharmony_ci*/ 6554e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest035, TestSize.Level0) 6564e56987cSopenharmony_ci{ 6574e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, CM_DIGEST_SHA512 }; 6584e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ECC_P521, true, &spec); 6594e56987cSopenharmony_ci} 6604e56987cSopenharmony_ci 6614e56987cSopenharmony_ci/** 6624e56987cSopenharmony_ci* @tc.name: CmFinishTest036 6634e56987cSopenharmony_ci* @tc.desc: Test CmFinish normal case: caller is producer, ed25519 sign verify 6644e56987cSopenharmony_ci* @tc.type: FUNC 6654e56987cSopenharmony_ci* @tc.require: AR000H0MIA /SR000H09NA 6664e56987cSopenharmony_ci*/ 6674e56987cSopenharmony_ciHWTEST_F(CmFinishTest, CmFinishTest036, TestSize.Level0) 6684e56987cSopenharmony_ci{ 6694e56987cSopenharmony_ci struct CmSignatureSpec spec = { CM_KEY_PURPOSE_SIGN, 0, 0 }; 6704e56987cSopenharmony_ci TestSignVerify(CERT_KEY_ALG_ED25519, true, &spec); 6714e56987cSopenharmony_ci} 6724e56987cSopenharmony_ci} // end of namespace 6734e56987cSopenharmony_ci 674