• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *    http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "hks_ecdh_agree_test_common.h"
17 
18 #include <gtest/gtest.h>
19 
HksEcdhAgreeFinish(const struct HksBlob * keyAlias,const struct HksBlob * publicKey,const struct HksParamSet * initParamSet,const struct HksParamSet * finishParamSet,struct HksBlob * outData)20 int32_t Unittest::EcdhAgree::HksEcdhAgreeFinish(const struct HksBlob *keyAlias, const struct HksBlob *publicKey,
21     const struct HksParamSet *initParamSet, const struct HksParamSet *finishParamSet, struct HksBlob *outData)
22 {
23     struct HksBlob inData = {
24         Unittest::EcdhAgree::g_inData.length(),
25         (uint8_t *)Unittest::EcdhAgree::g_inData.c_str()
26     };
27 
28     uint8_t handleU[sizeof(uint64_t)] = {0};
29     struct HksBlob handle = { sizeof(uint64_t), handleU };
30     int32_t ret = HksInit(keyAlias, initParamSet, &handle);
31     EXPECT_EQ(ret, HKS_SUCCESS) << "Init failed.";
32     if (ret != HKS_SUCCESS) {
33         return HKS_FAILURE;
34     }
35 
36     uint8_t outDataU[Unittest::EcdhAgree::ECDH_COMMON_SIZE] = {0};
37     struct HksBlob outDataUpdate = { Unittest::EcdhAgree::ECDH_COMMON_SIZE, outDataU };
38     ret = HksUpdate(&handle, initParamSet, publicKey, &outDataUpdate);
39     EXPECT_EQ(ret, HKS_SUCCESS) << "Update failed.";
40     if (ret != HKS_SUCCESS) {
41         return HKS_FAILURE;
42     }
43 
44     ret = HksFinish(&handle, finishParamSet, &inData, outData);
45     EXPECT_EQ(ret, HKS_SUCCESS) << "Finish failed.";
46     if (ret != HKS_SUCCESS) {
47         return HKS_FAILURE;
48     }
49     return HKS_SUCCESS;
50 }
51 
HksEcdhAgreeAbort(const struct HksBlob * keyAlias,const struct HksBlob * publicKey,const struct HksParamSet * initParamSet)52 int32_t Unittest::EcdhAgree::HksEcdhAgreeAbort(const struct HksBlob *keyAlias, const struct HksBlob *publicKey,
53     const struct HksParamSet *initParamSet)
54 {
55     uint8_t handleU[sizeof(uint64_t)] = {0};
56     struct HksBlob handle = { sizeof(uint64_t), handleU };
57     int32_t ret = HksInit(keyAlias, initParamSet, &handle);
58     EXPECT_EQ(ret, HKS_SUCCESS) << "Init failed.";
59     if (ret != HKS_SUCCESS) {
60         return HKS_FAILURE;
61     }
62 
63     uint8_t outDataU[Unittest::EcdhAgree::ECDH_COMMON_SIZE] = {0};
64     struct HksBlob outDataUpdate = { Unittest::EcdhAgree::ECDH_COMMON_SIZE, outDataU };
65     ret = HksUpdate(&handle, initParamSet, publicKey, &outDataUpdate);
66     EXPECT_EQ(ret, HKS_SUCCESS) << "Update failed.";
67     if (ret != HKS_SUCCESS) {
68         return HKS_FAILURE;
69     }
70 
71     ret = HksAbort(&handle, initParamSet);
72     EXPECT_EQ(ret, HKS_SUCCESS) << "Finish failed.";
73     if (ret != HKS_SUCCESS) {
74         return HKS_FAILURE;
75     }
76     return HKS_SUCCESS;
77 }
78 
HksEcdhAgreeExport(const struct HksBlob * keyAlias1,const struct HksBlob * keyAlias2,struct HksBlob * publicKey1,struct HksBlob * publicKey2,const struct HksParamSet * genParamSet)79 int32_t Unittest::EcdhAgree::HksEcdhAgreeExport(const struct HksBlob *keyAlias1, const struct HksBlob *keyAlias2,
80     struct HksBlob *publicKey1, struct HksBlob *publicKey2, const struct HksParamSet *genParamSet)
81 {
82     int32_t ret = HksExportPublicKey(keyAlias1, genParamSet, publicKey1);
83     EXPECT_EQ(ret, HKS_SUCCESS) << "ExportPublicKey01 failed.";
84     if (ret != HKS_SUCCESS) {
85         return HKS_FAILURE;
86     }
87     ret = HksExportPublicKey(keyAlias2, genParamSet, publicKey2);
88     EXPECT_EQ(ret, HKS_SUCCESS) << "ExportPublicKey02 failed.";
89     if (ret != HKS_SUCCESS) {
90         return HKS_FAILURE;
91     }
92     return HKS_SUCCESS;
93 }
94 
HksEcdhAgreeFreeParamSet(struct HksParamSet * paramSet1,struct HksParamSet * paramSet2,struct HksParamSet * paramSet3)95 void Unittest::EcdhAgree::HksEcdhAgreeFreeParamSet(struct HksParamSet *paramSet1, struct HksParamSet *paramSet2,
96     struct HksParamSet *paramSet3)
97 {
98     HksFreeParamSet(&paramSet1);
99     HksFreeParamSet(&paramSet2);
100     HksFreeParamSet(&paramSet3);
101 }
102 
HksEcdhAgreeFreeParamSet(struct HksParamSet * paramSet1,struct HksParamSet * paramSet2,struct HksParamSet * paramSet3,struct HksParamSet * paramSet4,struct HksParamSet * paramSet5)103 void Unittest::EcdhAgree::HksEcdhAgreeFreeParamSet(struct HksParamSet *paramSet1, struct HksParamSet *paramSet2,
104     struct HksParamSet *paramSet3, struct HksParamSet *paramSet4, struct HksParamSet *paramSet5)
105 {
106     HksFreeParamSet(&paramSet1);
107     HksFreeParamSet(&paramSet2);
108     HksFreeParamSet(&paramSet3);
109     HksFreeParamSet(&paramSet4);
110     HksFreeParamSet(&paramSet5);
111 }
112 
HksEcdhAgreeFreeBlob(struct HksBlob * blob1,struct HksBlob * blob2)113 void Unittest::EcdhAgree::HksEcdhAgreeFreeBlob(struct HksBlob *blob1, struct HksBlob *blob2)
114 {
115     HksFree(blob1->data);
116     HksFree(blob2->data);
117 }
118 
HksEcdhAgreeFreeBlob(struct HksBlob * blob1,struct HksBlob * blob2,struct HksBlob * blob3,struct HksBlob * blob4)119 void Unittest::EcdhAgree::HksEcdhAgreeFreeBlob(struct HksBlob *blob1, struct HksBlob *blob2,
120     struct HksBlob *blob3, struct HksBlob *blob4)
121 {
122     HksFree(blob1->data);
123     HksFree(blob2->data);
124     HksFree(blob3->data);
125     HksFree(blob4->data);
126 }