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 "dslm_oem_property_test.h"
17
18 #include <gtest/gtest.h>
19
20 #include "file_ex.h"
21 #include "nativetoken_kit.h"
22 #include "securec.h"
23 #include "token_setproc.h"
24
25 #include "device_security_defines.h"
26 #include "dslm_credential.h"
27 #include "dslm_credential_utils.h"
28 #include "dslm_crypto.h"
29 #include "external_interface_adapter.h"
30 #include "hks_adapter.h"
31 #include "hks_type.h"
32 #include "utils_mem.h"
33 #include "utils_tlv.h"
34
35 using namespace std;
36 using namespace std::chrono;
37 using namespace testing;
38 using namespace testing::ext;
39
40 // for testing
41 extern "C" {
42 extern int32_t EcdsaVerify(const struct DataBuffer *srcData, const struct DataBuffer *sigData,
43 const struct DataBuffer *pbkData, uint32_t algorithm);
44 extern int32_t FillHksParamSet(struct HksParamSet **paramSet, struct HksParam *param, int32_t paramNums);
45 extern int32_t HksGenerateKeyAdapter(const struct HksBlob *keyAlias);
46 extern int32_t BufferToHksCertChain(const uint8_t *data, uint32_t dataLen, struct HksCertChain *hksCertChain);
47 extern int32_t HksCertChainToBuffer(const struct HksCertChain *hksCertChain, uint8_t **data, uint32_t *dataLen);
48 extern void DestroyHksCertChain(struct HksCertChain *certChain);
49 extern int32_t ConstructHksCertChain(struct HksCertChain **certChain,
50 const struct HksCertChainInitParams *certChainParam);
51 }
52
53 namespace OHOS {
54 namespace Security {
55 namespace DslmUnitTest {
SetUpTestCase()56 void DslmOemPropertyTest::SetUpTestCase()
57 {
58 }
TearDownTestCase()59 void DslmOemPropertyTest::TearDownTestCase()
60 {
61 }
SetUp()62 void DslmOemPropertyTest::SetUp()
63 {
64 }
TearDown()65 void DslmOemPropertyTest::TearDown()
66 {
67 }
68
69 /**
70 * @tc.name: VerifyDslmCredential_case4
71 * @tc.desc: function VerifyDslmCredential with malformed input
72 * @tc.type: FUNC
73 * @tc.require: issueNumber
74 */
75 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case1, TestSize.Level0)
76 {
77 int32_t ret;
78 const char *cred = "test";
79 DslmCredInfo info;
80 AttestationList list;
81 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
82 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
83
84 ret = VerifyDslmCredential(cred, nullptr, &list);
85 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
86
87 ret = VerifyDslmCredential(cred, &info, &list);
88 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
89 }
90
91 /**
92 * @tc.name: VerifyDslmCredential_case2
93 * @tc.desc: function VerifyDslmCredential with malformed input
94 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
95 * @tc.type: FUNC
96 * @tc.require: issueNumber
97 */
98 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case2, TestSize.Level0)
99 {
100 DslmCredInfo info;
101 AttestationList list;
102 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
103 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
104
105 {
106 const char *cred = "eyJ0eXAiOiAiRFNMIn0=";
107
108 int32_t ret = VerifyDslmCredential(cred, &info, &list);
109 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
110 }
111
112 {
113 const char *cred = "eyJ0eXAiOiAiRFNMIn0=."
114 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjo"
115 "gInJrMzU2OCIsICJzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnbl"
116 "RpbWUiOiAiMjAyMjExMjYxNzMzNDMiLCAidmVyc2lvbiI6ICIxLjAuMSJ9";
117
118 int32_t ret = VerifyDslmCredential(cred, &info, &list);
119 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
120 }
121
122 {
123 const char *cred = "eyJ0eXAiOiAiRFNMIn0=."
124 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjo"
125 "gInJrMzU2OCIsICJzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnbl"
126 "RpbWUiOiAiMjAyMjExMjYxNzMzNDMiLCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGUCMEPpiP8hOZlve/"
127 "H81B7AvL4Fuwe8YYAdKckLEOcEQKKTiNRM6irjXSwboMppAFNMSgIxAILC1S6KMp6Zp2ACppXF3j3fV0PBdLZOSO1Lm"
128 "9sqtdiJ5FidaAaMYlwdLMy3vfBeSg==";
129
130 int32_t ret = VerifyDslmCredential(cred, &info, &list);
131 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
132 }
133 }
134
135 /**
136 * @tc.name: VerifyDslmCredential_case3
137 * @tc.desc: function VerifyDslmCredential with malformed input
138 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
139 * @tc.type: FUNC
140 * @tc.require: issueNumber
141 */
142 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case3, TestSize.Level0)
143 {
144 DslmCredInfo info;
145 AttestationList list;
146 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
147 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
148
149 {
150 const char *cred = "eyJ0eXAiOiAiRFNMIn0=.";
151
152 int32_t ret = VerifyDslmCredential(cred, &info, &list);
153 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
154 }
155
156 {
157 const char *cred = "eyJ0eXAiOiAiRFNMIn0=."
158 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjo"
159 "gInJrMzU2OCIsICJzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnbl"
160 "RpbWUiOiAiMjAyMjExMjYxNzMzNDMiLCAidmVyc2lvbiI6ICIxLjAuMSJ9.";
161
162 int32_t ret = VerifyDslmCredential(cred, &info, &list);
163 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
164 }
165
166 {
167 const char *cred = "eyJ0eXAiOiAiRFNMIn0=."
168 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjo"
169 "gInJrMzU2OCIsICJzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnbl"
170 "RpbWUiOiAiMjAyMjExMjYxNzMzNDMiLCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGUCMEPpiP8hOZlve/"
171 "H81B7AvL4Fuwe8YYAdKckLEOcEQKKTiNRM6irjXSwboMppAFNMSgIxAILC1S6KMp6Zp2ACppXF3j3fV0PBdLZOSO1Lm"
172 "9sqtdiJ5FidaAaMYlwdLMy3vfBeSg==.";
173
174 int32_t ret = VerifyDslmCredential(cred, &info, &list);
175 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
176 }
177 }
178
179 /**
180 * @tc.name: VerifyDslmCredential_case4
181 * @tc.desc: function VerifyDslmCredential with malformed input
182 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
183 * @tc.type: FUNC
184 * @tc.require: issueNumber
185 */
186 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case4, TestSize.Level0)
187 {
188 DslmCredInfo info;
189 AttestationList list;
190 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
191 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
192
193 // malformed attestation makes SplitCredentialAttestationList()
194 // failed when DslmCreateJson()
195 const char *cred =
196 "eyJ0eXAiOiAiRFNMIn0=."
197 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
198 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjYxNzMzNDMi"
199 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGUCMEPpiP8hOZlve/"
200 "H81B7AvL4Fuwe8YYAdKckLEOcEQKKTiNRM6irjXSwboMppAFNMSgIxAILC1S6KMp6Zp2ACppXF3j3fV0PBdLZOSO1Lm9sqtdiJ5FidaAaM"
201 "YlwdLMy3vfBeSg==."
202 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
203 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
204 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HVUNNUUNIUVdzYXNYc1NpL3dJUThmWW5PRlhsaWhTem"
205 "5ETG1RSjBEOGp4U3RVM2Z2bk4xZkgzUVJJUnRzM1lIK293bE9zQ01EY2pJU0pOK2J6M2g0VUU2UTl1NW92K0RHcFRHL2Vqd0xTU2FyMHJz"
206 "Z09ZSVovODdRb0p2QllaM2hFamlDcWQ1dz09In0sIHsidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQV"
207 "FFTEEySUFCRkRMR2M4YlhQT2RBYVpLN25OQUZrYkRoVHBwcTNaQW92T3FKZDJKMy9vdW14eG84QnQ4ZGhiQjBtR3FHQjE4V0hpTkUwNFRC"
208 "S1RvYU9lQ3NtZEZ0dUtXcEtwZEtIRDdGL3YvaXhxbHd6MnMzSk9scFQ3dUQzbjNieHFaVHJzMnFnPT0iLCAic2lnbmF0dXJlIjxxIk1HUU"
209 "NNSGthczBkZDgwUVpiQVB6eElhMXhBYmd1WlxxNjU0T29rL2VGR2M0ekxLczlqYjVKK24xxHJDcytoa0JrR0N0b3dJd1pYcGlYUjRiS1h3"
210 "RUlTZmdpSDI4dkZaZVQxcFJCcnFkSHd2d3ErOXxxxWQzMkhkeC90YWhHZ1kySHVZZFNHZDUifSwgeyJ1c2VyUHVibGljS2V5IjogIk1Ib3"
211 "dGQVlIS29aSXpqMENBUVlKS3lRREF3SUlBUUVMQTJJQUJEVTVaYkhESGl2TGgzRFN4UDEwbGluL2FIMXJabG1XMnBMZ3JwZ3BiL0lnWkkr"
212 "MzJyWC9QdFhURGZWYmVyRG93VkhURTJ0MFZMNzlnQ2wrbUVCL1dBeDVEZW1lamlMNTJ6S0l6M2RTNWJxVHdYVExvRHZTSml3Z3dxYmZPME"
213 "ZtK3c9PSIsICJzaWxxYXR1cmUiOiAiTUdRQ01HWlI0MUdsd1RnL0xUMGtFT3lTZnRHTDBlV04xx2dXdFo0NTZ2VkdqMm56WnhsamFlN2pv"
214 "eWw4cWZHNjZSTUdTQUl3S2M3V2VpQ1c1UlFGSjROWitSRUErNVNpMHhRVFpOdzlhb1FTUG5LVTA0L2ZIWUhkVERNWitncUY3U3RJMDZTbS"
215 "J9XQ==";
216
217 int32_t ret = VerifyDslmCredential(cred, &info, &list);
218 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
219 }
220
221 /**
222 * @tc.name: VerifyDslmCredential_case5
223 * @tc.desc: function VerifyDslmCredential with malformed input
224 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
225 * @tc.type: FUNC
226 * @tc.require: issueNumber
227 */
228 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case5, TestSize.Level0)
229 {
230 DslmCredInfo info;
231 AttestationList list;
232 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
233 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
234
235 // malformed attestation makes SplitCredentialAttestationList()
236 // failed when DslmGetJsonFieldJsonArraySize()
237 const char *cred =
238 "eyJ0eXAiOiAiRFNMIn0=."
239 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
240 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxNzQzMzUi"
241 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGQCMA0DfA8wWdMn08lA8h76mpNadU0EJIoJGmaub6ccWZynHaPcSsMtCz6CrNTYMcP9+"
242 "QIwGc5T3K0csJUYxnFgvgfMuq2rHPzACTls0b7e+s8pZtsK97MFzwIxX6oskIYxkVra."
243 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
244 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
245 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HVUNNSC9LWDVDVmljZ3ZQYmUvYzFWUTl1eFV5N2x6ZX"
246 "lMQmtQYkc4UnNLcURKSERRK1NZeFpoZWd5SzZRZ3JXbTVhcUFJeEFJcHhpNVd1eG5QeXNvZ3MreE1YWmU5ZXVJSHFxUzlmdWtrK1ROQzhv"
247 "dXFjU29Wd3RkbUgzSUpNb091b3JQdFpiZz09In0sIHsidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQV"
248 "FFTEEySUFCRkRMR2M4YlhQT2RBYVpLN25OQUZrYkRoVHBwcTNaQW92T3FKZDJKMy9vdW14eG84QnQ4ZGhiQjBtR3FHQjE4V0hpTkUwNFRC"
249 "S1RvYU9lQ3NtZEZ0dUtXcEtwZEtIRDdGL3YvaXhxbHd6MnMzSk9scFQ3dUQzbjNieHFaVHJzMnFnPT0iLCAic2lnbmF0dXJlIjogIk1HUU"
250 "NNSFU3b3M3UEgzd0ttcDdmN0krUFNlRzY3K2cvWkRwZE1XM1ZwMWVhUEgzVEpCendSTlJKNE83SlNneE4zZjVCbVFJd0ZUOHBBTVVLNTY0"
251 "NXRTNDZnQ3d5UzdxM2RKWElMbGJhVkxCeWVZY0RMN3B2WUZERWhPSlV0aEhPdGoxRnZxQ0wifV0=";
252
253 int32_t ret = VerifyDslmCredential(cred, &info, &list);
254 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
255 }
256
257 /**
258 * @tc.name: VerifyDslmCredential_case6
259 * @tc.desc: function VerifyDslmCredential with malformed input
260 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
261 * @tc.type: FUNC
262 * @tc.require: issueNumber
263 */
264 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case6, TestSize.Level0)
265 {
266 DslmCredInfo info;
267 AttestationList list;
268 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
269 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
270
271 // malformed attestation makes SplitCredentialAttestationList()
272 // failed when ParsePublicKeyAttestation() for root key
273 const char *cred =
274 "eyJ0eXAiOiAiRFNMIn0=."
275 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
276 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxODA0Mzki"
277 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9."
278 "MGQCMAGiIvvXg9REZbTBVRy3VCcM8yP11x3R0mfLYQbZr71sAjS2jMJdXzlyJaCK8SQ73wIwW8DDJsYlHKHGPmRZkvS2x+Va4rglp+"
279 "GXWsbP2wYeMeGh/"
280 "degW3Azc7BjbNiUU6M4."
281 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
282 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
283 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HUUNNRHRmODVrTldIMkM3UEljbHZNWWVyOG1MdnhFVD"
284 "FPZHUvc0R3RUlEUGFCSGkrZ2JhbzJQZjlqUXdScHkwZGJmcGdJd1hHdVNMUG0xbVNLQXRnNFg5blFYNjdiRTBJNjB4RHRWSEFuRzBGNVFJ"
285 "SSt3UFBEYlE2L2wxOHpHQ21LcjlJck0ifSwgeyJ1c2VyUHVibGljS2V5IjogIk1Ib3dGQVlIS29aSXpqMENBUVlKS3lRREF3SUlBUUVMQT"
286 "JJQUJGRExHYzhiWFBPZEFhWks3bk5BRmtiRGhUcHBxM1pBb3ZPcUpkMkozL291bXh4bzhCdDhkaGJCMG1HcUdCMThXSGlORTA0VEJLVG9h"
287 "T2VDc21kRnR1S1dwS3BkS0hEN0Yvdi9peHFsd3oyczNKT2xwVDd1RDNuM2J4cVpUcnMycWc9PSIsICJzaWduYXR1cmUiOiAiTUdRQ01IQ3"
288 "NncFVtcFZCamlraTduOHlBb1ZBajROUnI1R1dLcXJhUitramc4MllKWnh4cFV1VlI5QWJjZEFZaUFQcGdEUUl3ZWhxenB2MXNwemd0elho"
289 "cnY0cGdONVcvdVdRZFRHclk3bndOdldaTE04M0JReG1aSW1oQ0thSFZrejlJeWlJcSJ9LCB7InNlY3JldGtleSI6ICJNSG93RkFZSEtvWk"
290 "l6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCRFU1WmJIREhpdkxoM0RTeFAxMGxpbi9hSDFyWmxtVzJwTGdycGdwYi9JZ1pJKzMyclgvUHRY"
291 "VERmVmJlckRvd1ZIVEUydDBWTDc5Z0NsK21FQi9XQXg1RGVtZWppTDUyektJejNkUzVicVR3WFRMb0R2U0ppd2d3cWJmTzBGbSt3PT0iLC"
292 "Aic2lnbmF0dXJlIjogIk1HUUNNQ2xvdDJqTWVRN3RlTzJVRXVkSjE0VDVIVTArWFd5cVYzcE4zaElSOXZkaVdXVGhVSmlkRTQvRzZjaVU3"
293 "Tjh6N2dJd09weDd6MHdhbDl4SlRERURIZjBsZlU5Z2FCVXRreVkrM2Zmd2FlaVpmVVJteWpUQ1RveitSdVpibjRxUzhtclkifV0=";
294
295 int32_t ret = VerifyDslmCredential(cred, &info, &list);
296 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
297 }
298
299 /**
300 * @tc.name: VerifyDslmCredential_case7
301 * @tc.desc: function VerifyDslmCredential with malformed input
302 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
303 * @tc.type: FUNC
304 * @tc.require: issueNumber
305 */
306 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case7, TestSize.Level0)
307 {
308 DslmCredInfo info;
309 AttestationList list;
310 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
311 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
312
313 // malformed attestation makes SplitCredentialAttestationList()
314 // failed when ParsePublicKeyAttestation() for intermediate key
315 const char *cred =
316 "eyJ0eXAiOiAiRFNMIn0=."
317 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
318 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxODA3Mzci"
319 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGQCMCIp5PS8K+rFeHY0uQU9e/"
320 "6Xa3mv+GEzZl0POKBspU+2Qh9PAKmFr8yFgzvWVV8M0QIwLk2GUeWOa46BqF4klWphRZmXZ/"
321 "lnDOfoDIILQdCDsV1UpObyol6i1fOYp3AF1DpS."
322 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
323 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
324 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HUUNNR29iWVhGM2VHYjZpTm9DQU4ySmI4dkliajY4VV"
325 "A4eWlleGxaa2R4VlZVNDEvL2I3cDBVa01LbmtnbFFNNnFhOHdJd2F3RDVoNXI2N25yRW5PRzJ4NUNBVVpwZkJTNmJZdEUrR0dPODdwVHRl"
326 "WngvZG5uRXk1UlE5VElYRENzS0F4aWYifSwgeyJ1c2VyUHVibGljS2V5IjogIk1Ib3dGQVlIS29aSXpqMENBUVlKS3lRREF3SUlBUUVMQT"
327 "JJQUJGRExHYzhiWFBPZEFhWks3bk5BRmtiRGhUcHBxM1pBb3ZPcUpkMkozL291bXh4bzhCdDhkaGJCMG1HcUdCMThXSGlORTA0VEJLVG9h"
328 "T2VDc21kRnR1S1dwS3BkS0hEN0Yvdi9peHFsd3oyczNKT2xwVDd1RDNuM2J4cVpUcnMycWc9PSIsICJuby1zaWciOiAiTUdRQ01DTXBhc0"
329 "ZlUFdvd01aOTRXc1lwR0ZXQ3l4SDJTamU0OWozTTVwVWJkdHdEeUlpNDZLSUJEQ1c4Rnl1dXBsYTBSQUl3WkFSaXZlaUN6MWd5bk5yOXhM"
330 "S0hHVTgvb05WMFh1NEYrY3lHcmIveFA0bkNmaVBtN0N5Q29ycFljVjREN250MiJ9LCB7InVzZXJQdWJsaWNLZXkiOiAiTUhvd0ZBWUhLb1"
331 "pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQkRVNVpiSERIaXZMaDNEU3hQMTBsaW4vYUgxclpsbVcycExncnBncGIvSWdaSSszMnJYL1B0"
332 "WFREZlZiZXJEb3dWSFRFMnQwVkw3OWdDbCttRUIvV0F4NURlbWVqaUw1MnpLSXozZFM1YnFUd1hUTG9EdlNKaXdnd3FiZk8wRm0rdz09Ii"
333 "wgInNpZ25hdHVyZSI6ICJNR1VDTVFDR1hoRlA4SnVoWnRDekZQZ1JpL1NZNXNNNEJqYmdhRFRvSkFaNFcxdXFzV05sSmFUZjJXREg2T2l2"
334 "bEs2QkhYZ0NNQXhLc3pNRzFsYStSYzVDNnlubEthS3pVMnZnRVJYbXFDcmFwQWs3L0pzYitRVGxHbGZJT3plQXhJbUIybmFuZHc9PSJ9XQ"
335 "==";
336
337 int32_t ret = VerifyDslmCredential(cred, &info, &list);
338 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
339 }
340
341 /**
342 * @tc.name: VerifyDslmCredential_case8
343 * @tc.desc: function VerifyDslmCredential with malformed input
344 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
345 * @tc.type: FUNC
346 * @tc.require: issueNumber
347 */
348 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case8, TestSize.Level0)
349 {
350 DslmCredInfo info;
351 AttestationList list;
352 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
353 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
354
355 // malformed attestation makes SplitCredentialAttestationList()
356 // failed when ParsePublicKeyAttestation() for last key
357 const char *cred =
358 "eyJ0eXAiOiAiRFNMIn0=."
359 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
360 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxODExNTUi"
361 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGQCMF8Z7Ql+"
362 "YrX4TEcFRVGwfKMRR2og3SYe9AaBUgR0szDXzpA1RKl3mEkzR4lAQ6Iw8AIwI498oHh9d80CveF41ntRSoxLT3VtpG+BVnTgWGe6wUm4/"
363 "egsSNTHEgeUDjU+SrGp."
364 "W3sibm8tcHVibGljIjogIk1Ib3dGQVlIS29aSXpqMENBUVlKS3lRREF3SUlBUUVMQTJJQUJCKzNMclZRTXdxaXBzZWc5QUFPS3AwMkV4M0"
365 "o5MmVTN2srSTlwUk9adW84VkVCZW9vMXpGKzYxaG1VTlMya2M3Rzc1MFU4TE5PalRqaFRUanY1bUJCN0F2eGdQMzBzd3dIMnV0VWhzOEZH"
366 "MDBBTGw5Rm5YVmxKY2loajlIYnRaM2c9PSIsICJzaWduYXR1cmUiOiAiTUdRQ01BT0F6ajluMFVkSUtrWWZrWjN2SkJMOWQ5WGpSMUxQMj"
367 "lwNXBwVUJ4bjRrVGRBTzN1OGh6bVBySWFQdkEwRTR6d0l3VVpscm03dmlhUUdoL3IxY2tjRW1BNEpYTVM1UGwvcUdMdTJUSnd3RUtjMnBO"
368 "MzVHbXB5bExUV2xIWHpVZC90MyJ9LCB7InVzZXJQdWJsaWNLZXkiOiAiTUhvd0ZBWUhLb1pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQk"
369 "ZETEdjOGJYUE9kQWFaSzduTkFGa2JEaFRwcHEzWkFvdk9xSmQySjMvb3VteHhvOEJ0OGRoYkIwbUdxR0IxOFdIaU5FMDRUQktUb2FPZUNz"
370 "bWRGdHVLV3BLcGRLSEQ3Ri92L2l4cWx3ejJzM0pPbHBUN3VEM24zYnhxWlRyczJxZz09IiwgInNpZ25hdHVyZSI6ICJNR1FDTUVKWnlUbj"
371 "dRMG9GUUdmMzl2TUJSa3pjeFcxSE5RZWplbjYxNG12UjA2eHNIejU4Q2FKUFB5UldKbVEzbWRma1hBSXdZODBodmxCWWNFczBDdXc1c1h3"
372 "Vi95QkJwWHFzTU1JdlplM1hkbTFpZVhlY1RjTFBXMHdnU0VUZVJWeDdRaE4vIn0sIHsidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWk"
373 "l6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCRFU1WmJIREhpdkxoM0RTeFAxMGxpbi9hSDFyWmxtVzJwTGdycGdwYi9JZ1pJKzMyclgvUHRY"
374 "VERmVmJlckRvd1ZIVEUydDBWTDc5Z0NsK21FQi9XQXg1RGVtZWppTDUyektJejNkUzVicVR3WFRMb0R2U0ppd2d3cWJmTzBGbSt3PT0iLC"
375 "Aic2lnbmF0dXJlIjogIk1HUUNNQ3ZCQ3VqTUNTMXBTS3ZMRjJ1U3VRQUlrb3UrU2Fhb1ZXajFsWFVWU3A0bjZqeWRyL2NRQU81VFZGODZ3"
376 "ODl1OXdJd0FXZ2ZlRWxDRWNmTXgwNzkra2pEQjlTRHdZdFRqMWVYWWljRHREOVV6b0tkcm1uNlhPeStsZ21vVHpWd2xtbUIifV0=";
377
378 int32_t ret = VerifyDslmCredential(cred, &info, &list);
379 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
380 }
381
382 /**
383 * @tc.name: VerifyDslmCredential_case9
384 * @tc.desc: function VerifyDslmCredential with malformed input
385 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
386 * @tc.type: FUNC
387 * @tc.require: issueNumber
388 */
389 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case9, TestSize.Level0)
390 {
391 DslmCredInfo info;
392 AttestationList list;
393 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
394 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
395
396 // add algorithm to PublicKeyAttestation, just for coverage
397 const char *cred =
398 "eyJ0eXAiOiAiRFNMIn0=."
399 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
400 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxODIwMTMi"
401 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGQCMFICCTcS8DeMzex9czJn049f/"
402 "rJGaRRQKNoxA0d7Cszdq2w1m9XyCmPhG4kARQ6T0gIwZTkJspsaEQ3F/"
403 "5+NwAaE+MemIdCE79kDCaFAYWEM2GwDFmlMGA7XI2PxQ3b7EsBL."
404 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
405 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
406 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HUUNNR3dVejlydDVEcUhHRmJBTnVTMTZNZEQ5THJtWG"
407 "5EMnBGOTI5U2U0Ujk3Ui91TUp1eGVMejUvSW9uelVBQmNYaWdJd05oc3dMRjhVS2x4U1B5TUo0WncyMlJTYTdZei93dlZQS1pXL2pjSGha"
408 "V2RLV1YxL3pWbDZ0ODRlYzI0NkpMZ3MiLCAiYWxnb3JpdGhtIjogIlNIQTI1NndpdGhFQ0RTQSJ9LCB7InVzZXJQdWJsaWNLZXkiOiAiTU"
409 "hvd0ZBWUhLb1pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQkZETEdjOGJYUE9kQWFaSzduTkFGa2JEaFRwcHEzWkFvdk9xSmQySjMvb3Vt"
410 "eHhvOEJ0OGRoYkIwbUdxR0IxOFdIaU5FMDRUQktUb2FPZUNzbWRGdHVLV3BLcGRLSEQ3Ri92L2l4cWx3ejJzM0pPbHBUN3VEM24zYnhxWl"
411 "RyczJxZz09IiwgInNpZ25hdHVyZSI6ICJNR1FDTUE5bWc0akowQzhIR1dTM0dkNWlVZXFCaGhPWFRoVUNXRW1PM010TU9qcHUrN3EzeGRm"
412 "VnZySXNRMlF5Z1NOMTZ3SXdmWnlHdi9YczZtRlFEakhFc2E3bzg2NW1LUzl2RmdjYzB4Tzc2OXpGaklmYlU3aUMwS3NDdSsrREdhZnJIWj"
413 "dPIiwgImFsZ29yaXRobSI6ICJTSEEzODR3aXRoRUNEU0EifSwgeyJ1c2VyUHVibGljS2V5IjogIk1Ib3dGQVlIS29aSXpqMENBUVlKS3lR"
414 "REF3SUlBUUVMQTJJQUJEVTVaYkhESGl2TGgzRFN4UDEwbGluL2FIMXJabG1XMnBMZ3JwZ3BiL0lnWkkrMzJyWC9QdFhURGZWYmVyRG93Vk"
415 "hURTJ0MFZMNzlnQ2wrbUVCL1dBeDVEZW1lamlMNTJ6S0l6M2RTNWJxVHdYVExvRHZTSml3Z3dxYmZPMEZtK3c9PSIsICJzaWduYXR1cmUi"
416 "OiAiTUdRQ01GeUJXUlREVVRUN08vVmYwaHJTYnEvdmZKNGNVckFSVEtYVU9RTXRUZnVUTFNRbEVMTVkxa05sNVIxelB1STI3UUl3VlY2Yk"
417 "dRNFlmYTJuaUJNWlc4WlVVbENDdmM3QUY1ZGdRYVR4NTZneHRNaDFKelNQeUhicnFKd05ZUnBCck9yMyIsICJhbGdvcml0aG0iOiAiU0hB"
418 "Mzk0d2l0aEVDRFNBIn1d";
419
420 int32_t ret = VerifyDslmCredential(cred, &info, &list);
421 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
422 }
423
424 /**
425 * @tc.name: VerifyDslmCredential_case10
426 * @tc.desc: function VerifyDslmCredential with malformed input
427 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
428 * @tc.type: FUNC
429 * @tc.require: issueNumber
430 */
431 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case10, TestSize.Level0)
432 {
433 DslmCredInfo info;
434 AttestationList list;
435 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
436 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
437
438 // malformed attestation makes VerifyCredentialCb()
439 // failed when checking root key
440 const char *cred =
441 "eyJ0eXAiOiAiRFNMIn0=."
442 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
443 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxOTI3MDgi"
444 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGQCMBvYjmGGfMs3SLnyHgqLe5jq78Er8SqzpvEmj/"
445 "h90X6rapua6LFD2C7BCZwuNmTqdgIwWXQWQ82XtSp9xWuCOgl0ix2TTn03zQKN/"
446 "zqzpj436bDEgq+JrRRx3SSvKCNkwvGg."
447 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
448 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
449 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HUUNNRWhLUGt6bnVjc09HdFBERTRxWXhrWjVYeEJuY1"
450 "c2VDNsZk9PWVcweFlBVmh0dVFzcmZBb1ljL2pBaHVIaGdYbWdJd0RadFJ1UjJIbFFjekdzbHlOVjFlbU5sREVHQ1pnTldnYlZ4UGpwWWJJ"
451 "QmRYZkUwNnk0Qm1zQTFXUUN6TGFERUgifSwgeyJ1c2VyUHVibGljS2V5IjogIk1Ib3dGQVlIS29aSXpqMENBUVlKS3lRREF3SUlBUUVMQT"
452 "JJQUJGRExHYzhiWFBPZEFhWks3bk5BRmtiRGhUcHBxM1pBb3ZPcUpkMkozL291bXh4bzhCdDhkaGJCMG1HcUdCMThXSGlORTA0VEJLVG9h"
453 "T2VDc21kRnR1S1dwS3BkS0hEN0Yvdi9peHFsd3oyczNKT2xwVDd1RDNuM2J4cVpUcnMycWc9PSIsICJzaWduYXR1cmUiOiAiTUdRQ01DWF"
454 "gwUEFJbU5vejlSV2s1YnFjMWxGaUUwODZGaGFrN1dRVlBRNG1VVnNvNzhXRFVoOUNYbERIdVcyZUoydFM5d0l3YmF1NDg4bEZaYS8vbGVD"
455 "RW5PaC9RWXNtZnVKZWlTRU5hYkRjSGJVcnQ3OWFVK09rME9ZTCsrcTVhNEJ0VzFBTiJ9LCB7InVzZXJQdWJsaWNLZXkiOiAiTUhvd0ZBWU"
456 "hLb1pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQkZETEdjOGJYUE9kQWFaSzduTkFGa2JEaFRwcHEzWkFvdk9xSmQySjMvb3VteHhvOEJ0"
457 "OGRoYkIwbUdxR0IxOFdIaU5FMDRUQktUb2FPZUNzbWRGdHVLV3BLcGRLSEQ3Ri92L2l4cWx3ejJzM0pPbHBUN3VEM24zYnhxWlRyczJxZz"
458 "09IiwgInNpZ25hdHVyZSI6ICJNR1FDTUFMam1MTnVJRDNLRDNEODJiRXhKMVExVWZWOHVvbkd1enVoZUIvZFBXNnRDeFZ6dExQdXo4dG54"
459 "K0d4UGdIZVNRSXdVNjhXVW1qazdsZzhWRDlQSU5pTm5NUWJ1RHR3MjlDZndvV0Nra1h0VzhKTjN4b3hXaWpOeXY3MGkrRlNqQUF4In1d";
460
461 int32_t ret = VerifyDslmCredential(cred, &info, &list);
462 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
463 }
464
465 /**
466 * @tc.name: VerifyDslmCredential_case11
467 * @tc.desc: function VerifyDslmCredential with malformed input
468 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
469 * @tc.type: FUNC
470 * @tc.require: issueNumber
471 */
472 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case11, TestSize.Level0)
473 {
474 DslmCredInfo info;
475 AttestationList list;
476 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
477 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
478
479 // malformed attestation makes VerifyCredentialCb()
480 // failed when checking intermediate key
481 const char *cred =
482 "eyJ0eXAiOiAiRFNMIn0=."
483 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
484 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxOTI4MTEi"
485 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9."
486 "MGQCMB6eGkGKFcsVJnohs3UFMYSnEAQ7gr3iz0ejIq9vTQYSyuHiPxRGjDInO3b4jxi0SwIwNI0liljb0PgRLZuLRL6RaXF3c5BXRS/"
487 "QtkW8O/"
488 "kcGXVR19N4gbyU9tUs9Pnj36tA."
489 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
490 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
491 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HVUNNSDJuaTdTZmtDZUIyNm1RMncyK0lFWk56OXd2V2"
492 "R3dTVjQksxZVp2Sjh1K0s3K3ZrNkV2Z0lURnlLcWlqZ2t6R3dJeEFJUHlyNnBIQkprU2hPM3dWUXNmdTgxNGVtNGVXbldUNENDa3h5ZExC"
493 "WDdoSGs3MEl4STlET1h2SEdmMU1IdFQxdz09In0sIHsidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQV"
494 "FFTEEySUFCRkRMR2M4YlhQT2RBYVpLN25OQUZrYkRoVHBwcTNaQW92T3FKZDJKMy9vdW14eG84QnQ4ZGhiQjBtR3FHQjE4V0hpTkUwNFRC"
495 "S1RvYU9lQ3NtZEZ0dUtXcEtwZEtIRDdGL3YvaXhxbHd6MnMzSk9scFQ3dUQzbjNieHFaVHJzMnFnPT0iLCAic2lnbmF0dXJlIjogIk1HUU"
496 "NNRXFtZytYY3plM1gzOCt0UW5Fa2p2TkNYNlJ6V2lpTE1uNzVaaTU5WCtyWGUveVlTcHNHcS8ybjFRUzVHd3hkOXdJd2NlOHJJY3dCUDd0"
497 "dXVBYXY5TTBiK1hKTDZhYUNkLzdyS1F5ekdFdmlIQnlEeHE1ck4wMkd1bXlaZ2o0UmZNdDIifSwgeyJ1c2VyUHVibGljS2V5IjogIk1Ib3"
498 "dGQVlIS29aSXpqMENBUVlKS3lRREF3SUlBUUVMQTJJQUJEVTVaYkhESGl2TGgzRFN4UDEwbGluL2FIMXJabG1XMnBMZ3JwZ3BiL0lnWkkr"
499 "MzJyWC9QdFhURGZWYmVyRG93VkhURTJ0MFZMNzlnQ2wrbUVCL1dBeDVEZW1lamlMNTJ6S0l6M2RTNWJxVHdYVExvRHZTSml3Z3dxYmZPME"
500 "ZtK3c9PSIsICJzaWduYXR1cmUiOiAiTUdRQ01FcW1nK1hjemUzWDM4K3RRbkVranZOQ1g2UnpXaWlMTW43NVppNTlYK3JYZS95WVNwc0dx"
501 "LzJuMVFTNUd3eGQ5d0l3Y2U4ckljd0JQN3R1dUFhdjlNMGIrWEpMNmFhQ2QvN3JLUXl6R0V2aUhCeUR4cTVyTjAyR3VteVpnajRSZk10Mi"
502 "J9XQ==";
503
504 int32_t ret = VerifyDslmCredential(cred, &info, &list);
505 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
506 }
507
508 /**
509 * @tc.name: VerifyDslmCredential_case12
510 * @tc.desc: function VerifyDslmCredential with malformed input
511 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
512 * @tc.type: FUNC
513 * @tc.require: issueNumber
514 */
515 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case12, TestSize.Level0)
516 {
517 DslmCredInfo info;
518 AttestationList list;
519 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
520 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
521
522 // malformed attestation makes VerifyCredentialCb()
523 // failed when checking last key
524 const char *cred =
525 "eyJ0eXAiOiAiRFNMIn0=."
526 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
527 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxOTI5MTMi"
528 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGQCMHRBxkv50DwejU9fnK1ZxCsLRWgbZS1+uHyJ1uTLZ9w1+"
529 "zOnG67IUSppeTUGrBHwdwIwLIdK1tK6JYCUyaXcbcvNhi8bQAjHLHF99TowvQPP/IoqFhMK1p+Yn/"
530 "lgUqzFtkro."
531 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
532 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
533 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HUUNNQ1FoN2dJMTN6ZHhLaTBBQU9WWEFVQnQ5UjVOWm"
534 "JyWklnampUc214bmF2ZW1JZzM0YzBwbjlSU2JTckNRZXV0NEFJd0k5VVlDZW14U05kRytHWE9hLzdxOSthVDk2aklNVVFVZjNQcUpMb2pw"
535 "TlRENGhFckxGVG93TkM0NEFIQUExeTAifSwgeyJ1c2VyUHVibGljS2V5IjogIk1Ib3dGQVlIS29aSXpqMENBUVlKS3lRREF3SUlBUUVMQT"
536 "JJQUJGRExHYzhiWFBPZEFhWks3bk5BRmtiRGhUcHBxM1pBb3ZPcUpkMkozL291bXh4bzhCdDhkaGJCMG1HcUdCMThXSGlORTA0VEJLVG9h"
537 "T2VDc21kRnR1S1dwS3BkS0hEN0Yvdi9peHFsd3oyczNKT2xwVDd1RDNuM2J4cVpUcnMycWc9PSIsICJzaWduYXR1cmUiOiAiTUdRQ01HUG"
538 "9GVERFYit4QTBLcm9RODQvN3czYXMrVU4yTFhJRDJaeHZBMWR4UVJ1b3FDTHY4cTZhc3p2VkEvRmxOY2dOd0l3TEZySDhuMXNlQWxMbkhN"
539 "b0xEWHQ1bS9JVHVYb3JJdWZTU3Q2enYzVGVnWHhMa3hwakJZVzFJempFM3JOZEF6aSJ9LCB7InVzZXJQdWJsaWNLZXkiOiAiTUhvd0ZBWU"
540 "hLb1pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQkRVNVpiSERIaXZMaDNEU3hQMTBsaW4vYUgxclpsbVcycExncnBncGIvSWdaSSszMnJY"
541 "L1B0WFREZlZiZXJEb3dWSFRFMnQwVkw3OWdDbCttRUIvV0F4NURlbWVqaUw1MnpLSXozZFM1YnFUd1hUTG9EdlNKaXdnd3FiZk8wRm0rdz"
542 "09IiwgInNpZ25hdHVyZSI6ICJNR1FDTUNRaDdnSTEzemR4S2kwQUFPVlhBVUJ0OVI1TlpiclpJZ2pqVHNteG5hdmVtSWczNGMwcG45UlNi"
543 "U3JDUWV1dDRBSXdJOVVZQ2VteFNOZEcrR1hPYS83cTkrYVQ5NmpJTVVRVWYzUHFKTG9qcE5URDRoRXJMRlRvd05DNDRBSEFBMXkwIn1d";
544
545 int32_t ret = VerifyDslmCredential(cred, &info, &list);
546 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
547 }
548
549 /**
550 * @tc.name: VerifyDslmCredential_case13
551 * @tc.desc: function VerifyDslmCredential with malformed input
552 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
553 * @tc.type: FUNC
554 * @tc.require: issueNumber
555 */
556 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case13, TestSize.Level0)
557 {
558 DslmCredInfo info;
559 AttestationList list;
560 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
561 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
562
563 // malformed attestation makes VerifyCredentialCb()
564 // failed when checking payload signature
565 const char *cred =
566 "eyJ0eXAiOiAiRFNMIn0=."
567 "eyJ0eXBlIjogImRlYnVnIiwgIm1hbnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
568 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxOTMxMDgi"
569 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9."
570 "MGQCMGf97swhV6iTcrsLrPOwzwFr0QsX82yHBZo9BK68zSQEJv4LCMIchJnoCnSrW2EfaQIwP98PE/9OP08thSNBS89s5FT/"
571 "z+p+Kvf0hQ3SfZdN7UrvpaTKq9ZGZhP/"
572 "JHJYXfEj."
573 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
574 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
575 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HVUNNUUNHeFNtRWE5TXRSZjNLRHdrNlhDU2N1Smcwc1"
576 "FJNUIvMGJkbnJOUEFQZkJxNVFOT3pVelc1Y0VQRVdzOU5lK1BVQ01FU0JmS3FkNlRmUThZZThuTlFjK1pXNDZlYk96N3VUSDRoUVZQMFQ1"
577 "SjRHOWQ3ZVNEMXg0UzlKbHNTanljUk1Wdz09In0sIHsidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQV"
578 "FFTEEySUFCRkRMR2M4YlhQT2RBYVpLN25OQUZrYkRoVHBwcTNaQW92T3FKZDJKMy9vdW14eG84QnQ4ZGhiQjBtR3FHQjE4V0hpTkUwNFRC"
579 "S1RvYU9lQ3NtZEZ0dUtXcEtwZEtIRDdGL3YvaXhxbHd6MnMzSk9scFQ3dUQzbjNieHFaVHJzMnFnPT0iLCAic2lnbmF0dXJlIjogIk1HVU"
580 "NNUUNBMmZDWUVUS2dKcGJFSkU3Qmc2QlVYMzNSWnZZTU5GdFdwOUpsbnV4a0FOS0RHa29xUXJMelJveGt1cFFSb2ZrQ01FeFYzTmFXVHVP"
581 "U0M4OTBmRjFSVVVYQVdWRVBBRk5FWGlZQzJ4TXVuVWRKZTlUVWNXZHZEakc4TjdkSFRiM01GZz09In0sIHsidXNlclB1YmxpY0tleSI6IC"
582 "JNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCRFU1WmJIREhpdkxoM0RTeFAxMGxpbi9hSDFyWmxtVzJwTGdycGdwYi9J"
583 "Z1pJKzMyclgvUHRYVERmVmJlckRvd1ZIVEUydDBWTDc5Z0NsK21FQi9XQXg1RGVtZWppTDUyektJejNkUzVicVR3WFRMb0R2U0ppd2d3cW"
584 "JmTzBGbSt3PT0iLCAic2lnbmF0dXJlIjogIk1HUUNNSGpXMWpiVTRPdnFld1VWQyt6a1dVdm5NNkJQc2MrZlA2M3BpTTM1UktRYWI0T20w"
585 "cjNvNE1LQjFpZjJmNEd2NXdJd0lEaEdZTTdHcXpVRnloUW1Oc0kvdFdpTnFLcHNpazRZMmZsRDZSNlJWR0QxbjdrMDNoeEhEazh2em1RR3"
586 "RnOTAifV0=";
587
588 int32_t ret = VerifyDslmCredential(cred, &info, &list);
589 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
590 }
591
592 /**
593 * @tc.name: VerifyDslmCredential_case14
594 * @tc.desc: function VerifyDslmCredential with malformed input
595 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
596 * @tc.type: FUNC
597 * @tc.require: issueNumber
598 */
599 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case14, TestSize.Level0)
600 {
601 DslmCredInfo info;
602 AttestationList list;
603 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
604 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
605
606 // malformed payload makes CredentialCbToDslmCredInfo()
607 // failed when DslmCreateJson()
608 const char *cred =
609 "eyJ0eXAiOiAiRFNMIn0=."
610 "eyJ0eXBlIjogImRlYnVnIxxxIm1hbnVmYWN0dXJlIxxxIk9IT1MiLCAiYnJhbmQiOiAixxxxNTY4IiwgIm1vZGVsIjogInJrMzU2OCIsIC"
611 "Jzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlMZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjcxOTI3MDgi"
612 "LCAidmVyc2lvbiI6ICIxLjAuMSJ9.MGQCMBvYjmGGfMs3SLnyHgqLe5jq78Er8SqzpvEmj/"
613 "h90X6rapua6LFD2C7BCZwuNmTqdgIwWXQWQ82XtSp9xWuCOgl0ix2TTn03zQKN/"
614 "zqzpj436bDEgq+JrRRx3SSvKCNkwvGg."
615 "W3sidXNlclB1YmxpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2VnOUFBT0twMD"
616 "JFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMmtjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVo"
617 "czhGRzAwQUxsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HUUNNRWhLUGt6bnVjc09HdFBERTRxWXhrWjVYeEJuY1"
618 "c2VDNsZk9PWVcweFlBVmh0dVFzcmZBb1ljL2pBaHVIaGdYbWdJd0RadFJ1UjJIbFFjekdzbHlOVjFlbU5sREVHQ1pnTldnYlZ4UGpwWWJJ"
619 "QmRYZkUwNnk0Qm1zQTFXUUN6TGFERUgifSwgeyJ1c2VyUHVibGljS2V5IjogIk1Ib3dGQVlIS29aSXpqMENBUVlKS3lRREF3SUlBUUVMQT"
620 "JJQUJGRExHYzhiWFBPZEFhWks3bk5BRmtiRGhUcHBxM1pBb3ZPcUpkMkozL291bXh4bzhCdDhkaGJCMG1HcUdCMThXSGlORTA0VEJLVG9h"
621 "T2VDc21kRnR1S1dwS3BkS0hEN0Yvdi9peHFsd3oyczNKT2xwVDd1RDNuM2J4cVpUcnMycWc9PSIsICJzaWduYXR1cmUiOiAiTUdRQ01DWF"
622 "gwUEFJbU5vejlSV2s1YnFjMWxGaUUwODZGaGFrN1dRVlBRNG1VVnNvNzhXRFVoOUNYbERIdVcyZUoydFM5d0l3YmF1NDg4bEZaYS8vbGVD"
623 "RW5PaC9RWXNtZnVKZWlTRU5hYkRjSGJVcnQ3OWFVK09rME9ZTCsrcTVhNEJ0VzFBTiJ9LCB7InVzZXJQdWJsaWNLZXkiOiAiTUhvd0ZBWU"
624 "hLb1pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQkZETEdjOGJYUE9kQWFaSzduTkFGa2JEaFRwcHEzWkFvdk9xSmQySjMvb3VteHhvOEJ0"
625 "OGRoYkIwbUdxR0IxOFdIaU5FMDRUQktUb2FPZUNzbWRGdHVLV3BLcGRLSEQ3Ri92L2l4cWx3ejJzM0pPbHBUN3VEM24zYnhxWlRyczJxZz"
626 "09IiwgInNpZ25hdHVyZSI6ICJNR1FDTUFMam1MTnVJRDNLRDNEODJiRXhKMVExVWZWOHVvbkd1enVoZUIvZFBXNnRDeFZ6dExQdXo4dG54"
627 "K0d4UGdIZVNRSXdVNjhXVW1qazdsZzhWRDlQSU5pTm5NUWJ1RHR3MjlDZndvV0Nra1h0VzhKTjN4b3hXaWpOeXY3MGkrRlNqQUF4In1d";
628
629 int32_t ret = VerifyDslmCredential(cred, &info, &list);
630 EXPECT_EQ(ERR_PARSE_CLOUD_CRED_DATA, ret);
631 }
632
633 /**
634 * @tc.name: VerifyDslmCredential_case15
635 * @tc.desc: function VerifyDslmCredential with malformed input
636 * credentials composed in <base64-header>.<base64-payload>.<base64-signature>.<base64-attestation>
637 * @tc.type: FUNC
638 * @tc.require: issueNumber
639 */
640 HWTEST_F(DslmOemPropertyTest, VerifyDslmCredential_case15, TestSize.Level0)
641 {
642 DslmCredInfo info;
643 AttestationList list;
644 memset_s(&info, sizeof(DslmCredInfo), 0, sizeof(DslmCredInfo));
645 memset_s(&list, sizeof(AttestationList), 0, sizeof(AttestationList));
646
647 // success case, for covering MovePublicKeysToAttestationList()
648 const char *cred = "eyJ0eXAiOiAiRFNMIn0=.eyJ0eXBlIjogImRlYnVnIiwgIm1h"
649 "bnVmYWN0dXJlIjogIk9IT1MiLCAiYnJhbmQiOiAicmszNTY4IiwgIm1vZGVsIjog"
650 "InJrMzU2OCIsICJzb2Z0d2FyZVZlcnNpb24iOiAiMy4wLjAiLCAic2VjdXJpdHlM"
651 "ZXZlbCI6ICJTTDMiLCAic2lnblRpbWUiOiAiMjAyMjExMjYxNzMzNDMiLCAidmVy"
652 "c2lvbiI6ICIxLjAuMSJ9.MGUCMEPpiP8hOZlve/H81B7AvL4Fuwe8YYAdKckLEOc"
653 "EQKKTiNRM6irjXSwboMppAFNMSgIxAILC1S6KMp6Zp2ACppXF3j3fV0PBdLZOSO1"
654 "Lm9sqtdiJ5FidaAaMYlwdLMy3vfBeSg==.W3sidXNlclB1YmxpY0tleSI6ICJNSG"
655 "93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCQiszTHJWUU13cWlwc2"
656 "VnOUFBT0twMDJFeDNKOTJlUzdrK0k5cFJPWnVvOFZFQmVvbzF6Ris2MWhtVU5TMm"
657 "tjN0c3NTBVOExOT2pUamhUVGp2NW1CQjdBdnhnUDMwc3d3SDJ1dFVoczhGRzAwQU"
658 "xsOUZuWFZsSmNpaGo5SGJ0WjNnPT0iLCAic2lnbmF0dXJlIjogIk1HVUNNUUNIUV"
659 "dzYXNYc1NpL3dJUThmWW5PRlhsaWhTem5ETG1RSjBEOGp4U3RVM2Z2bk4xZkgzUV"
660 "JJUnRzM1lIK293bE9zQ01EY2pJU0pOK2J6M2g0VUU2UTl1NW92K0RHcFRHL2Vqd0"
661 "xTU2FyMHJzZ09ZSVovODdRb0p2QllaM2hFamlDcWQ1dz09In0sIHsidXNlclB1Ym"
662 "xpY0tleSI6ICJNSG93RkFZSEtvWkl6ajBDQVFZSkt5UURBd0lJQVFFTEEySUFCRk"
663 "RMR2M4YlhQT2RBYVpLN25OQUZrYkRoVHBwcTNaQW92T3FKZDJKMy9vdW14eG84Qn"
664 "Q4ZGhiQjBtR3FHQjE4V0hpTkUwNFRCS1RvYU9lQ3NtZEZ0dUtXcEtwZEtIRDdGL3"
665 "YvaXhxbHd6MnMzSk9scFQ3dUQzbjNieHFaVHJzMnFnPT0iLCAic2lnbmF0dXJlIj"
666 "ogIk1HUUNNSGthczBkZDgwUVpiQVB6eElhMXhBYmd1WlhwNjU0T29rL2VGR2M0ek"
667 "tLczlqYjVKK24waHJDcytoa0JrR0N0b3dJd1pYcGlYUjRiS1h3RUlTZmdpSDI4dk"
668 "ZaZVQxcFJCcnFkSHd2d3ErOXcrdWQzMkhkeC90YWhHZ1kySHVZZFNHZDUifSwgey"
669 "J1c2VyUHVibGljS2V5IjogIk1Ib3dGQVlIS29aSXpqMENBUVlKS3lRREF3SUlBUU"
670 "VMQTJJQUJEVTVaYkhESGl2TGgzRFN4UDEwbGluL2FIMXJabG1XMnBMZ3JwZ3BiL0"
671 "lnWkkrMzJyWC9QdFhURGZWYmVyRG93VkhURTJ0MFZMNzlnQ2wrbUVCL1dBeDVEZW"
672 "1lamlMNTJ6S0l6M2RTNWJxVHdYVExvRHZTSml3Z3dxYmZPMEZtK3c9PSIsICJzaW"
673 "duYXR1cmUiOiAiTUdRQ01HWlI0MUdsd1RnL0xUMGtFT3lTZnRHTDBlV04zb2dXdF"
674 "o0NTZ2VkdqMm56WnhsamFlN2pveWw4cWZHNjZSTUdTQUl3S2M3V2VpQ1c1UlFGSj"
675 "ROWitSRUErNVNpMHhRVFpOdzlhb1FTUG5LVTA0L2ZIWUhkVERNWitncUY3U3RJMD"
676 "ZTbSJ9XQ==";
677
678 int32_t ret = VerifyDslmCredential(cred, &info, &list);
679 EXPECT_EQ(0, ret);
680 }
681
682 HWTEST_F(DslmOemPropertyTest, EcdsaVerify_case1, TestSize.Level0)
683 {
684 const char *data = "test";
685 uint32_t length = strlen(data) + 1;
686 const DataBuffer srcData = {.length = length, .data = (uint8_t *)data};
687 const DataBuffer sigData = {.length = length, .data = (uint8_t *)data};
688 DataBuffer *pbkData = nullptr;
689 uint32_t algorithm = TYPE_ECDSA_SHA_256;
690
691 int32_t ret = EcdsaVerify(&srcData, &sigData, pbkData, algorithm);
692 EXPECT_EQ(ERR_INVALID_PARA, ret);
693 }
694
695 HWTEST_F(DslmOemPropertyTest, EcdsaVerify_case2, TestSize.Level0)
696 {
697 const char *data = "test";
698 uint32_t length = strlen(data) + 1;
699 uint32_t algorithm = TYPE_ECDSA_SHA_256;
700
701 {
702 // malformed srcData
703 const DataBuffer srcData = {.length = length, .data = nullptr};
704 const DataBuffer sigData = {.length = length, .data = (uint8_t *)data};
705 const DataBuffer pbkData = {.length = length, .data = (uint8_t *)data};
706
707 int32_t ret = EcdsaVerify(&srcData, &sigData, &pbkData, algorithm);
708 EXPECT_EQ(ERR_INVALID_PARA, ret);
709 }
710
711 {
712 const DataBuffer srcData = {.length = length, .data = (uint8_t *)data};
713 // malformed sigData
714 const DataBuffer sigData = {.length = length, .data = nullptr};
715 const DataBuffer pbkData = {.length = length, .data = (uint8_t *)data};
716
717 int32_t ret = EcdsaVerify(&srcData, &sigData, &pbkData, algorithm);
718 EXPECT_EQ(ERR_INVALID_PARA, ret);
719 }
720
721 {
722 const DataBuffer srcData = {.length = length, .data = (uint8_t *)data};
723 const DataBuffer sigData = {.length = length, .data = (uint8_t *)data};
724 // malformed pkgData
725 const DataBuffer pbkData = {.length = length, .data = nullptr};
726
727 int32_t ret = EcdsaVerify(&srcData, &sigData, &pbkData, algorithm);
728 EXPECT_EQ(ERR_INVALID_PARA, ret);
729 }
730 }
731
732 HWTEST_F(DslmOemPropertyTest, EcdsaVerify_case3, TestSize.Level0)
733 {
734 const char *data = "test";
735 uint32_t length = strlen(data) + 1;
736 uint32_t algorithm = TYPE_ECDSA_SHA_256;
737
738 {
739 // malformed srcData
740 const DataBuffer srcData = {.length = 0, .data = (uint8_t *)data};
741 const DataBuffer sigData = {.length = length, .data = (uint8_t *)data};
742 const DataBuffer pbkData = {.length = length, .data = (uint8_t *)data};
743
744 int32_t ret = EcdsaVerify(&srcData, &sigData, &pbkData, algorithm);
745 EXPECT_EQ(ERR_INVALID_PARA, ret);
746 }
747
748 {
749 const DataBuffer srcData = {.length = length, .data = (uint8_t *)data};
750 // malformed sigData
751 const DataBuffer sigData = {.length = 0, .data = (uint8_t *)data};
752 const DataBuffer pbkData = {.length = length, .data = (uint8_t *)data};
753
754 int32_t ret = EcdsaVerify(&srcData, &sigData, &pbkData, algorithm);
755 EXPECT_EQ(ERR_INVALID_PARA, ret);
756 }
757
758 {
759 const DataBuffer srcData = {.length = length, .data = (uint8_t *)data};
760 const DataBuffer sigData = {.length = length, .data = (uint8_t *)data};
761 // malformed pkgData
762 const DataBuffer pbkData = {.length = 0, .data = (uint8_t *)data};
763
764 int32_t ret = EcdsaVerify(&srcData, &sigData, &pbkData, algorithm);
765 EXPECT_EQ(ERR_INVALID_PARA, ret);
766 }
767 }
768
769 HWTEST_F(DslmOemPropertyTest, EcdsaVerify_case4, TestSize.Level0)
770 {
771 const char *data = "test";
772 uint32_t length = strlen(data) + 1;
773 const DataBuffer srcData = {.length = length, .data = (uint8_t *)data};
774 const DataBuffer sigData = {.length = length, .data = (uint8_t *)data};
775 const DataBuffer pbkData = {.length = length, .data = (uint8_t *)data};
776
777 {
778 uint32_t algorithm = TYPE_ECDSA_SHA_256 + 2;
779
780 int32_t ret = EcdsaVerify(&srcData, &sigData, &pbkData, algorithm);
781 EXPECT_EQ(ERR_INVALID_PARA, ret);
782 }
783
784 {
785 uint32_t algorithm = TYPE_ECDSA_SHA_384;
786
787 int32_t ret = EcdsaVerify(&srcData, &sigData, &pbkData, algorithm);
788 EXPECT_EQ(ERR_ECC_VERIFY_ERR, ret);
789 }
790 }
791
792 HWTEST_F(DslmOemPropertyTest, FreeAttestationList_case1, TestSize.Level0)
793 {
794 AttestationList list;
795 uint32_t len = 5;
796 uint8_t *dataRoot = (uint8_t *)MALLOC(len);
797 uint8_t *dataIntermediate = (uint8_t *)MALLOC(len);
798 uint8_t *dataLast = (uint8_t *)MALLOC(len);
799 ASSERT_NE(nullptr, dataRoot);
800 ASSERT_NE(nullptr, dataIntermediate);
801 ASSERT_NE(nullptr, dataLast);
802
803 PublicKey root = {.length = len, .data = dataRoot};
804 PublicKey intermediate = {.length = len, .data = dataIntermediate};
805 PublicKey last = {.length = len, .data = dataLast};
806 list.root = root;
807 list.intermediate = intermediate;
808 list.last = last;
809
810 {
811 FreeAttestationList(nullptr);
812 }
813
814 {
815 FreeAttestationList(&list);
816 EXPECT_EQ(0U, list.root.length);
817 EXPECT_EQ(0U, list.intermediate.length);
818 EXPECT_EQ(0U, list.last.length);
819 }
820 }
821
822 HWTEST_F(DslmOemPropertyTest, ValidateCertChainAdapter_case1, TestSize.Level0)
823 {
824 uint8_t *data = nullptr;
825 uint32_t dataLen = 0;
826 struct DslmInfoInCertChain result;
827 (void)memset_s(&result, sizeof(result), 0, sizeof(result));
828
829 int32_t ret = ValidateCertChainAdapter(data, dataLen, &result);
830 EXPECT_EQ(ERR_CALL_EXTERNAL_FUNC, ret);
831 }
832
833 /**
834 * @tc.name: FillHksParamSet_case1
835 * @tc.desc: huks adapter with null input
836 * @tc.type: FUNC
837 * @tc.require: issueNumber
838 */
839 HWTEST_F(DslmOemPropertyTest, FillHksParamSet_case1, TestSize.Level0)
840 {
841 int32_t ret = FillHksParamSet(nullptr, nullptr, 0);
842 EXPECT_EQ(ERR_INVALID_PARA, ret);
843 }
844
845 /**
846 * @tc.name: HksGenerateKeyAdapter_case1
847 * @tc.desc: huks adapter with malformed input
848 * @tc.type: FUNC
849 * @tc.require: issueNumber
850 */
851 HWTEST_F(DslmOemPropertyTest, HksGenerateKeyAdapter_case1, TestSize.Level0)
852 {
853 int32_t ret = HksGenerateKeyAdapter(nullptr);
854 EXPECT_EQ(ERR_INVALID_PARA, ret);
855 }
856
857 // just for coverage
858 /**
859 * @tc.name: DestroyDslmInfoInCertChain_case1
860 * @tc.desc: function DestroyDslmInfoInCertChain with null/non-null input
861 * @tc.type: FUNC
862 * @tc.require: issueNumber
863 */
864 HWTEST_F(DslmOemPropertyTest, DestroyDslmInfoInCertChain_case1, TestSize.Level0)
865 {
866 struct DslmInfoInCertChain *info = (struct DslmInfoInCertChain *)MALLOC(sizeof(struct DslmInfoInCertChain));
867 ASSERT_NE(nullptr, info);
868 memset_s(info, sizeof(struct DslmInfoInCertChain), 0, sizeof(struct DslmInfoInCertChain));
869
870 DestroyDslmInfoInCertChain(nullptr);
871 DestroyDslmInfoInCertChain(info);
872 FREE(info);
873 }
874
875 // just for coverage
876 /**
877 * @tc.name: InitDslmInfoInCertChain_case1
878 * @tc.desc: function InitDslmInfoInCertChain with null input
879 * @tc.type: FUNC
880 * @tc.require: issueNumber
881 */
882 HWTEST_F(DslmOemPropertyTest, InitDslmInfoInCertChain_case1, TestSize.Level0)
883 {
884 int32_t ret = InitDslmInfoInCertChain(nullptr);
885 EXPECT_EQ(ERR_INVALID_PARA, ret);
886 }
887
888 /**
889 * @tc.name: BufferToHksCertChain_case1
890 * @tc.desc: function BufferToHksCertChain with malformed input
891 * @tc.type: FUNC
892 * @tc.require: issueNumber
893 */
894 HWTEST_F(DslmOemPropertyTest, BufferToHksCertChain_case1, TestSize.Level0)
895 {
896 {
897 int32_t ret = BufferToHksCertChain(nullptr, 1, nullptr);
898 EXPECT_EQ(ERR_INVALID_PARA, ret);
899 }
900
901 {
902 const uint8_t data[] = {'0'};
903 uint32_t len = 1;
904 struct HksCertChain chain;
905 memset_s(&chain, sizeof(struct HksCertChain), 0, sizeof(struct HksCertChain));
906
907 int32_t ret = BufferToHksCertChain(data, len, &chain);
908 EXPECT_EQ(ERR_INVALID_PARA, ret);
909 }
910
911 {
912 uint8_t buff[8];
913 uint32_t len = 8;
914 memset_s(buff, sizeof(buff), 'c', sizeof(buff));
915 TlvCommon *ptr = (TlvCommon *)buff;
916 ptr->tag = 0x99;
917 ptr->len = 4;
918 struct HksCertChain chain;
919 memset_s(&chain, sizeof(struct HksCertChain), 0, sizeof(struct HksCertChain));
920
921 int32_t ret = BufferToHksCertChain(buff, len, &chain);
922 EXPECT_EQ(SUCCESS, ret);
923 EXPECT_EQ(0U, chain.certsCount);
924 }
925
926 {
927 uint8_t buff[8];
928 uint32_t len = 8;
929 memset_s(buff, sizeof(buff), 'c', sizeof(buff));
930 TlvCommon *ptr = (TlvCommon *)buff;
931 ptr->tag = 0x110;
932 ptr->len = 4;
933 struct HksCertChain chain;
934 memset_s(&chain, sizeof(struct HksCertChain), 0, sizeof(struct HksCertChain));
935
936 int32_t ret = BufferToHksCertChain(buff, len, &chain);
937 EXPECT_EQ(SUCCESS, ret);
938 EXPECT_EQ(0U, chain.certsCount);
939 }
940 }
941
942 /**
943 * @tc.name: HksCertChainToBuffer_case1
944 * @tc.desc: function HksCertChainToBuffer with malformed input
945 * @tc.type: FUNC
946 * @tc.require: issueNumber
947 */
948 HWTEST_F(DslmOemPropertyTest, HksCertChainToBuffer_case1, TestSize.Level0)
949 {
950 uint32_t len = 5;
951 uint8_t *data = nullptr;
952
953 int32_t ret = HksCertChainToBuffer(nullptr, &data, &len);
954 EXPECT_EQ(ERR_INVALID_PARA, ret);
955 }
956
957 /**
958 * @tc.name: DestroyHksCertChain_case1
959 * @tc.desc: function DestroyHksCertChain with malformed inputs
960 * @tc.type: FUNC
961 * @tc.require: issueNumber
962 */
963 HWTEST_F(DslmOemPropertyTest, DestroyHksCertChain_case1, TestSize.Level0)
964 {
965 struct HksCertChain *chain = (struct HksCertChain *)MALLOC(sizeof(struct HksCertChain));
966 ASSERT_NE(nullptr, chain);
967 struct HksBlob *blob = (struct HksBlob *)MALLOC(sizeof(struct HksBlob));
968 ASSERT_NE(nullptr, blob);
969
970 {
971 DestroyHksCertChain(nullptr);
972 }
973
974 { // cert != NULL && cert.certs == NULL
975 chain->certs = nullptr;
976 DestroyHksCertChain(chain);
977 }
978
979 { // cert != NULL && cert.certs != NULL && cert.certsCount <= 0
980 chain->certs = blob;
981 chain->certsCount = 0;
982
983 DestroyHksCertChain(chain);
984 }
985
986 { // cert != NULL && cert.certs != NULL && cert.certsCount == 1 && cert.certs[0].data == NULL
987 blob->size = 5;
988 blob->data = nullptr;
989 chain->certs = blob;
990 chain->certsCount = 1;
991
992 DestroyHksCertChain(chain);
993 }
994 }
995
996 /**
997 * @tc.name: ConstructHksCertChain_case1
998 * @tc.desc: function ConstructHksCertChain with malformed inputs
999 * @tc.type: FUNC
1000 * @tc.require: issueNumber
1001 */
1002 HWTEST_F(DslmOemPropertyTest, ConstructHksCertChain_case1, TestSize.Level0)
1003 {
1004 struct HksCertChain *chain = nullptr;
1005
1006 {
1007 int32_t ret = ConstructHksCertChain(&chain, nullptr);
1008 EXPECT_EQ(ERR_INVALID_PARA, ret);
1009 }
1010
1011 {
1012 struct HksCertChainInitParams param;
1013 param.certChainExist = false;
1014 param.certCountValid = true;
1015 param.certDataExist = true;
1016
1017 int32_t ret = ConstructHksCertChain(&chain, ¶m);
1018 EXPECT_EQ(ERR_INVALID_PARA, ret);
1019 }
1020
1021 {
1022 struct HksCertChainInitParams param;
1023 param.certChainExist = true;
1024 param.certCountValid = false;
1025 param.certDataExist = true;
1026
1027 int32_t ret = ConstructHksCertChain(&chain, ¶m);
1028 EXPECT_EQ(ERR_INVALID_PARA, ret);
1029 }
1030
1031 {
1032 struct HksCertChainInitParams param;
1033 param.certChainExist = true;
1034 param.certCountValid = true;
1035 param.certDataExist = false;
1036
1037 int32_t ret = ConstructHksCertChain(&chain, ¶m);
1038 EXPECT_EQ(ERR_INVALID_PARA, ret);
1039 }
1040 }
1041 } // namespace DslmUnitTest
1042 } // namespace Security
1043 } // namespace OHOS