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