1 /*
2 * Copyright (C) 2022-2023 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 <gtest/gtest.h>
17 #include "cstring"
18 #include "securec.h"
19 #include "asy_key_generator.h"
20 #include "blob.h"
21 #include "detailed_rsa_key_params.h"
22 #include "memory.h"
23 #include "openssl_common.h"
24 #include "signature.h"
25
26 using namespace std;
27 using namespace testing::ext;
28
29 namespace {
30 class CryptoRsaSignTest : public testing::Test {
31 public:
32 static void SetUpTestCase();
33 static void TearDownTestCase();
34 void SetUp();
35 void TearDown();
36 };
37
SetUp()38 void CryptoRsaSignTest::SetUp() {}
TearDown()39 void CryptoRsaSignTest::TearDown() {}
SetUpTestCase()40 void CryptoRsaSignTest::SetUpTestCase() {}
TearDownTestCase()41 void CryptoRsaSignTest::TearDownTestCase() {}
42
43 namespace {
44 constexpr uint32_t RSA_2048_N_BYTE_SIZE = 256;
45 constexpr uint32_t RSA_2048_D_BYTE_SIZE = 256;
46 constexpr uint32_t RSA_2048_E_BYTE_SIZE = 3;
47
48 constexpr unsigned char CORRECT_N[] =
49 "\x92\x60\xd0\x75\x0a\xe1\x17\xee\xe5\x5c\x3f\x3d\xea\xba\x74\x91"
50 "\x75\x21\xa2\x62\xee\x76\x00\x7c\xdf\x8a\x56\x75\x5a\xd7\x3a\x15"
51 "\x98\xa1\x40\x84\x10\xa0\x14\x34\xc3\xf5\xbc\x54\xa8\x8b\x57\xfa"
52 "\x19\xfc\x43\x28\xda\xea\x07\x50\xa4\xc4\x4e\x88\xcf\xf3\xb2\x38"
53 "\x26\x21\xb8\x0f\x67\x04\x64\x43\x3e\x43\x36\xe6\xd0\x03\xe8\xcd"
54 "\x65\xbf\xf2\x11\xda\x14\x4b\x88\x29\x1c\x22\x59\xa0\x0a\x72\xb7"
55 "\x11\xc1\x16\xef\x76\x86\xe8\xfe\xe3\x4e\x4d\x93\x3c\x86\x81\x87"
56 "\xbd\xc2\x6f\x7b\xe0\x71\x49\x3c\x86\xf7\xa5\x94\x1c\x35\x10\x80"
57 "\x6a\xd6\x7b\x0f\x94\xd8\x8f\x5c\xf5\xc0\x2a\x09\x28\x21\xd8\x62"
58 "\x6e\x89\x32\xb6\x5c\x5b\xd8\xc9\x20\x49\xc2\x10\x93\x2b\x7a\xfa"
59 "\x7a\xc5\x9c\x0e\x88\x6a\xe5\xc1\xed\xb0\x0d\x8c\xe2\xc5\x76\x33"
60 "\xdb\x26\xbd\x66\x39\xbf\xf7\x3c\xee\x82\xbe\x92\x75\xc4\x02\xb4"
61 "\xcf\x2a\x43\x88\xda\x8c\xf8\xc6\x4e\xef\xe1\xc5\xa0\xf5\xab\x80"
62 "\x57\xc3\x9f\xa5\xc0\x58\x9c\x3e\x25\x3f\x09\x60\x33\x23\x00\xf9"
63 "\x4b\xea\x44\x87\x7b\x58\x8e\x1e\xdb\xde\x97\xcf\x23\x60\x72\x7a"
64 "\x09\xb7\x75\x26\x2d\x7e\xe5\x52\xb3\x31\x9b\x92\x66\xf0\x5a\x25";
65
66 constexpr unsigned char CORRECT_E[] = "\x01\x00\x01";
67
68 constexpr unsigned char CORRECT_D[] =
69 "\x6a\x7d\xf2\xca\x63\xea\xd4\xdd\xa1\x91\xd6\x14\xb6\xb3\x85\xe0"
70 "\xd9\x05\x6a\x3d\x6d\x5c\xfe\x07\xdb\x1d\xaa\xbe\xe0\x22\xdb\x08"
71 "\x21\x2d\x97\x61\x3d\x33\x28\xe0\x26\x7c\x9d\xd2\x3d\x78\x7a\xbd"
72 "\xe2\xaf\xcb\x30\x6a\xeb\x7d\xfc\xe6\x92\x46\xcc\x73\xf5\xc8\x7f"
73 "\xdf\x06\x03\x01\x79\xa2\x11\x4b\x76\x7d\xb1\xf0\x83\xff\x84\x1c"
74 "\x02\x5d\x7d\xc0\x0c\xd8\x24\x35\xb9\xa9\x0f\x69\x53\x69\xe9\x4d"
75 "\xf2\x3d\x2c\xe4\x58\xbc\x3b\x32\x83\xad\x8b\xba\x2b\x8f\xa1\xba"
76 "\x62\xe2\xdc\xe9\xac\xcf\xf3\x79\x9a\xae\x7c\x84\x00\x16\xf3\xba"
77 "\x8e\x00\x48\xc0\xb6\xcc\x43\x39\xaf\x71\x61\x00\x3a\x5b\xeb\x86"
78 "\x4a\x01\x64\xb2\xc1\xc9\x23\x7b\x64\xbc\x87\x55\x69\x94\x35\x1b"
79 "\x27\x50\x6c\x33\xd4\xbc\xdf\xce\x0f\x9c\x49\x1a\x7d\x6b\x06\x28"
80 "\xc7\xc8\x52\xbe\x4f\x0a\x9c\x31\x32\xb2\xed\x3a\x2c\x88\x81\xe9"
81 "\xaa\xb0\x7e\x20\xe1\x7d\xeb\x07\x46\x91\xbe\x67\x77\x76\xa7\x8b"
82 "\x5c\x50\x2e\x05\xd9\xbd\xde\x72\x12\x6b\x37\x38\x69\x5e\x2d\xd1"
83 "\xa0\xa9\x8a\x14\x24\x7c\x65\xd8\xa7\xee\x79\x43\x2a\x09\x2c\xb0"
84 "\x72\x1a\x12\xdf\x79\x8e\x44\xf7\xcf\xce\x0c\x49\x81\x47\xa9\xb1";
85
86 const char *g_rsaAlgName = "RSA";
87 // check pss salt len in PSS padding
88 const char *g_sha256MdName = "SHA256";
89 const char *g_mgf1Name = "MGF1";
90 constexpr int32_t PSS_INVLAID_SALTLEN = -5;
91 constexpr int32_t PSS_NORMAL_SALTLEN = 32;
92 constexpr int32_t PSS_TRAILER_FIELD_LEN = 1;
93 }
94
RemoveLastChar(const unsigned char * str,unsigned char * dest,uint32_t destLen)95 static void RemoveLastChar(const unsigned char *str, unsigned char *dest, uint32_t destLen)
96 {
97 for (size_t i = 0; i < destLen; i++) {
98 dest[i] = str[i];
99 }
100 return;
101 }
102
EndianSwap(unsigned char * pData,int startIndex,int length)103 static void EndianSwap(unsigned char *pData, int startIndex, int length)
104 {
105 int cnt = length / 2;
106 int start = startIndex;
107 int end = startIndex + length - 1;
108 unsigned char tmp;
109 for (int i = 0; i < cnt; i++) {
110 tmp = pData[start + i];
111 pData[start + i] = pData[end - i];
112 pData[end - i] = tmp;
113 }
114 }
115
116 // 2048 defined the length of byte array
GenerateRsa2048CorrectCommonKeySpec(unsigned char * dataN,HcfRsaCommParamsSpec * returnSpec)117 static void GenerateRsa2048CorrectCommonKeySpec(unsigned char *dataN, HcfRsaCommParamsSpec *returnSpec)
118 {
119 RemoveLastChar(CORRECT_N, dataN, RSA_2048_N_BYTE_SIZE);
120 if (!IsBigEndian()) {
121 // the device is not big endian
122 EndianSwap(dataN, 0, RSA_2048_N_BYTE_SIZE);
123 }
124 returnSpec->n.data = dataN;
125 returnSpec->n.len = RSA_2048_N_BYTE_SIZE;
126 returnSpec->base.algName = const_cast<char *>(g_rsaAlgName);
127 returnSpec->base.specType = HCF_COMMON_PARAMS_SPEC;
128 return;
129 }
130
GenerateRsa2048CorrectPubKeySpec(unsigned char * dataN,unsigned char * dataE,HcfRsaPubKeyParamsSpec * returnPubSpec)131 static void GenerateRsa2048CorrectPubKeySpec(unsigned char *dataN, unsigned char *dataE,
132 HcfRsaPubKeyParamsSpec *returnPubSpec)
133 {
134 HcfRsaCommParamsSpec rsaCommSpec = {};
135 GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec);
136 RemoveLastChar(CORRECT_E, dataE, RSA_2048_E_BYTE_SIZE);
137 if (!IsBigEndian()) {
138 // the device is not big endian
139 EndianSwap(dataE, 0, RSA_2048_E_BYTE_SIZE);
140 }
141 returnPubSpec->pk.data = dataE;
142 returnPubSpec->pk.len = RSA_2048_E_BYTE_SIZE;
143 returnPubSpec->base = rsaCommSpec;
144 returnPubSpec->base.base.specType = HCF_PUBLIC_KEY_SPEC;
145 }
146
GenerateRsa2048CorrectKeyPairSpec(unsigned char * dataN,unsigned char * dataE,unsigned char * dataD,HcfRsaKeyPairParamsSpec * returnPairSpec)147 static void GenerateRsa2048CorrectKeyPairSpec(unsigned char *dataN, unsigned char *dataE, unsigned char *dataD,
148 HcfRsaKeyPairParamsSpec *returnPairSpec)
149 {
150 HcfRsaCommParamsSpec rsaCommSpec = {};
151 GenerateRsa2048CorrectCommonKeySpec(dataN, &rsaCommSpec);
152 RemoveLastChar(CORRECT_E, dataE, RSA_2048_E_BYTE_SIZE);
153 RemoveLastChar(CORRECT_D, dataD, RSA_2048_D_BYTE_SIZE);
154 if (!IsBigEndian()) {
155 // the device is not big endian
156 EndianSwap(dataE, 0, RSA_2048_E_BYTE_SIZE);
157 EndianSwap(dataD, 0, RSA_2048_D_BYTE_SIZE);
158 }
159 returnPairSpec->pk.data = dataE;
160 returnPairSpec->pk.len = RSA_2048_E_BYTE_SIZE;
161 returnPairSpec->sk.data = dataD;
162 returnPairSpec->sk.len = RSA_2048_D_BYTE_SIZE;
163 returnPairSpec->base = rsaCommSpec;
164 returnPairSpec->base.base.specType = HCF_KEY_PAIR_SPEC;
165 }
166 // HcfSignCreate correct_case
167 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest100, TestSize.Level0)
168 {
169 HcfResult res = HCF_SUCCESS;
170 HcfSign *sign = nullptr;
171 res = HcfSignCreate("RSA1024|PKCS1|MD5", &sign);
172 EXPECT_EQ(res, HCF_SUCCESS);
173 EXPECT_NE(sign, nullptr);
174 EXPECT_NE(sign->base.getClass(), nullptr);
175 EXPECT_NE(sign->base.destroy, nullptr);
176 EXPECT_NE(sign->init, nullptr);
177 EXPECT_NE(sign->update, nullptr);
178 EXPECT_NE(sign->sign, nullptr);
179 HcfObjDestroy(sign);
180 }
181
182 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest110, TestSize.Level0)
183 {
184 HcfResult res = HCF_SUCCESS;
185 HcfSign *sign = nullptr;
186 res = HcfSignCreate("RSA1024|PKCS1|SHA1", &sign);
187 EXPECT_EQ(res, HCF_SUCCESS);
188 EXPECT_NE(sign, nullptr);
189 EXPECT_NE(sign->base.getClass(), nullptr);
190 EXPECT_NE(sign->base.destroy, nullptr);
191 EXPECT_NE(sign->init, nullptr);
192 EXPECT_NE(sign->update, nullptr);
193 EXPECT_NE(sign->sign, nullptr);
194 HcfObjDestroy(sign);
195 }
196
197 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest120, TestSize.Level0)
198 {
199 HcfResult res = HCF_SUCCESS;
200 HcfSign *sign = nullptr;
201 res = HcfSignCreate("RSA1024|PKCS1|SHA256", &sign);
202 EXPECT_EQ(res, HCF_SUCCESS);
203 EXPECT_NE(sign, nullptr);
204 EXPECT_NE(sign->base.getClass(), nullptr);
205 EXPECT_NE(sign->base.destroy, nullptr);
206 EXPECT_NE(sign->init, nullptr);
207 EXPECT_NE(sign->update, nullptr);
208 EXPECT_NE(sign->sign, nullptr);
209 HcfObjDestroy(sign);
210 }
211
212 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest130, TestSize.Level0)
213 {
214 HcfResult res = HCF_SUCCESS;
215 HcfSign *sign = nullptr;
216 res = HcfSignCreate("RSA1024|PKCS1|SHA512", &sign);
217 EXPECT_EQ(res, HCF_SUCCESS);
218 EXPECT_NE(sign, nullptr);
219 EXPECT_NE(sign->base.getClass(), nullptr);
220 EXPECT_NE(sign->base.destroy, nullptr);
221 EXPECT_NE(sign->init, nullptr);
222 EXPECT_NE(sign->update, nullptr);
223 EXPECT_NE(sign->sign, nullptr);
224 HcfObjDestroy(sign);
225 }
226
227 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest140, TestSize.Level0)
228 {
229 HcfResult res = HCF_SUCCESS;
230 HcfSign *sign = nullptr;
231 res = HcfSignCreate("RSA1024|PSS|SHA1|MGF1_SHA1", &sign);
232 EXPECT_EQ(res, HCF_SUCCESS);
233 EXPECT_NE(sign, nullptr);
234 EXPECT_NE(sign->base.getClass(), nullptr);
235 EXPECT_NE(sign->base.destroy, nullptr);
236 EXPECT_NE(sign->init, nullptr);
237 EXPECT_NE(sign->update, nullptr);
238 EXPECT_NE(sign->sign, nullptr);
239 HcfObjDestroy(sign);
240 }
241
242 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest150, TestSize.Level0)
243 {
244 HcfResult res = HCF_SUCCESS;
245 HcfSign *sign = nullptr;
246 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA512", &sign);
247 EXPECT_EQ(res, HCF_SUCCESS);
248 EXPECT_NE(sign, nullptr);
249 EXPECT_NE(sign->base.getClass(), nullptr);
250 EXPECT_NE(sign->base.destroy, nullptr);
251 EXPECT_NE(sign->init, nullptr);
252 EXPECT_NE(sign->update, nullptr);
253 EXPECT_NE(sign->sign, nullptr);
254 HcfObjDestroy(sign);
255 }
256
257 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest160, TestSize.Level0)
258 {
259 HcfResult res = HCF_SUCCESS;
260 HcfSign *sign = nullptr;
261 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
262 EXPECT_EQ(res, HCF_SUCCESS);
263 EXPECT_NE(sign, nullptr);
264 EXPECT_NE(sign->base.getClass(), nullptr);
265 EXPECT_NE(sign->base.destroy, nullptr);
266 EXPECT_NE(sign->init, nullptr);
267 EXPECT_NE(sign->update, nullptr);
268 EXPECT_NE(sign->sign, nullptr);
269 HcfObjDestroy(sign);
270 }
271
272 // HcfSignCreate Incorrect case
273 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest200, TestSize.Level0)
274 {
275 HcfResult res = HCF_SUCCESS;
276 HcfSign *sign = nullptr;
277 res = HcfSignCreate("RSA1024|PSSaa|SHA256|MGF1_SHA256", &sign);
278 EXPECT_NE(res, HCF_SUCCESS);
279 EXPECT_EQ(sign, nullptr);
280 }
281
282 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest210, TestSize.Level0)
283 {
284 HcfResult res = HCF_SUCCESS;
285 HcfSign *sign = nullptr;
286 res = HcfSignCreate(nullptr, &sign);
287 EXPECT_NE(res, HCF_SUCCESS);
288 EXPECT_EQ(sign, nullptr);
289 }
290
291 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest220, TestSize.Level0)
292 {
293 HcfResult res = HCF_SUCCESS;
294 HcfSign *sign = nullptr;
295 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256|123123123123123123212312312321"
296 "123123123123213asdasdasdasdasdasdasdasdasdasdasdasdasdsasdasds12", &sign);
297 EXPECT_NE(res, HCF_SUCCESS);
298 EXPECT_EQ(sign, nullptr);
299 }
300
301 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest230, TestSize.Level0)
302 {
303 HcfResult res = HCF_SUCCESS;
304 HcfSign *sign = nullptr;
305 res = HcfSignCreate("RSA1024|PSS|SHA256aa|MGF1_SHA256", &sign);
306 EXPECT_NE(res, HCF_SUCCESS);
307 EXPECT_EQ(sign, nullptr);
308 }
309
310 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest240, TestSize.Level0)
311 {
312 HcfResult res = HCF_SUCCESS;
313 HcfSign *sign = nullptr;
314 res = HcfSignCreate("RSA1024|PSS|SHA256aa|MGF1_SHA256asdasdas", &sign);
315 EXPECT_NE(res, HCF_SUCCESS);
316 EXPECT_EQ(sign, nullptr);
317 }
318
319 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest250, TestSize.Level0)
320 {
321 HcfResult res = HCF_SUCCESS;
322 HcfSign *sign = nullptr;
323 res = HcfSignCreate("RSA1024|PSS|SHA256aa|MGF1_SHA256", &sign);
324 EXPECT_NE(res, HCF_SUCCESS);
325 EXPECT_EQ(sign, nullptr);
326 }
327
328 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest260, TestSize.Level0)
329 {
330 HcfResult res = HCF_SUCCESS;
331 res = HcfSignCreate("RSA1024|PSS|SHA256aa|MGF1_SHA256", nullptr);
332 EXPECT_NE(res, HCF_SUCCESS);
333 }
334
335 // incorrect case : init signer with nullptr private key.
336 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest270, TestSize.Level0)
337 {
338 HcfResult res = HCF_SUCCESS;
339 HcfSign *sign = nullptr;
340 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
341 EXPECT_EQ(res, HCF_SUCCESS);
342
343 res = sign->init(sign, nullptr, nullptr);
344 EXPECT_NE(res, HCF_SUCCESS);
345
346 HcfObjDestroy(sign);
347 }
348
349 // incorrect case : init signer with public Key.
350 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest280, TestSize.Level0)
351 {
352 HcfResult res = HCF_SUCCESS;
353 HcfAsyKeyGenerator *generator = nullptr;
354 res = HcfAsyKeyGeneratorCreate("RSA768|PRIMES_2", &generator);
355 HcfKeyPair *keyPair = nullptr;
356 res = generator->generateKeyPair(generator, nullptr, &keyPair);
357 EXPECT_EQ(res, HCF_SUCCESS);
358
359 HcfSign *sign = nullptr;
360 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
361 EXPECT_EQ(res, HCF_SUCCESS);
362
363 HcfPubKey *pubKey = keyPair->pubKey;
364
365 res = sign->init(sign, nullptr, (HcfPriKey *)pubKey);
366 EXPECT_NE(res, HCF_SUCCESS);
367
368 HcfObjDestroy(sign);
369 HcfObjDestroy(generator);
370 HcfObjDestroy(keyPair);
371 }
372
373 // incorrect case : use update function before intialize.
374 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest281, TestSize.Level0)
375 {
376 HcfResult res = HCF_SUCCESS;
377 HcfSign *sign = nullptr;
378 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
379 EXPECT_EQ(res, HCF_SUCCESS);
380
381 uint8_t plan[] = "this is rsa verify test.";
382 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
383 res = sign->update(sign, &input);
384 EXPECT_NE(res, HCF_SUCCESS);
385
386 HcfObjDestroy(sign);
387 }
388
389 // incorrect case : use sign function before intialize.
390 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest290, TestSize.Level0)
391 {
392 HcfResult res = HCF_SUCCESS;
393
394 HcfSign *sign = nullptr;
395 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
396 EXPECT_EQ(res, HCF_SUCCESS);
397
398 uint8_t plan[] = "this is rsa verify test.";
399 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
400 HcfBlob signatureData = {.data = nullptr, .len = 0};
401 res = sign->sign(sign, &input, &signatureData);
402 EXPECT_NE(res, HCF_SUCCESS);
403
404 HcfObjDestroy(sign);
405 }
406
407 // incorrect case : init with other class (not cipher).
408 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest291, TestSize.Level0)
409 {
410 HcfResult res = HCF_SUCCESS;
411 HcfAsyKeyGenerator *generator = nullptr;
412 res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
413 HcfKeyPair *keyPair = nullptr;
414 res = generator->generateKeyPair(generator, nullptr, &keyPair);
415 EXPECT_EQ(res, HCF_SUCCESS);
416
417 HcfSign *sign = nullptr;
418 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
419 EXPECT_EQ(res, HCF_SUCCESS);
420
421 res = sign->init((HcfSign *)generator, nullptr, keyPair->priKey);
422 EXPECT_NE(res, HCF_SUCCESS);
423
424 HcfObjDestroy(sign);
425 HcfObjDestroy(generator);
426 HcfObjDestroy(keyPair);
427 }
428
429 // incorrect case : update with other class (not cipher).
430 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest292, TestSize.Level0)
431 {
432 HcfResult res = HCF_SUCCESS;
433 HcfAsyKeyGenerator *generator = nullptr;
434 res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
435 HcfKeyPair *keyPair = nullptr;
436 res = generator->generateKeyPair(generator, nullptr, &keyPair);
437 EXPECT_EQ(res, HCF_SUCCESS);
438
439 HcfSign *sign = nullptr;
440 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
441 EXPECT_EQ(res, HCF_SUCCESS);
442
443 uint8_t plan[] = "this is rsa verify test.";
444 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
445 res = sign->update((HcfSign *)generator, &input);
446 EXPECT_NE(res, HCF_SUCCESS);
447
448 HcfObjDestroy(sign);
449 HcfObjDestroy(generator);
450 HcfObjDestroy(keyPair);
451 }
452
453 // incorrect case : sign with other class (not cipher).
454 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest293, TestSize.Level0)
455 {
456 HcfResult res = HCF_SUCCESS;
457 HcfAsyKeyGenerator *generator = nullptr;
458 res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
459
460 HcfSign *sign = nullptr;
461 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
462 EXPECT_EQ(res, HCF_SUCCESS);
463
464 HcfBlob input;
465 res = sign->sign((HcfSign *)generator, nullptr, &input);
466 EXPECT_NE(res, HCF_SUCCESS);
467
468 HcfObjDestroy(sign);
469 HcfObjDestroy(generator);
470 }
471
472 // incorrect case : update with nullptr inputBlob.
473 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest294, TestSize.Level0)
474 {
475 HcfResult res = HCF_SUCCESS;
476 HcfAsyKeyGenerator *generator = nullptr;
477 res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
478
479 HcfSign *sign = nullptr;
480 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
481 EXPECT_EQ(res, HCF_SUCCESS);
482
483 res = sign->update(sign, nullptr);
484 EXPECT_NE(res, HCF_SUCCESS);
485
486 HcfObjDestroy(sign);
487 HcfObjDestroy(generator);
488 }
489
490 // incorrect case : sign with nullptr outputBlob.
491 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest295, TestSize.Level0)
492 {
493 HcfResult res = HCF_SUCCESS;
494 HcfAsyKeyGenerator *generator = nullptr;
495 res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
496
497 HcfSign *sign = nullptr;
498 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
499 EXPECT_EQ(res, HCF_SUCCESS);
500
501 res = sign->sign(sign, nullptr, nullptr);
502 EXPECT_NE(res, HCF_SUCCESS);
503
504 HcfObjDestroy(sign);
505 HcfObjDestroy(generator);
506 }
507
508
509 // correct case: sign and update
510 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest300, TestSize.Level0)
511 {
512 HcfResult res = HCF_SUCCESS;
513 uint8_t plan[] = "this is rsa verify test.";
514 HcfAsyKeyGenerator *generator = nullptr;
515 res = HcfAsyKeyGeneratorCreate("RSA768|PRIMES_2", &generator);
516 HcfKeyPair *keyPair = nullptr;
517 res = generator->generateKeyPair(generator, nullptr, &keyPair);
518 EXPECT_EQ(res, HCF_SUCCESS);
519
520 HcfPriKey *prikey = keyPair->priKey;
521 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
522 HcfBlob verifyData = {.data = nullptr, .len = 0};
523 HcfSign *sign = nullptr;
524 res = HcfSignCreate("RSA768|PKCS1|SHA1", &sign);
525 EXPECT_EQ(res, HCF_SUCCESS);
526 res = sign->init(sign, nullptr, prikey);
527 EXPECT_EQ(res, HCF_SUCCESS);
528 res = sign->sign(sign, &input, &verifyData);
529
530 HcfObjDestroy(sign);
531 HcfFree(verifyData.data);
532 HcfObjDestroy(keyPair);
533 HcfObjDestroy(generator);
534 }
535
536 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest310, TestSize.Level0)
537 {
538 uint8_t plan[] = "this is rsa verify test.";
539 HcfAsyKeyGenerator *generator = nullptr;
540 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
541 HcfKeyPair *keyPair = nullptr;
542 res = generator->generateKeyPair(generator, nullptr, &keyPair);
543 EXPECT_EQ(res, HCF_SUCCESS);
544
545 HcfPriKey *prikey = keyPair->priKey;
546 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
547 HcfBlob verifyData = {.data = nullptr, .len = 0};
548 HcfSign *sign = nullptr;
549 res = HcfSignCreate("RSA1024|PKCS1|SHA256", &sign);
550 EXPECT_EQ(res, HCF_SUCCESS);
551 res = sign->init(sign, nullptr, prikey);
552 EXPECT_EQ(res, HCF_SUCCESS);
553 res = sign->sign(sign, &input, &verifyData);
554
555 HcfObjDestroy(sign);
556 HcfFree(verifyData.data);
557 HcfObjDestroy(keyPair);
558 HcfObjDestroy(generator);
559 }
560
561 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest320, TestSize.Level0)
562 {
563 uint8_t plan[] = "this is rsa verify test.";
564 HcfAsyKeyGenerator *generator = nullptr;
565 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
566 HcfKeyPair *keyPair = nullptr;
567 res = generator->generateKeyPair(generator, nullptr, &keyPair);
568 EXPECT_EQ(res, HCF_SUCCESS);
569
570 HcfPriKey *prikey = keyPair->priKey;
571 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
572 HcfBlob verifyData = {.data = nullptr, .len = 0};
573 HcfSign *sign = nullptr;
574 res = HcfSignCreate("RSA2048|PKCS1|SHA256", &sign);
575 EXPECT_EQ(res, HCF_SUCCESS);
576 res = sign->init(sign, nullptr, prikey);
577 EXPECT_EQ(res, HCF_SUCCESS);
578 res = sign->sign(sign, &input, &verifyData);
579
580 HcfObjDestroy(sign);
581 HcfFree(verifyData.data);
582 HcfObjDestroy(keyPair);
583 HcfObjDestroy(generator);
584 }
585
586 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest330, TestSize.Level0)
587 {
588 uint8_t plan[] = "this is rsa verify test.";
589 HcfAsyKeyGenerator *generator = nullptr;
590 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
591 HcfKeyPair *keyPair = nullptr;
592 res = generator->generateKeyPair(generator, nullptr, &keyPair);
593 EXPECT_EQ(res, HCF_SUCCESS);
594
595 HcfPriKey *prikey = keyPair->priKey;
596 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
597 HcfBlob verifyData = {.data = nullptr, .len = 0};
598 HcfSign *sign = nullptr;
599 res = HcfSignCreate("RSA4096|PKCS1|SHA256", &sign);
600 EXPECT_EQ(res, HCF_SUCCESS);
601 res = sign->init(sign, nullptr, prikey);
602 EXPECT_EQ(res, HCF_SUCCESS);
603 res = sign->sign(sign, &input, &verifyData);
604
605 HcfObjDestroy(sign);
606 HcfFree(verifyData.data);
607 HcfObjDestroy(keyPair);
608 HcfObjDestroy(generator);
609 }
610
611 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest340, TestSize.Level0)
612 {
613 uint8_t plan[] = "this is rsa verify test.";
614 HcfAsyKeyGenerator *generator = nullptr;
615 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
616 HcfKeyPair *keyPair = nullptr;
617 res = generator->generateKeyPair(generator, nullptr, &keyPair);
618 EXPECT_EQ(res, HCF_SUCCESS);
619
620 HcfPriKey *prikey = keyPair->priKey;
621 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
622 HcfBlob verifyData = {.data = nullptr, .len = 0};
623 HcfSign *sign = nullptr;
624 res = HcfSignCreate("RSA4096|PKCS1|SHA512", &sign);
625 EXPECT_EQ(res, HCF_SUCCESS);
626 res = sign->init(sign, nullptr, prikey);
627 EXPECT_EQ(res, HCF_SUCCESS);
628 res = sign->sign(sign, &input, &verifyData);
629
630 HcfObjDestroy(sign);
631 HcfFree(verifyData.data);
632 HcfObjDestroy(keyPair);
633 HcfObjDestroy(generator);
634 }
635
636 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest350, TestSize.Level0)
637 {
638 uint8_t plan[] = "this is rsa verify test.";
639 HcfAsyKeyGenerator *generator = nullptr;
640 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
641 HcfKeyPair *keyPair = nullptr;
642 res = generator->generateKeyPair(generator, nullptr, &keyPair);
643 EXPECT_EQ(res, HCF_SUCCESS);
644
645 HcfPriKey *prikey = keyPair->priKey;
646 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
647 HcfBlob verifyData = {.data = nullptr, .len = 0};
648 HcfSign *sign = nullptr;
649 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
650 EXPECT_EQ(res, HCF_SUCCESS);
651 res = sign->init(sign, nullptr, prikey);
652 EXPECT_EQ(res, HCF_SUCCESS);
653 res = sign->sign(sign, &input, &verifyData);
654
655 HcfObjDestroy(sign);
656 HcfFree(verifyData.data);
657 HcfObjDestroy(keyPair);
658 HcfObjDestroy(generator);
659 }
660
661 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest360, TestSize.Level0)
662 {
663 uint8_t plan[] = "this is rsa verify test.";
664 HcfAsyKeyGenerator *generator = nullptr;
665 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
666 HcfKeyPair *keyPair = nullptr;
667 res = generator->generateKeyPair(generator, nullptr, &keyPair);
668 EXPECT_EQ(res, HCF_SUCCESS);
669
670 HcfPriKey *prikey = keyPair->priKey;
671 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
672 HcfBlob verifyData = {.data = nullptr, .len = 0};
673 HcfSign *sign = nullptr;
674 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
675 EXPECT_EQ(res, HCF_SUCCESS);
676 res = sign->init(sign, nullptr, prikey);
677 EXPECT_EQ(res, HCF_SUCCESS);
678 res = sign->sign(sign, &input, &verifyData);
679
680 HcfObjDestroy(sign);
681 HcfFree(verifyData.data);
682 HcfObjDestroy(keyPair);
683 HcfObjDestroy(generator);
684 }
685
686 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest370, TestSize.Level0)
687 {
688 uint8_t plan[] = "this is rsa verify test.";
689 HcfAsyKeyGenerator *generator = nullptr;
690 HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072|PRIMES_2", &generator);
691 HcfKeyPair *keyPair = nullptr;
692 res = generator->generateKeyPair(generator, nullptr, &keyPair);
693 EXPECT_EQ(res, HCF_SUCCESS);
694
695 HcfPriKey *prikey = keyPair->priKey;
696 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
697 HcfBlob verifyData = {.data = nullptr, .len = 0};
698 HcfSign *sign = nullptr;
699 res = HcfSignCreate("RSA3072|PSS|SHA256|MGF1_SHA256", &sign);
700 EXPECT_EQ(res, HCF_SUCCESS);
701 res = sign->init(sign, nullptr, prikey);
702 EXPECT_EQ(res, HCF_SUCCESS);
703 res = sign->sign(sign, &input, &verifyData);
704
705 HcfObjDestroy(sign);
706 HcfFree(verifyData.data);
707 HcfObjDestroy(keyPair);
708 HcfObjDestroy(generator);
709 }
710
711 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest380, TestSize.Level0)
712 {
713 uint8_t plan[] = "this is rsa verify test.";
714 HcfAsyKeyGenerator *generator = nullptr;
715 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
716 HcfKeyPair *keyPair = nullptr;
717 res = generator->generateKeyPair(generator, nullptr, &keyPair);
718 EXPECT_EQ(res, HCF_SUCCESS);
719
720 HcfPriKey *prikey = keyPair->priKey;
721 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
722 HcfBlob verifyData = {.data = nullptr, .len = 0};
723 HcfSign *sign = nullptr;
724 res = HcfSignCreate("RSA4096|PSS|SHA256|MGF1_SHA256", &sign);
725 EXPECT_EQ(res, HCF_SUCCESS);
726 res = sign->init(sign, nullptr, prikey);
727 EXPECT_EQ(res, HCF_SUCCESS);
728 res = sign->sign(sign, &input, &verifyData);
729
730 HcfObjDestroy(sign);
731 HcfFree(verifyData.data);
732 HcfObjDestroy(keyPair);
733 HcfObjDestroy(generator);
734 }
735
736 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest390, TestSize.Level0)
737 {
738 uint8_t plan[] = "this is rsa verify test.";
739 HcfAsyKeyGenerator *generator = nullptr;
740 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
741 HcfKeyPair *keyPair = nullptr;
742 res = generator->generateKeyPair(generator, nullptr, &keyPair);
743 EXPECT_EQ(res, HCF_SUCCESS);
744
745 HcfPriKey *prikey = keyPair->priKey;
746 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
747 HcfBlob verifyData = {.data = nullptr, .len = 0};
748 HcfSign *sign = nullptr;
749 res = HcfSignCreate("RSA4096|PSS|SHA512|MGF1_SHA256", &sign);
750 EXPECT_EQ(res, HCF_SUCCESS);
751 res = sign->init(sign, nullptr, prikey);
752 EXPECT_EQ(res, HCF_SUCCESS);
753 res = sign->sign(sign, &input, &verifyData);
754
755 HcfObjDestroy(sign);
756 HcfFree(verifyData.data);
757 HcfObjDestroy(keyPair);
758 HcfObjDestroy(generator);
759 }
760
761 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest400, TestSize.Level0)
762 {
763 uint8_t plan[] = "this is rsa verify test.";
764 HcfAsyKeyGenerator *generator = nullptr;
765 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
766 HcfKeyPair *keyPair = nullptr;
767 res = generator->generateKeyPair(generator, nullptr, &keyPair);
768 EXPECT_EQ(res, HCF_SUCCESS);
769
770 HcfPriKey *prikey = keyPair->priKey;
771 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
772 HcfBlob verifyData = {.data = nullptr, .len = 0};
773 HcfSign *sign = nullptr;
774 res = HcfSignCreate("RSA4096|PSS|SHA1|MGF1_SHA256", &sign);
775 EXPECT_EQ(res, HCF_SUCCESS);
776 res = sign->init(sign, nullptr, prikey);
777 EXPECT_EQ(res, HCF_SUCCESS);
778 res = sign->sign(sign, &input, &verifyData);
779
780 HcfObjDestroy(sign);
781 HcfFree(verifyData.data);
782 HcfObjDestroy(keyPair);
783 HcfObjDestroy(generator);
784 }
785
786 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest410, TestSize.Level0)
787 {
788 uint8_t plan[] = "this is rsa verify test.";
789 HcfAsyKeyGenerator *generator = nullptr;
790 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
791 HcfKeyPair *keyPair = nullptr;
792 res = generator->generateKeyPair(generator, nullptr, &keyPair);
793 EXPECT_EQ(res, HCF_SUCCESS);
794
795 HcfPriKey *prikey = keyPair->priKey;
796 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
797 HcfBlob verifyData = {.data = nullptr, .len = 0};
798 HcfSign *sign = nullptr;
799 res = HcfSignCreate("RSA4096|PSS|SHA256|MGF1_MD5", &sign);
800 EXPECT_EQ(res, HCF_SUCCESS);
801 res = sign->init(sign, nullptr, prikey);
802 EXPECT_EQ(res, HCF_SUCCESS);
803 res = sign->sign(sign, &input, &verifyData);
804
805 HcfObjDestroy(sign);
806 HcfFree(verifyData.data);
807 HcfObjDestroy(keyPair);
808 HcfObjDestroy(generator);
809 }
810
811 // incorrect case: double init sign
812 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest500, TestSize.Level0)
813 {
814 HcfAsyKeyGenerator *generator = nullptr;
815 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_2", &generator);
816 HcfKeyPair *keyPair = nullptr;
817 res = generator->generateKeyPair(generator, nullptr, &keyPair);
818 EXPECT_EQ(res, HCF_SUCCESS);
819
820 HcfPriKey *prikey = keyPair->priKey;
821 HcfSign *sign = nullptr;
822 res = HcfSignCreate("RSA4096|PKCS1|SHA512", &sign);
823 EXPECT_EQ(res, HCF_SUCCESS);
824
825 res = sign->init(sign, nullptr, prikey);
826 EXPECT_EQ(res, HCF_SUCCESS);
827 res = sign->init(sign, nullptr, prikey);
828 EXPECT_NE(res, HCF_SUCCESS);
829
830 HcfObjDestroy(sign);
831 HcfObjDestroy(keyPair);
832 HcfObjDestroy(generator);
833 }
834
835 // incorrect case : init signer with key pair's public Key by key pair spec.
836 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest001, TestSize.Level0)
837 {
838 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
839 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
840 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
841 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
842 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
843
844 HcfAsyKeyGeneratorBySpec *generator = nullptr;
845 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
846 EXPECT_EQ(res, HCF_SUCCESS);
847 EXPECT_NE(generator, nullptr);
848
849 HcfKeyPair *keyPair = nullptr;
850 res = generator->generateKeyPair(generator, &keyPair);
851 EXPECT_EQ(res, HCF_SUCCESS);
852 EXPECT_NE(keyPair, nullptr);
853
854 HcfSign *sign = nullptr;
855 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
856 EXPECT_EQ(res, HCF_SUCCESS);
857
858 HcfPubKey *pubKey = keyPair->pubKey;
859
860 res = sign->init(sign, nullptr, (HcfPriKey *)pubKey);
861 EXPECT_NE(res, HCF_SUCCESS);
862
863 HcfObjDestroy(sign);
864 HcfObjDestroy(generator);
865 HcfObjDestroy(keyPair);
866 }
867
868 // incorrect case : init signer with public Key by key pair spec.
869 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest002, TestSize.Level0)
870 {
871 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
872 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
873 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
874 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
875 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
876
877 HcfAsyKeyGeneratorBySpec *generator = nullptr;
878 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
879 EXPECT_EQ(res, HCF_SUCCESS);
880 EXPECT_NE(generator, nullptr);
881
882 HcfPubKey *pubKey = nullptr;
883 res = generator->generatePubKey(generator, &pubKey);
884 EXPECT_EQ(res, HCF_SUCCESS);
885 EXPECT_NE(pubKey, nullptr);
886
887 HcfSign *sign = nullptr;
888 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
889 EXPECT_EQ(res, HCF_SUCCESS);
890
891 res = sign->init(sign, nullptr, (HcfPriKey *)pubKey);
892 EXPECT_NE(res, HCF_SUCCESS);
893
894 HcfObjDestroy(sign);
895 HcfObjDestroy(generator);
896 HcfObjDestroy(pubKey);
897 }
898
899 // incorrect case : init signer with public Key by pub key spec.
900 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest003, TestSize.Level0)
901 {
902 HcfRsaPubKeyParamsSpec rsaPubKeySpec = {};
903 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
904 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
905 GenerateRsa2048CorrectPubKeySpec(dataN, dataE, &rsaPubKeySpec);
906 HcfAsyKeyGeneratorBySpec *generator = nullptr;
907 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPubKeySpec), &generator);
908 EXPECT_EQ(res, HCF_SUCCESS);
909 EXPECT_NE(generator, nullptr);
910
911 HcfPubKey *pubKey = nullptr;
912 res = generator->generatePubKey(generator, &pubKey);
913 EXPECT_EQ(res, HCF_SUCCESS);
914 EXPECT_NE(pubKey, nullptr);
915
916 HcfSign *sign = nullptr;
917 res = HcfSignCreate("RSA1024|PSS|SHA256|MGF1_SHA256", &sign);
918 EXPECT_EQ(res, HCF_SUCCESS);
919
920 res = sign->init(sign, nullptr, (HcfPriKey *)pubKey);
921 EXPECT_NE(res, HCF_SUCCESS);
922
923 HcfObjDestroy(sign);
924 HcfObjDestroy(generator);
925 HcfObjDestroy(pubKey);
926 }
927
928 // incorrect case : set pss saltLen before init -> correct
929 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest004, TestSize.Level0)
930 {
931 HcfSign *sign = nullptr;
932 HcfResult res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
933 EXPECT_EQ(res, HCF_SUCCESS);
934
935 res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_NORMAL_SALTLEN);
936 EXPECT_EQ(res, HCF_SUCCESS);
937
938 HcfObjDestroy(sign);
939 }
940
941 // incorrect case : set invalid pss saltLen
942 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest005, TestSize.Level0)
943 {
944 HcfAsyKeyGenerator *generator = nullptr;
945 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
946 HcfKeyPair *keyPair = nullptr;
947 res = generator->generateKeyPair(generator, nullptr, &keyPair);
948 EXPECT_EQ(res, HCF_SUCCESS);
949
950 HcfPriKey *prikey = keyPair->priKey;
951 HcfSign *sign = nullptr;
952 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
953 EXPECT_EQ(res, HCF_SUCCESS);
954
955 res = sign->init(sign, nullptr, prikey);
956 EXPECT_EQ(res, HCF_SUCCESS);
957 res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_INVLAID_SALTLEN);
958 EXPECT_NE(res, HCF_SUCCESS);
959
960 HcfObjDestroy(sign);
961 HcfObjDestroy(keyPair);
962 HcfObjDestroy(generator);
963 }
964
965 // incorrect case : set invalid pss int item
966 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest006, TestSize.Level0)
967 {
968 HcfAsyKeyGenerator *generator = nullptr;
969 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
970 HcfKeyPair *keyPair = nullptr;
971 res = generator->generateKeyPair(generator, nullptr, &keyPair);
972 EXPECT_EQ(res, HCF_SUCCESS);
973
974 HcfPriKey *prikey = keyPair->priKey;
975 HcfSign *sign = nullptr;
976 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
977 EXPECT_EQ(res, HCF_SUCCESS);
978
979 res = sign->init(sign, nullptr, prikey);
980 EXPECT_EQ(res, HCF_SUCCESS);
981 res = sign->setSignSpecInt(sign, PSS_MD_NAME_STR, PSS_NORMAL_SALTLEN);
982 EXPECT_NE(res, HCF_SUCCESS);
983
984 HcfObjDestroy(sign);
985 HcfObjDestroy(keyPair);
986 HcfObjDestroy(generator);
987 }
988
989 // incorrect case : set pss saltLen when using pkcs1
990 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest007, TestSize.Level0)
991 {
992 HcfAsyKeyGenerator *generator = nullptr;
993 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
994 HcfKeyPair *keyPair = nullptr;
995 res = generator->generateKeyPair(generator, nullptr, &keyPair);
996 EXPECT_EQ(res, HCF_SUCCESS);
997
998 HcfPriKey *prikey = keyPair->priKey;
999 HcfSign *sign = nullptr;
1000 res = HcfSignCreate("RSA|PKCS1|SHA512", &sign);
1001 EXPECT_EQ(res, HCF_SUCCESS);
1002
1003 res = sign->init(sign, nullptr, prikey);
1004 EXPECT_EQ(res, HCF_SUCCESS);
1005 res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_NORMAL_SALTLEN);
1006 EXPECT_NE(res, HCF_SUCCESS);
1007
1008 HcfObjDestroy(sign);
1009 HcfObjDestroy(keyPair);
1010 HcfObjDestroy(generator);
1011 }
1012
1013 // incorrect case : get pss int before init and set;
1014 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest008, TestSize.Level0)
1015 {
1016 HcfSign *sign = nullptr;
1017 HcfResult res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1018
1019 int32_t retInt = 0;
1020 res = sign->getSignSpecInt(sign, PSS_SALT_LEN_INT, &retInt);
1021 EXPECT_NE(res, HCF_SUCCESS);
1022
1023 HcfObjDestroy(sign);
1024 }
1025
1026 // incorrect case : get pss str before init -> correct
1027 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest009, TestSize.Level0)
1028 {
1029 HcfSign *sign = nullptr;
1030 HcfResult res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1031 EXPECT_EQ(res, HCF_SUCCESS);
1032
1033 char *returnStr = nullptr;
1034 res = sign->getSignSpecString(sign, PSS_MD_NAME_STR, &returnStr);
1035 EXPECT_EQ(res, HCF_SUCCESS);
1036
1037 HcfFree(returnStr);
1038 HcfObjDestroy(sign);
1039 }
1040
1041 // incorrect case : get pss invalid int item
1042 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest090, TestSize.Level0)
1043 {
1044 HcfAsyKeyGenerator *generator = nullptr;
1045 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1046 HcfKeyPair *keyPair = nullptr;
1047 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1048 EXPECT_EQ(res, HCF_SUCCESS);
1049
1050 HcfPriKey *prikey = keyPair->priKey;
1051 HcfSign *sign = nullptr;
1052 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1053 EXPECT_EQ(res, HCF_SUCCESS);
1054
1055 res = sign->init(sign, nullptr, prikey);
1056 EXPECT_EQ(res, HCF_SUCCESS);
1057 int32_t retInt = 0;
1058 res = sign->getSignSpecInt(sign, PSS_MD_NAME_STR, &retInt);
1059 EXPECT_NE(res, HCF_SUCCESS);
1060
1061 HcfObjDestroy(sign);
1062 HcfObjDestroy(keyPair);
1063 HcfObjDestroy(generator);
1064 }
1065
1066 // incorrect case : get pss int item with nullptr sign
1067 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest091, TestSize.Level0)
1068 {
1069 HcfAsyKeyGenerator *generator = nullptr;
1070 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1071 HcfKeyPair *keyPair = nullptr;
1072 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1073 EXPECT_EQ(res, HCF_SUCCESS);
1074
1075 HcfPriKey *prikey = keyPair->priKey;
1076 HcfSign *sign = nullptr;
1077 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1078 EXPECT_EQ(res, HCF_SUCCESS);
1079
1080 res = sign->init(sign, nullptr, prikey);
1081 EXPECT_EQ(res, HCF_SUCCESS);
1082 int32_t retInt = 0;
1083 res = sign->getSignSpecInt(nullptr, PSS_SALT_LEN_INT, &retInt);
1084 EXPECT_NE(res, HCF_SUCCESS);
1085
1086 HcfObjDestroy(sign);
1087 HcfObjDestroy(keyPair);
1088 HcfObjDestroy(generator);
1089 }
1090
1091 // incorrect case : get pss int item with no sign object
1092 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest092, TestSize.Level0)
1093 {
1094 HcfAsyKeyGenerator *generator = nullptr;
1095 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1096 HcfKeyPair *keyPair = nullptr;
1097 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1098 EXPECT_EQ(res, HCF_SUCCESS);
1099
1100 HcfPriKey *prikey = keyPair->priKey;
1101 HcfSign *sign = nullptr;
1102 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1103 EXPECT_EQ(res, HCF_SUCCESS);
1104
1105 res = sign->init(sign, nullptr, prikey);
1106 EXPECT_EQ(res, HCF_SUCCESS);
1107 int32_t retInt = 0;
1108 res = sign->getSignSpecInt(reinterpret_cast<HcfSign *>(generator), PSS_SALT_LEN_INT, &retInt);
1109 EXPECT_NE(res, HCF_SUCCESS);
1110
1111 HcfObjDestroy(sign);
1112 HcfObjDestroy(keyPair);
1113 HcfObjDestroy(generator);
1114 }
1115
1116 // incorrect case : get pss int item with nullptr int
1117 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest093, TestSize.Level0)
1118 {
1119 HcfAsyKeyGenerator *generator = nullptr;
1120 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1121 HcfKeyPair *keyPair = nullptr;
1122 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1123 EXPECT_EQ(res, HCF_SUCCESS);
1124
1125 HcfPriKey *prikey = keyPair->priKey;
1126 HcfSign *sign = nullptr;
1127 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1128 EXPECT_EQ(res, HCF_SUCCESS);
1129
1130 res = sign->init(sign, nullptr, prikey);
1131 EXPECT_EQ(res, HCF_SUCCESS);
1132
1133 res = sign->getSignSpecInt(sign, PSS_SALT_LEN_INT, nullptr);
1134 EXPECT_NE(res, HCF_SUCCESS);
1135
1136 HcfObjDestroy(sign);
1137 HcfObjDestroy(keyPair);
1138 HcfObjDestroy(generator);
1139 }
1140
1141 // incorrect case : get pss int item with PKCS1 mode
1142 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest094, TestSize.Level0)
1143 {
1144 HcfAsyKeyGenerator *generator = nullptr;
1145 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1146 HcfKeyPair *keyPair = nullptr;
1147 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1148 EXPECT_EQ(res, HCF_SUCCESS);
1149
1150 HcfPriKey *prikey = keyPair->priKey;
1151 HcfSign *sign = nullptr;
1152 res = HcfSignCreate("RSA|PKCS1|SHA1", &sign);
1153 EXPECT_EQ(res, HCF_SUCCESS);
1154
1155 res = sign->init(sign, nullptr, prikey);
1156 EXPECT_EQ(res, HCF_SUCCESS);
1157
1158 int32_t retInt = 0;
1159 res = sign->getSignSpecInt(sign, PSS_SALT_LEN_INT, &retInt);
1160 EXPECT_NE(res, HCF_SUCCESS);
1161
1162 HcfObjDestroy(sign);
1163 HcfObjDestroy(keyPair);
1164 HcfObjDestroy(generator);
1165 }
1166
1167 // incorrect case : get pss invalid string item
1168 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest095, TestSize.Level0)
1169 {
1170 HcfAsyKeyGenerator *generator = nullptr;
1171 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1172 HcfKeyPair *keyPair = nullptr;
1173 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1174 EXPECT_EQ(res, HCF_SUCCESS);
1175
1176 HcfPriKey *prikey = keyPair->priKey;
1177 HcfSign *sign = nullptr;
1178 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1179 EXPECT_EQ(res, HCF_SUCCESS);
1180
1181 res = sign->init(sign, nullptr, prikey);
1182 EXPECT_EQ(res, HCF_SUCCESS);
1183 char *retStr = nullptr;
1184 res = sign->getSignSpecString(sign, PSS_SALT_LEN_INT, &retStr);
1185 EXPECT_NE(res, HCF_SUCCESS);
1186
1187 HcfObjDestroy(sign);
1188 HcfObjDestroy(keyPair);
1189 HcfObjDestroy(generator);
1190 }
1191
1192 // incorrect case : get pss string item with nullptr sign
1193 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest096, TestSize.Level0)
1194 {
1195 HcfAsyKeyGenerator *generator = nullptr;
1196 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1197 HcfKeyPair *keyPair = nullptr;
1198 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1199 EXPECT_EQ(res, HCF_SUCCESS);
1200
1201 HcfPriKey *prikey = keyPair->priKey;
1202 HcfSign *sign = nullptr;
1203 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1204 EXPECT_EQ(res, HCF_SUCCESS);
1205
1206 res = sign->init(sign, nullptr, prikey);
1207 EXPECT_EQ(res, HCF_SUCCESS);
1208 char *retStr = nullptr;
1209 res = sign->getSignSpecString(nullptr, PSS_MD_NAME_STR, &retStr);
1210 EXPECT_NE(res, HCF_SUCCESS);
1211
1212 HcfObjDestroy(sign);
1213 HcfObjDestroy(keyPair);
1214 HcfObjDestroy(generator);
1215 }
1216
1217 // incorrect case : get pss string item with no sign object
1218 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest097, TestSize.Level0)
1219 {
1220 HcfAsyKeyGenerator *generator = nullptr;
1221 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1222 HcfKeyPair *keyPair = nullptr;
1223 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1224 EXPECT_EQ(res, HCF_SUCCESS);
1225
1226 HcfPriKey *prikey = keyPair->priKey;
1227 HcfSign *sign = nullptr;
1228 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1229 EXPECT_EQ(res, HCF_SUCCESS);
1230
1231 res = sign->init(sign, nullptr, prikey);
1232 EXPECT_EQ(res, HCF_SUCCESS);
1233 char *retStr = nullptr;
1234 res = sign->getSignSpecString(reinterpret_cast<HcfSign *>(generator), PSS_MD_NAME_STR, &retStr);
1235 EXPECT_NE(res, HCF_SUCCESS);
1236
1237 HcfObjDestroy(sign);
1238 HcfObjDestroy(keyPair);
1239 HcfObjDestroy(generator);
1240 }
1241
1242 // incorrect case : get pss string item with nullptr int
1243 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest098, TestSize.Level0)
1244 {
1245 HcfAsyKeyGenerator *generator = nullptr;
1246 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1247 HcfKeyPair *keyPair = nullptr;
1248 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1249 EXPECT_EQ(res, HCF_SUCCESS);
1250
1251 HcfPriKey *prikey = keyPair->priKey;
1252 HcfSign *sign = nullptr;
1253 res = HcfSignCreate("RSA2048|PSS|SHA256|MGF1_SHA256", &sign);
1254 EXPECT_EQ(res, HCF_SUCCESS);
1255
1256 res = sign->init(sign, nullptr, prikey);
1257 EXPECT_EQ(res, HCF_SUCCESS);
1258
1259 res = sign->getSignSpecString(sign, PSS_MD_NAME_STR, nullptr);
1260 EXPECT_NE(res, HCF_SUCCESS);
1261
1262 HcfObjDestroy(sign);
1263 HcfObjDestroy(keyPair);
1264 HcfObjDestroy(generator);
1265 }
1266
1267 // incorrect case : get pss string item with PKCS1 mode
1268 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest099, TestSize.Level0)
1269 {
1270 HcfAsyKeyGenerator *generator = nullptr;
1271 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
1272 HcfKeyPair *keyPair = nullptr;
1273 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1274 EXPECT_EQ(res, HCF_SUCCESS);
1275
1276 HcfPriKey *prikey = keyPair->priKey;
1277 HcfSign *sign = nullptr;
1278 res = HcfSignCreate("RSA|PKCS1|SHA1", &sign);
1279 EXPECT_EQ(res, HCF_SUCCESS);
1280
1281 res = sign->init(sign, nullptr, prikey);
1282 EXPECT_EQ(res, HCF_SUCCESS);
1283
1284 char *retStr = nullptr;
1285 res = sign->getSignSpecString(sign, PSS_MD_NAME_STR, &retStr);
1286 EXPECT_NE(res, HCF_SUCCESS);
1287
1288 HcfObjDestroy(sign);
1289 HcfObjDestroy(keyPair);
1290 HcfObjDestroy(generator);
1291 }
1292
1293 // correct case: sign and update with spec
1294 // correct case: sign and update with key pair's private key by key pair spec
1295 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest010, TestSize.Level0)
1296 {
1297 uint8_t plan[] = "this is rsa verify test.";
1298 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1299 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1300 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1301 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1302 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1303
1304 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1305 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1306 EXPECT_EQ(res, HCF_SUCCESS);
1307 EXPECT_NE(generator, nullptr);
1308
1309 HcfKeyPair *keyPair = nullptr;
1310 res = generator->generateKeyPair(generator, &keyPair);
1311 EXPECT_EQ(res, HCF_SUCCESS);
1312 EXPECT_NE(keyPair, nullptr);
1313
1314 HcfPriKey *prikey = keyPair->priKey;
1315 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1316 HcfBlob verifyData = {.data = nullptr, .len = 0};
1317 HcfSign *sign = nullptr;
1318 res = HcfSignCreate("RSA|PKCS1|SHA1", &sign);
1319 EXPECT_EQ(res, HCF_SUCCESS);
1320 res = sign->init(sign, nullptr, prikey);
1321 EXPECT_EQ(res, HCF_SUCCESS);
1322 res = sign->sign(sign, &input, &verifyData);
1323
1324 HcfObjDestroy(sign);
1325 HcfFree(verifyData.data);
1326 HcfObjDestroy(keyPair);
1327 HcfObjDestroy(generator);
1328 }
1329
1330 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest011, TestSize.Level0)
1331 {
1332 uint8_t plan[] = "this is rsa verify test.";
1333 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1334 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1335 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1336 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1337 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1338
1339 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1340 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1341 EXPECT_EQ(res, HCF_SUCCESS);
1342 EXPECT_NE(generator, nullptr);
1343
1344 HcfKeyPair *keyPair = nullptr;
1345 res = generator->generateKeyPair(generator, &keyPair);
1346 EXPECT_EQ(res, HCF_SUCCESS);
1347 EXPECT_NE(keyPair, nullptr);
1348
1349 HcfPriKey *prikey = keyPair->priKey;
1350 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1351 HcfBlob verifyData = {.data = nullptr, .len = 0};
1352 HcfSign *sign = nullptr;
1353 res = HcfSignCreate("RSA|PKCS1|SHA256", &sign);
1354 EXPECT_EQ(res, HCF_SUCCESS);
1355 res = sign->init(sign, nullptr, prikey);
1356 EXPECT_EQ(res, HCF_SUCCESS);
1357 res = sign->sign(sign, &input, &verifyData);
1358
1359 HcfObjDestroy(sign);
1360 HcfFree(verifyData.data);
1361 HcfObjDestroy(keyPair);
1362 HcfObjDestroy(generator);
1363 }
1364
1365 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest012, TestSize.Level0)
1366 {
1367 uint8_t plan[] = "this is rsa verify test.";
1368 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1369 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1370 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1371 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1372 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1373
1374 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1375 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1376 EXPECT_EQ(res, HCF_SUCCESS);
1377 EXPECT_NE(generator, nullptr);
1378
1379 HcfKeyPair *keyPair = nullptr;
1380 res = generator->generateKeyPair(generator, &keyPair);
1381 EXPECT_EQ(res, HCF_SUCCESS);
1382 EXPECT_NE(keyPair, nullptr);
1383
1384 HcfPriKey *prikey = keyPair->priKey;
1385 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1386 HcfBlob verifyData = {.data = nullptr, .len = 0};
1387 HcfSign *sign = nullptr;
1388 res = HcfSignCreate("RSA|PKCS1|SHA512", &sign);
1389 EXPECT_EQ(res, HCF_SUCCESS);
1390 res = sign->init(sign, nullptr, prikey);
1391 EXPECT_EQ(res, HCF_SUCCESS);
1392 res = sign->sign(sign, &input, &verifyData);
1393
1394 HcfObjDestroy(sign);
1395 HcfFree(verifyData.data);
1396 HcfObjDestroy(keyPair);
1397 HcfObjDestroy(generator);
1398 }
1399
1400 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest013, TestSize.Level0)
1401 {
1402 uint8_t plan[] = "this is rsa verify test.";
1403 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1404 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1405 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1406 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1407 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1408
1409 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1410 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1411 EXPECT_EQ(res, HCF_SUCCESS);
1412 EXPECT_NE(generator, nullptr);
1413
1414 HcfKeyPair *keyPair = nullptr;
1415 res = generator->generateKeyPair(generator, &keyPair);
1416 EXPECT_EQ(res, HCF_SUCCESS);
1417 EXPECT_NE(keyPair, nullptr);
1418
1419 HcfPriKey *prikey = keyPair->priKey;
1420 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1421 HcfBlob verifyData = {.data = nullptr, .len = 0};
1422 HcfSign *sign = nullptr;
1423 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1424 EXPECT_EQ(res, HCF_SUCCESS);
1425 res = sign->init(sign, nullptr, prikey);
1426 EXPECT_EQ(res, HCF_SUCCESS);
1427 res = sign->sign(sign, &input, &verifyData);
1428
1429 HcfObjDestroy(sign);
1430 HcfFree(verifyData.data);
1431 HcfObjDestroy(keyPair);
1432 HcfObjDestroy(generator);
1433 }
1434
1435 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest014, TestSize.Level0)
1436 {
1437 uint8_t plan[] = "this is rsa verify test.";
1438 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1439 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1440 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1441 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1442 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1443
1444 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1445 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1446 EXPECT_EQ(res, HCF_SUCCESS);
1447 EXPECT_NE(generator, nullptr);
1448
1449 HcfKeyPair *keyPair = nullptr;
1450 res = generator->generateKeyPair(generator, &keyPair);
1451 EXPECT_EQ(res, HCF_SUCCESS);
1452 EXPECT_NE(keyPair, nullptr);
1453
1454 HcfPriKey *prikey = keyPair->priKey;
1455 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1456 HcfBlob verifyData = {.data = nullptr, .len = 0};
1457 HcfSign *sign = nullptr;
1458 res = HcfSignCreate("RSA|PSS|SHA512|MGF1_SHA256", &sign);
1459 EXPECT_EQ(res, HCF_SUCCESS);
1460 res = sign->init(sign, nullptr, prikey);
1461 EXPECT_EQ(res, HCF_SUCCESS);
1462 res = sign->sign(sign, &input, &verifyData);
1463
1464 HcfObjDestroy(sign);
1465 HcfFree(verifyData.data);
1466 HcfObjDestroy(keyPair);
1467 HcfObjDestroy(generator);
1468 }
1469
1470 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest015, TestSize.Level0)
1471 {
1472 uint8_t plan[] = "this is rsa verify test.";
1473 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1474 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1475 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1476 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1477 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1478
1479 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1480 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1481 EXPECT_EQ(res, HCF_SUCCESS);
1482 EXPECT_NE(generator, nullptr);
1483
1484 HcfKeyPair *keyPair = nullptr;
1485 res = generator->generateKeyPair(generator, &keyPair);
1486 EXPECT_EQ(res, HCF_SUCCESS);
1487 EXPECT_NE(keyPair, nullptr);
1488
1489 HcfPriKey *prikey = keyPair->priKey;
1490 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1491 HcfBlob verifyData = {.data = nullptr, .len = 0};
1492 HcfSign *sign = nullptr;
1493 res = HcfSignCreate("RSA|PSS|SHA1|MGF1_SHA256", &sign);
1494 EXPECT_EQ(res, HCF_SUCCESS);
1495 res = sign->init(sign, nullptr, prikey);
1496 EXPECT_EQ(res, HCF_SUCCESS);
1497 res = sign->sign(sign, &input, &verifyData);
1498
1499 HcfObjDestroy(sign);
1500 HcfFree(verifyData.data);
1501 HcfObjDestroy(keyPair);
1502 HcfObjDestroy(generator);
1503 }
1504
1505 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest016, TestSize.Level0)
1506 {
1507 uint8_t plan[] = "this is rsa verify test.";
1508 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1509 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1510 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1511 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1512 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1513
1514 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1515 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1516 EXPECT_EQ(res, HCF_SUCCESS);
1517 EXPECT_NE(generator, nullptr);
1518
1519 HcfKeyPair *keyPair = nullptr;
1520 res = generator->generateKeyPair(generator, &keyPair);
1521 EXPECT_EQ(res, HCF_SUCCESS);
1522 EXPECT_NE(keyPair, nullptr);
1523
1524 HcfPriKey *prikey = keyPair->priKey;
1525 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1526 HcfBlob verifyData = {.data = nullptr, .len = 0};
1527 HcfSign *sign = nullptr;
1528 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_MD5", &sign);
1529 EXPECT_EQ(res, HCF_SUCCESS);
1530 res = sign->init(sign, nullptr, prikey);
1531 EXPECT_EQ(res, HCF_SUCCESS);
1532 res = sign->sign(sign, &input, &verifyData);
1533
1534 HcfObjDestroy(sign);
1535 HcfFree(verifyData.data);
1536 HcfObjDestroy(keyPair);
1537 HcfObjDestroy(generator);
1538 }
1539
1540 // correct case: sign and update with private key by key pair spec and sign RSA
1541 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest020, TestSize.Level0)
1542 {
1543 uint8_t plan[] = "this is rsa verify test.";
1544 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1545 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1546 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1547 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1548 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1549
1550 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1551 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1552 EXPECT_EQ(res, HCF_SUCCESS);
1553 EXPECT_NE(generator, nullptr);
1554
1555 HcfPriKey *prikey = nullptr;
1556 res = generator->generatePriKey(generator, &prikey);
1557 EXPECT_EQ(res, HCF_SUCCESS);
1558 EXPECT_NE(prikey, nullptr);
1559
1560 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1561 HcfBlob verifyData = {.data = nullptr, .len = 0};
1562 HcfSign *sign = nullptr;
1563 res = HcfSignCreate("RSA|PKCS1|SHA1", &sign);
1564 EXPECT_EQ(res, HCF_SUCCESS);
1565 res = sign->init(sign, nullptr, prikey);
1566 EXPECT_EQ(res, HCF_SUCCESS);
1567 res = sign->sign(sign, &input, &verifyData);
1568
1569 HcfObjDestroy(sign);
1570 HcfFree(verifyData.data);
1571 HcfObjDestroy(prikey);
1572 HcfObjDestroy(generator);
1573 }
1574
1575 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest021, TestSize.Level0)
1576 {
1577 uint8_t plan[] = "this is rsa verify test.";
1578 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1579 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1580 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1581 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1582 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1583
1584 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1585 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1586 EXPECT_EQ(res, HCF_SUCCESS);
1587 EXPECT_NE(generator, nullptr);
1588
1589 HcfPriKey *prikey = nullptr;
1590 res = generator->generatePriKey(generator, &prikey);
1591 EXPECT_EQ(res, HCF_SUCCESS);
1592 EXPECT_NE(prikey, nullptr);
1593
1594 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1595 HcfBlob verifyData = {.data = nullptr, .len = 0};
1596 HcfSign *sign = nullptr;
1597 res = HcfSignCreate("RSA|PKCS1|SHA256", &sign);
1598 EXPECT_EQ(res, HCF_SUCCESS);
1599 res = sign->init(sign, nullptr, prikey);
1600 EXPECT_EQ(res, HCF_SUCCESS);
1601 res = sign->sign(sign, &input, &verifyData);
1602
1603 HcfObjDestroy(sign);
1604 HcfFree(verifyData.data);
1605 HcfObjDestroy(prikey);
1606 HcfObjDestroy(generator);
1607 }
1608
1609 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest022, TestSize.Level0)
1610 {
1611 uint8_t plan[] = "this is rsa verify test.";
1612 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1613 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1614 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1615 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1616 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1617
1618 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1619 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1620 EXPECT_EQ(res, HCF_SUCCESS);
1621 EXPECT_NE(generator, nullptr);
1622
1623 HcfPriKey *prikey = nullptr;
1624 res = generator->generatePriKey(generator, &prikey);
1625 EXPECT_EQ(res, HCF_SUCCESS);
1626 EXPECT_NE(prikey, nullptr);
1627
1628 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1629 HcfBlob verifyData = {.data = nullptr, .len = 0};
1630 HcfSign *sign = nullptr;
1631 res = HcfSignCreate("RSA|PKCS1|SHA512", &sign);
1632 EXPECT_EQ(res, HCF_SUCCESS);
1633 res = sign->init(sign, nullptr, prikey);
1634 EXPECT_EQ(res, HCF_SUCCESS);
1635 res = sign->sign(sign, &input, &verifyData);
1636
1637 HcfObjDestroy(sign);
1638 HcfFree(verifyData.data);
1639 HcfObjDestroy(prikey);
1640 HcfObjDestroy(generator);
1641 }
1642
1643 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest023, TestSize.Level0)
1644 {
1645 uint8_t plan[] = "this is rsa verify test.";
1646 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1647 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1648 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1649 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1650 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1651
1652 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1653 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1654 EXPECT_EQ(res, HCF_SUCCESS);
1655 EXPECT_NE(generator, nullptr);
1656
1657 HcfPriKey *prikey = nullptr;
1658 res = generator->generatePriKey(generator, &prikey);
1659 EXPECT_EQ(res, HCF_SUCCESS);
1660 EXPECT_NE(prikey, nullptr);
1661
1662 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1663 HcfBlob verifyData = {.data = nullptr, .len = 0};
1664 HcfSign *sign = nullptr;
1665 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1666 EXPECT_EQ(res, HCF_SUCCESS);
1667 res = sign->init(sign, nullptr, prikey);
1668 EXPECT_EQ(res, HCF_SUCCESS);
1669 res = sign->sign(sign, &input, &verifyData);
1670
1671 HcfObjDestroy(sign);
1672 HcfFree(verifyData.data);
1673 HcfObjDestroy(prikey);
1674 HcfObjDestroy(generator);
1675 }
1676
1677 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest024, TestSize.Level0)
1678 {
1679 uint8_t plan[] = "this is rsa verify test.";
1680 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1681 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1682 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1683 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1684 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1685
1686 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1687 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1688 EXPECT_EQ(res, HCF_SUCCESS);
1689 EXPECT_NE(generator, nullptr);
1690
1691 HcfPriKey *prikey = nullptr;
1692 res = generator->generatePriKey(generator, &prikey);
1693 EXPECT_EQ(res, HCF_SUCCESS);
1694 EXPECT_NE(prikey, nullptr);
1695
1696 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1697 HcfBlob verifyData = {.data = nullptr, .len = 0};
1698 HcfSign *sign = nullptr;
1699 res = HcfSignCreate("RSA|PSS|SHA512|MGF1_SHA256", &sign);
1700 EXPECT_EQ(res, HCF_SUCCESS);
1701 res = sign->init(sign, nullptr, prikey);
1702 EXPECT_EQ(res, HCF_SUCCESS);
1703 res = sign->sign(sign, &input, &verifyData);
1704
1705 HcfObjDestroy(sign);
1706 HcfFree(verifyData.data);
1707 HcfObjDestroy(prikey);
1708 HcfObjDestroy(generator);
1709 }
1710
1711 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest025, TestSize.Level0)
1712 {
1713 uint8_t plan[] = "this is rsa verify test.";
1714 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1715 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1716 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1717 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1718 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1719
1720 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1721 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1722 EXPECT_EQ(res, HCF_SUCCESS);
1723 EXPECT_NE(generator, nullptr);
1724
1725 HcfPriKey *prikey = nullptr;
1726 res = generator->generatePriKey(generator, &prikey);
1727 EXPECT_EQ(res, HCF_SUCCESS);
1728 EXPECT_NE(prikey, nullptr);
1729
1730 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1731 HcfBlob verifyData = {.data = nullptr, .len = 0};
1732 HcfSign *sign = nullptr;
1733 res = HcfSignCreate("RSA|PSS|SHA1|MGF1_SHA256", &sign);
1734 EXPECT_EQ(res, HCF_SUCCESS);
1735 res = sign->init(sign, nullptr, prikey);
1736 EXPECT_EQ(res, HCF_SUCCESS);
1737 res = sign->sign(sign, &input, &verifyData);
1738
1739 HcfObjDestroy(sign);
1740 HcfFree(verifyData.data);
1741 HcfObjDestroy(prikey);
1742 HcfObjDestroy(generator);
1743 }
1744
1745 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest026, TestSize.Level0)
1746 {
1747 uint8_t plan[] = "this is rsa verify test.";
1748 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1749 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1750 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1751 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1752 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1753
1754 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1755 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1756 EXPECT_EQ(res, HCF_SUCCESS);
1757 EXPECT_NE(generator, nullptr);
1758
1759 HcfPriKey *prikey = nullptr;
1760 res = generator->generatePriKey(generator, &prikey);
1761 EXPECT_EQ(res, HCF_SUCCESS);
1762 EXPECT_NE(prikey, nullptr);
1763
1764 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1765 HcfBlob verifyData = {.data = nullptr, .len = 0};
1766 HcfSign *sign = nullptr;
1767 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_MD5", &sign);
1768 EXPECT_EQ(res, HCF_SUCCESS);
1769 res = sign->init(sign, nullptr, prikey);
1770 EXPECT_EQ(res, HCF_SUCCESS);
1771 res = sign->sign(sign, &input, &verifyData);
1772
1773 HcfObjDestroy(sign);
1774 HcfFree(verifyData.data);
1775 HcfObjDestroy(prikey);
1776 HcfObjDestroy(generator);
1777 }
1778
1779 // correct case: set pss saltLen
1780 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest027, TestSize.Level0)
1781 {
1782 uint8_t plan[] = "this is rsa verify test.";
1783 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1784 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1785 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1786 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1787 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1788
1789 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1790 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1791 EXPECT_EQ(res, HCF_SUCCESS);
1792 EXPECT_NE(generator, nullptr);
1793
1794 HcfKeyPair *keyPair = nullptr;
1795 res = generator->generateKeyPair(generator, &keyPair);
1796 EXPECT_EQ(res, HCF_SUCCESS);
1797 EXPECT_NE(keyPair, nullptr);
1798
1799 HcfPriKey *prikey = keyPair->priKey;
1800 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1801 HcfBlob verifyData = {.data = nullptr, .len = 0};
1802 HcfSign *sign = nullptr;
1803 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1804 EXPECT_EQ(res, HCF_SUCCESS);
1805 res = sign->init(sign, nullptr, prikey);
1806 EXPECT_EQ(res, HCF_SUCCESS);
1807
1808 res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_NORMAL_SALTLEN);
1809 EXPECT_EQ(res, HCF_SUCCESS);
1810 res = sign->sign(sign, &input, &verifyData);
1811 EXPECT_EQ(res, HCF_SUCCESS);
1812
1813 HcfObjDestroy(sign);
1814 HcfFree(verifyData.data);
1815 HcfObjDestroy(keyPair);
1816 HcfObjDestroy(generator);
1817 }
1818
1819 // correct case: get pss saltLen
1820 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest028, TestSize.Level0)
1821 {
1822 uint8_t plan[] = "this is rsa verify test.";
1823 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1824 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1825 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1826 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1827 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1828
1829 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1830 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1831 EXPECT_EQ(res, HCF_SUCCESS);
1832 EXPECT_NE(generator, nullptr);
1833
1834 HcfKeyPair *keyPair = nullptr;
1835 res = generator->generateKeyPair(generator, &keyPair);
1836 EXPECT_EQ(res, HCF_SUCCESS);
1837 EXPECT_NE(keyPair, nullptr);
1838
1839 HcfPriKey *prikey = keyPair->priKey;
1840 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1841 HcfBlob verifyData = {.data = nullptr, .len = 0};
1842 HcfSign *sign = nullptr;
1843 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1844 EXPECT_EQ(res, HCF_SUCCESS);
1845 res = sign->init(sign, nullptr, prikey);
1846 EXPECT_EQ(res, HCF_SUCCESS);
1847
1848 res = sign->setSignSpecInt(sign, PSS_SALT_LEN_INT, PSS_NORMAL_SALTLEN);
1849 EXPECT_EQ(res, HCF_SUCCESS);
1850
1851 int32_t retInt = 0;
1852 res = sign->getSignSpecInt(sign, PSS_SALT_LEN_INT, &retInt);
1853 EXPECT_EQ(res, HCF_SUCCESS);
1854 EXPECT_EQ(retInt, PSS_NORMAL_SALTLEN);
1855
1856 res = sign->sign(sign, &input, &verifyData);
1857 EXPECT_EQ(res, HCF_SUCCESS);
1858
1859 HcfObjDestroy(sign);
1860 HcfFree(verifyData.data);
1861 HcfObjDestroy(keyPair);
1862 HcfObjDestroy(generator);
1863 }
1864
1865 // correct case: get pss trail field len
1866 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest029, TestSize.Level0)
1867 {
1868 uint8_t plan[] = "this is rsa verify test.";
1869 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1870 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1871 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1872 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1873 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1874
1875 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1876 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1877 EXPECT_EQ(res, HCF_SUCCESS);
1878 EXPECT_NE(generator, nullptr);
1879
1880 HcfKeyPair *keyPair = nullptr;
1881 res = generator->generateKeyPair(generator, &keyPair);
1882 EXPECT_EQ(res, HCF_SUCCESS);
1883 EXPECT_NE(keyPair, nullptr);
1884
1885 HcfPriKey *prikey = keyPair->priKey;
1886 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1887 HcfBlob verifyData = {.data = nullptr, .len = 0};
1888 HcfSign *sign = nullptr;
1889 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1890 EXPECT_EQ(res, HCF_SUCCESS);
1891 res = sign->init(sign, nullptr, prikey);
1892 EXPECT_EQ(res, HCF_SUCCESS);
1893
1894 int32_t retInt = 0;
1895 res = sign->getSignSpecInt(sign, PSS_TRAILER_FIELD_INT, &retInt);
1896 EXPECT_EQ(res, HCF_SUCCESS);
1897 EXPECT_EQ(retInt, PSS_TRAILER_FIELD_LEN);
1898
1899 res = sign->sign(sign, &input, &verifyData);
1900 EXPECT_EQ(res, HCF_SUCCESS);
1901
1902 HcfObjDestroy(sign);
1903 HcfFree(verifyData.data);
1904 HcfObjDestroy(keyPair);
1905 HcfObjDestroy(generator);
1906 }
1907
1908 // correct case: get pss md string
1909 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest030, TestSize.Level0)
1910 {
1911 uint8_t plan[] = "this is rsa verify test.";
1912 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1913 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1914 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1915 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1916 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1917
1918 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1919 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1920 EXPECT_EQ(res, HCF_SUCCESS);
1921 EXPECT_NE(generator, nullptr);
1922
1923 HcfKeyPair *keyPair = nullptr;
1924 res = generator->generateKeyPair(generator, &keyPair);
1925 EXPECT_EQ(res, HCF_SUCCESS);
1926 EXPECT_NE(keyPair, nullptr);
1927
1928 HcfPriKey *prikey = keyPair->priKey;
1929 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1930 HcfBlob verifyData = {.data = nullptr, .len = 0};
1931 HcfSign *sign = nullptr;
1932 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1933 EXPECT_EQ(res, HCF_SUCCESS);
1934 res = sign->init(sign, nullptr, prikey);
1935 EXPECT_EQ(res, HCF_SUCCESS);
1936
1937 char *retStr = nullptr;
1938 res = sign->getSignSpecString(sign, PSS_MD_NAME_STR, &retStr);
1939 EXPECT_EQ(res, HCF_SUCCESS);
1940 EXPECT_STREQ(g_sha256MdName, retStr);
1941
1942 res = sign->sign(sign, &input, &verifyData);
1943 EXPECT_EQ(res, HCF_SUCCESS);
1944
1945 HcfObjDestroy(sign);
1946 HcfFree(retStr);
1947 HcfFree(verifyData.data);
1948 HcfObjDestroy(keyPair);
1949 HcfObjDestroy(generator);
1950 }
1951
1952 // correct case: get pss mgf1 string
1953 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest031, TestSize.Level0)
1954 {
1955 uint8_t plan[] = "this is rsa verify test.";
1956 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
1957 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
1958 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
1959 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
1960 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
1961
1962 HcfAsyKeyGeneratorBySpec *generator = nullptr;
1963 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
1964 EXPECT_EQ(res, HCF_SUCCESS);
1965 EXPECT_NE(generator, nullptr);
1966
1967 HcfKeyPair *keyPair = nullptr;
1968 res = generator->generateKeyPair(generator, &keyPair);
1969 EXPECT_EQ(res, HCF_SUCCESS);
1970 EXPECT_NE(keyPair, nullptr);
1971
1972 HcfPriKey *prikey = keyPair->priKey;
1973 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
1974 HcfBlob verifyData = {.data = nullptr, .len = 0};
1975 HcfSign *sign = nullptr;
1976 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
1977 EXPECT_EQ(res, HCF_SUCCESS);
1978 res = sign->init(sign, nullptr, prikey);
1979 EXPECT_EQ(res, HCF_SUCCESS);
1980
1981 char *retStr = nullptr;
1982 res = sign->getSignSpecString(sign, PSS_MGF_NAME_STR, &retStr);
1983 EXPECT_EQ(res, HCF_SUCCESS);
1984 EXPECT_STREQ(g_mgf1Name, retStr);
1985
1986 res = sign->sign(sign, &input, &verifyData);
1987 EXPECT_EQ(res, HCF_SUCCESS);
1988
1989 HcfObjDestroy(sign);
1990 HcfFree(retStr);
1991 HcfFree(verifyData.data);
1992 HcfObjDestroy(keyPair);
1993 HcfObjDestroy(generator);
1994 }
1995
1996 // correct case: get pss mgf1 md string
1997 HWTEST_F(CryptoRsaSignTest, CryptoRsaSignTest032, TestSize.Level0)
1998 {
1999 uint8_t plan[] = "this is rsa verify test.";
2000 HcfRsaKeyPairParamsSpec rsaPairSpec = {};
2001 unsigned char dataN[RSA_2048_N_BYTE_SIZE] = {0};
2002 unsigned char dataE[RSA_2048_E_BYTE_SIZE] = {0};
2003 unsigned char dataD[RSA_2048_D_BYTE_SIZE] = {0};
2004 GenerateRsa2048CorrectKeyPairSpec(dataN, dataE, dataD, &rsaPairSpec);
2005
2006 HcfAsyKeyGeneratorBySpec *generator = nullptr;
2007 HcfResult res = HcfAsyKeyGeneratorBySpecCreate(reinterpret_cast<HcfAsyKeyParamsSpec *>(&rsaPairSpec), &generator);
2008 EXPECT_EQ(res, HCF_SUCCESS);
2009 EXPECT_NE(generator, nullptr);
2010
2011 HcfKeyPair *keyPair = nullptr;
2012 res = generator->generateKeyPair(generator, &keyPair);
2013 EXPECT_EQ(res, HCF_SUCCESS);
2014 EXPECT_NE(keyPair, nullptr);
2015
2016 HcfPriKey *prikey = keyPair->priKey;
2017 HcfBlob input = {.data = plan, .len = strlen((char *)plan)};
2018 HcfBlob verifyData = {.data = nullptr, .len = 0};
2019 HcfSign *sign = nullptr;
2020 res = HcfSignCreate("RSA|PSS|SHA256|MGF1_SHA256", &sign);
2021 EXPECT_EQ(res, HCF_SUCCESS);
2022 res = sign->init(sign, nullptr, prikey);
2023 EXPECT_EQ(res, HCF_SUCCESS);
2024
2025 char *retStr = nullptr;
2026 res = sign->getSignSpecString(sign, PSS_MGF1_MD_STR, &retStr);
2027 EXPECT_EQ(res, HCF_SUCCESS);
2028 EXPECT_STREQ(g_sha256MdName, retStr);
2029
2030 res = sign->sign(sign, &input, &verifyData);
2031 EXPECT_EQ(res, HCF_SUCCESS);
2032
2033 HcfObjDestroy(sign);
2034 HcfFree(retStr);
2035 HcfFree(verifyData.data);
2036 HcfObjDestroy(keyPair);
2037 HcfObjDestroy(generator);
2038 }
2039 }
2040