• 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 "huks_agree_ecdh_test_common.h"
17 
18 #include <gtest/gtest.h>
19 
20 using namespace testing::ext;
21 namespace Unittest::EcdhAgree {
HksEcdhAgreeFinish(const struct OH_Huks_Blob * keyAlias,const struct OH_Huks_Blob * publicKey,const struct OH_Huks_ParamSet * initParamSet,const struct OH_Huks_ParamSet * finishParamSet,struct OH_Huks_Blob * outData)22 OH_Huks_Result HksEcdhAgreeFinish(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_Blob *publicKey,
23     const struct OH_Huks_ParamSet *initParamSet, const struct OH_Huks_ParamSet *finishParamSet, struct OH_Huks_Blob *outData)
24 {
25     struct OH_Huks_Blob inData = {
26         g_inData.length(),
27         (uint8_t *)g_inData.c_str()
28     };
29 
30     uint8_t handleU[sizeof(uint64_t)] = {0};
31     struct OH_Huks_Blob handle = { sizeof(uint64_t), handleU };
32     OH_Huks_Result ret = OH_Huks_InitSession(keyAlias, initParamSet, &handle, nullptr);
33     EXPECT_EQ(ret.errorCode, (int32_t)OH_HUKS_SUCCESS) << "Init failed.";
34     if (ret.errorCode != (int32_t)OH_HUKS_SUCCESS) {
35         return ret;
36     }
37 
38     uint8_t outDataU[ECDH_COMMON_SIZE] = {0};
39     struct OH_Huks_Blob outDataUpdate = { ECDH_COMMON_SIZE, outDataU };
40     ret = OH_Huks_UpdateSession(&handle, initParamSet, publicKey, &outDataUpdate);
41     EXPECT_EQ(ret.errorCode, (int32_t)OH_HUKS_SUCCESS) << "Update failed.";
42     if (ret.errorCode != (int32_t)OH_HUKS_SUCCESS) {
43         return ret;
44     }
45 
46     ret = OH_Huks_FinishSession(&handle, finishParamSet, &inData, outData);
47     EXPECT_EQ(ret.errorCode, (int32_t)OH_HUKS_SUCCESS) << "Finish failed.";
48     if (ret.errorCode != (int32_t)OH_HUKS_SUCCESS) {
49         return ret;
50     }
51     return ret;
52 }
53 
HksEcdhAgreeAbort(const struct OH_Huks_Blob * keyAlias,const struct OH_Huks_Blob * publicKey,const struct OH_Huks_ParamSet * initParamSet)54 OH_Huks_Result HksEcdhAgreeAbort(const struct OH_Huks_Blob *keyAlias, const struct OH_Huks_Blob *publicKey,
55     const struct OH_Huks_ParamSet *initParamSet)
56 {
57     uint8_t handleU[sizeof(uint64_t)] = {0};
58     struct OH_Huks_Blob handle = { sizeof(uint64_t), handleU };
59     OH_Huks_Result ret = OH_Huks_InitSession(keyAlias, initParamSet, &handle, nullptr);
60     EXPECT_EQ(ret.errorCode, (int32_t)OH_HUKS_SUCCESS) << "Init failed.";
61     if (ret.errorCode != (int32_t)OH_HUKS_SUCCESS) {
62         return ret;
63     }
64 
65     uint8_t outDataU[ECDH_COMMON_SIZE] = {0};
66     struct OH_Huks_Blob outDataUpdate = { ECDH_COMMON_SIZE, outDataU };
67     ret = OH_Huks_UpdateSession(&handle, initParamSet, publicKey, &outDataUpdate);
68     EXPECT_EQ(ret.errorCode, (int32_t)OH_HUKS_SUCCESS) << "Update failed.";
69     if (ret.errorCode != (int32_t)OH_HUKS_SUCCESS) {
70         return ret;
71     }
72 
73     ret = OH_Huks_AbortSession(&handle, initParamSet);
74     EXPECT_EQ(ret.errorCode, (int32_t)OH_HUKS_SUCCESS) << "Finish failed.";
75     if (ret.errorCode != (int32_t)OH_HUKS_SUCCESS) {
76         return ret;
77     }
78     return ret;
79 }
80 
HksEcdhAgreeExport(const struct OH_Huks_Blob * keyAlias1,const struct OH_Huks_Blob * keyAlias2,struct OH_Huks_Blob * publicKey1,struct OH_Huks_Blob * publicKey2,const struct OH_Huks_ParamSet * genParamSet)81 OH_Huks_Result HksEcdhAgreeExport(const struct OH_Huks_Blob *keyAlias1, const struct OH_Huks_Blob *keyAlias2,
82     struct OH_Huks_Blob *publicKey1, struct OH_Huks_Blob *publicKey2, const struct OH_Huks_ParamSet *genParamSet)
83 {
84     OH_Huks_Result ret = OH_Huks_ExportPublicKeyItem(keyAlias1, genParamSet, publicKey1);
85     EXPECT_EQ(ret.errorCode, (int32_t)OH_HUKS_SUCCESS) << "ExportPublicKey01 failed.";
86     if (ret.errorCode != (int32_t)OH_HUKS_SUCCESS) {
87         return ret;
88     }
89     ret = OH_Huks_ExportPublicKeyItem(keyAlias2, genParamSet, publicKey2);
90     EXPECT_EQ(ret.errorCode, (int32_t)OH_HUKS_SUCCESS) << "ExportPublicKey02 failed.";
91     if (ret.errorCode != (int32_t)OH_HUKS_SUCCESS) {
92         return ret;
93     }
94     return ret;
95 }
96 
HksEcdhAgreeFreeParamSet(struct OH_Huks_ParamSet * paramSet1,struct OH_Huks_ParamSet * paramSet2,struct OH_Huks_ParamSet * paramSet3)97 void HksEcdhAgreeFreeParamSet(struct OH_Huks_ParamSet *paramSet1, struct OH_Huks_ParamSet *paramSet2,
98     struct OH_Huks_ParamSet *paramSet3)
99 {
100     OH_Huks_FreeParamSet(&paramSet1);
101     OH_Huks_FreeParamSet(&paramSet2);
102     OH_Huks_FreeParamSet(&paramSet3);
103 }
104 
HksEcdhAgreeFreeParamSet(struct OH_Huks_ParamSet * paramSet1,struct OH_Huks_ParamSet * paramSet2,struct OH_Huks_ParamSet * paramSet3,struct OH_Huks_ParamSet * paramSet4,struct OH_Huks_ParamSet * paramSet5)105 void HksEcdhAgreeFreeParamSet(struct OH_Huks_ParamSet *paramSet1, struct OH_Huks_ParamSet *paramSet2,
106     struct OH_Huks_ParamSet *paramSet3, struct OH_Huks_ParamSet *paramSet4, struct OH_Huks_ParamSet *paramSet5)
107 {
108     OH_Huks_FreeParamSet(&paramSet1);
109     OH_Huks_FreeParamSet(&paramSet2);
110     OH_Huks_FreeParamSet(&paramSet3);
111     OH_Huks_FreeParamSet(&paramSet4);
112     OH_Huks_FreeParamSet(&paramSet5);
113 }
114 
HksEcdhAgreeFreeBlob(struct OH_Huks_Blob * blob1,struct OH_Huks_Blob * blob2)115 void HksEcdhAgreeFreeBlob(struct OH_Huks_Blob *blob1, struct OH_Huks_Blob *blob2)
116 {
117     HksFree(blob1->data);
118     HksFree(blob2->data);
119 }
120 
HksEcdhAgreeFreeBlob(struct OH_Huks_Blob * blob1,struct OH_Huks_Blob * blob2,struct OH_Huks_Blob * blob3,struct OH_Huks_Blob * blob4)121 void HksEcdhAgreeFreeBlob(struct OH_Huks_Blob *blob1, struct OH_Huks_Blob *blob2,
122     struct OH_Huks_Blob *blob3, struct OH_Huks_Blob *blob4)
123 {
124     HksFree(blob1->data);
125     HksFree(blob2->data);
126     HksFree(blob3->data);
127     HksFree(blob4->data);
128 }
129 }