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 "securec.h"
18
19 #include "asy_key_generator.h"
20 #include "asy_key_generator_spi.h"
21 #include "blob.h"
22 #include "memory.h"
23 #include "params_parser.h"
24 #include "rsa_asy_key_generator_openssl.h"
25
26 using namespace std;
27 using namespace testing::ext;
28
29 namespace {
30 class CryptoRsaAsyKeyGeneratorTest : public testing::Test {
31 public:
32 static void SetUpTestCase();
33 static void TearDownTestCase();
34 void SetUp();
35 void TearDown();
36 };
37
SetUpTestCase()38 void CryptoRsaAsyKeyGeneratorTest::SetUpTestCase() {}
TearDownTestCase()39 void CryptoRsaAsyKeyGeneratorTest::TearDownTestCase() {}
SetUp()40 void CryptoRsaAsyKeyGeneratorTest::SetUp() {}
TearDown()41 void CryptoRsaAsyKeyGeneratorTest::TearDown() {}
42
43 constexpr int32_t OPENSSL_RSA_KEY_SIZE_2048 = 2048;
44 constexpr int32_t OPENSSL_RSA_KEY_SIZE_4096 = 4096;
45 constexpr int32_t OPENSSL_RSA_KEY_SIZE_ABNORMAL = 1;
46 constexpr int32_t OPENSSL_RSA_PRIMES_ABNORMAL = 1;
47 constexpr size_t RSA_CORRECT_PUBKEY_LEN = 162;
48 constexpr size_t RSA_ERROR_PUBKEY_LEN = 1;
49 uint8_t g_rsaCorrectPkData[] = {
50 48, 129, 159, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 3, 129, 141, 0, 48, 129,
51 137, 2, 129, 129, 0, 174, 203, 113, 83, 113, 3, 143, 213, 194, 79, 91, 9, 51, 142, 87, 45, 97,
52 65, 136, 24, 166, 35, 5, 179, 42, 47, 212, 79, 111, 74, 134, 120, 73, 67, 21, 19, 235, 80, 46,
53 152, 209, 133, 232, 87, 192, 140, 18, 206, 27, 106, 106, 169, 106, 46, 135, 111, 118, 32, 129,
54 27, 89, 255, 183, 116, 247, 38, 12, 7, 238, 77, 151, 167, 6, 102, 153, 126, 66, 28, 253, 253, 216,
55 64, 20, 138, 117, 72, 15, 216, 178, 37, 208, 179, 63, 204, 39, 94, 244, 170, 48, 190, 21, 11,
56 73, 169, 156, 104, 193, 3, 17, 100, 28, 60, 50, 92, 235, 218, 57, 73, 119, 19, 101, 164, 192,
57 161, 197, 106, 105, 73, 2, 3, 1, 0, 1
58 };
59
60 HcfBlob g_rsaCorrectPubKeyBlob = {
61 .data = g_rsaCorrectPkData,
62 .len = RSA_CORRECT_PUBKEY_LEN
63 };
64 HcfBlob g_rsaErrorPubKeyBlob = {
65 .data = g_rsaCorrectPkData,
66 .len = RSA_ERROR_PUBKEY_LEN
67 };
68
GetMockClass(void)69 static const char *GetMockClass(void)
70 {
71 return "HcfSymKeyGenerator";
72 }
73
74 HcfObjectBase g_obj = {
75 .getClass = GetMockClass,
76 .destroy = nullptr
77 };
78 // HcfAsyKeyGeneratorCreate correct case: no primes
79 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest100, TestSize.Level0)
80 {
81 HcfAsyKeyGenerator *generator = nullptr;
82 HcfResult res = HcfAsyKeyGeneratorCreate("RSA512", &generator);
83 EXPECT_EQ(res, HCF_SUCCESS);
84 EXPECT_NE(generator, nullptr);
85 EXPECT_NE(generator->base.getClass(), nullptr);
86 EXPECT_NE(generator->base.destroy, nullptr);
87 EXPECT_NE(generator->generateKeyPair, nullptr);
88 EXPECT_NE(generator->getAlgoName, nullptr);
89 HcfObjDestroy(generator);
90 }
91
92 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest110, TestSize.Level0)
93 {
94 HcfAsyKeyGenerator *generator = nullptr;
95 HcfResult res = HcfAsyKeyGeneratorCreate("RSA768", &generator);
96 EXPECT_EQ(res, HCF_SUCCESS);
97 EXPECT_NE(generator, nullptr);
98 EXPECT_NE(generator->base.getClass(), nullptr);
99 EXPECT_NE(generator->base.destroy, nullptr);
100 EXPECT_NE(generator->generateKeyPair, nullptr);
101 EXPECT_NE(generator->getAlgoName, nullptr);
102 HcfObjDestroy(generator);
103 }
104
105 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest120, TestSize.Level0)
106 {
107 HcfAsyKeyGenerator *generator = nullptr;
108 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
109 EXPECT_EQ(res, HCF_SUCCESS);
110 EXPECT_NE(generator, nullptr);
111 EXPECT_NE(generator->base.getClass(), nullptr);
112 EXPECT_NE(generator->base.destroy, nullptr);
113 EXPECT_NE(generator->generateKeyPair, nullptr);
114 EXPECT_NE(generator->getAlgoName, nullptr);
115 HcfObjDestroy(generator);
116 }
117
118
119 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest130, TestSize.Level0)
120 {
121 HcfAsyKeyGenerator *generator = nullptr;
122 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &generator);
123 EXPECT_EQ(res, HCF_SUCCESS);
124 EXPECT_NE(generator, nullptr);
125 EXPECT_NE(generator->base.getClass(), nullptr);
126 EXPECT_NE(generator->base.destroy, nullptr);
127 EXPECT_NE(generator->generateKeyPair, nullptr);
128 EXPECT_NE(generator->getAlgoName, nullptr);
129 HcfObjDestroy(generator);
130 }
131
132 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest140, TestSize.Level0)
133 {
134 HcfAsyKeyGenerator *generator = nullptr;
135 HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072", &generator);
136 EXPECT_EQ(res, HCF_SUCCESS);
137 EXPECT_NE(generator, nullptr);
138 EXPECT_NE(generator->base.getClass(), nullptr);
139 EXPECT_NE(generator->base.destroy, nullptr);
140 EXPECT_NE(generator->generateKeyPair, nullptr);
141 EXPECT_NE(generator->getAlgoName, nullptr);
142 HcfObjDestroy(generator);
143 }
144
145 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest150, TestSize.Level0)
146 {
147 HcfAsyKeyGenerator *generator = nullptr;
148 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096", &generator);
149 EXPECT_EQ(res, HCF_SUCCESS);
150 EXPECT_NE(generator, nullptr);
151 EXPECT_NE(generator->base.getClass(), nullptr);
152 EXPECT_NE(generator->base.destroy, nullptr);
153 EXPECT_NE(generator->generateKeyPair, nullptr);
154 EXPECT_NE(generator->getAlgoName, nullptr);
155 HcfObjDestroy(generator);
156 }
157
158 // HcfAsyKeyGeneratorCreate correct case: with primes
159 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest200, TestSize.Level0)
160 {
161 HcfAsyKeyGenerator *generator = nullptr;
162 HcfResult res = HcfAsyKeyGeneratorCreate("RSA512|PRIMES_2", &generator);
163 EXPECT_EQ(res, HCF_SUCCESS);
164 EXPECT_NE(generator, nullptr);
165 EXPECT_NE(generator->base.getClass(), nullptr);
166 EXPECT_NE(generator->base.destroy, nullptr);
167 EXPECT_NE(generator->generateKeyPair, nullptr);
168 EXPECT_NE(generator->getAlgoName, nullptr);
169 HcfObjDestroy(generator);
170 }
171
172 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest210, TestSize.Level0)
173 {
174 HcfAsyKeyGenerator *generator = nullptr;
175 HcfResult res = HcfAsyKeyGeneratorCreate("RSA768|PRIMES_2", &generator);
176 EXPECT_EQ(res, HCF_SUCCESS);
177 EXPECT_NE(generator, nullptr);
178 EXPECT_NE(generator->base.getClass(), nullptr);
179 EXPECT_NE(generator->base.destroy, nullptr);
180 EXPECT_NE(generator->generateKeyPair, nullptr);
181 EXPECT_NE(generator->getAlgoName, nullptr);
182 HcfObjDestroy(generator);
183 }
184
185 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest220, TestSize.Level0)
186 {
187 HcfAsyKeyGenerator *generator = nullptr;
188 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
189 EXPECT_EQ(res, HCF_SUCCESS);
190 EXPECT_NE(generator, nullptr);
191 EXPECT_NE(generator->base.getClass(), nullptr);
192 EXPECT_NE(generator->base.destroy, nullptr);
193 EXPECT_NE(generator->generateKeyPair, nullptr);
194 EXPECT_NE(generator->getAlgoName, nullptr);
195 HcfObjDestroy(generator);
196 }
197
198 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest230, TestSize.Level0)
199 {
200 HcfAsyKeyGenerator *generator = nullptr;
201 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_3", &generator);
202 EXPECT_EQ(res, HCF_SUCCESS);
203 EXPECT_NE(generator, nullptr);
204 EXPECT_NE(generator->base.getClass(), nullptr);
205 EXPECT_NE(generator->base.destroy, nullptr);
206 EXPECT_NE(generator->generateKeyPair, nullptr);
207 EXPECT_NE(generator->getAlgoName, nullptr);
208 HcfObjDestroy(generator);
209 }
210
211 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest240, TestSize.Level0)
212 {
213 HcfAsyKeyGenerator *generator = nullptr;
214 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
215 EXPECT_EQ(res, HCF_SUCCESS);
216 EXPECT_NE(generator, nullptr);
217 EXPECT_NE(generator->base.getClass(), nullptr);
218 EXPECT_NE(generator->base.destroy, nullptr);
219 EXPECT_NE(generator->generateKeyPair, nullptr);
220 EXPECT_NE(generator->getAlgoName, nullptr);
221 HcfObjDestroy(generator);
222 }
223
224 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest250, TestSize.Level0)
225 {
226 HcfAsyKeyGenerator *generator = nullptr;
227 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_3", &generator);
228 EXPECT_EQ(res, HCF_SUCCESS);
229 EXPECT_NE(generator, nullptr);
230 EXPECT_NE(generator->base.getClass(), nullptr);
231 EXPECT_NE(generator->base.destroy, nullptr);
232 EXPECT_NE(generator->generateKeyPair, nullptr);
233 EXPECT_NE(generator->getAlgoName, nullptr);
234 HcfObjDestroy(generator);
235 }
236
237 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest260, TestSize.Level0)
238 {
239 HcfAsyKeyGenerator *generator = nullptr;
240 HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072|PRIMES_3", &generator);
241 EXPECT_EQ(res, HCF_SUCCESS);
242 EXPECT_NE(generator, nullptr);
243 EXPECT_NE(generator->base.getClass(), nullptr);
244 EXPECT_NE(generator->base.destroy, nullptr);
245 EXPECT_NE(generator->generateKeyPair, nullptr);
246 EXPECT_NE(generator->getAlgoName, nullptr);
247 HcfObjDestroy(generator);
248 }
249
250 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest270, TestSize.Level0)
251 {
252 HcfAsyKeyGenerator *generator = nullptr;
253 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_4", &generator);
254 EXPECT_EQ(res, HCF_SUCCESS);
255 EXPECT_NE(generator, nullptr);
256 EXPECT_NE(generator->base.getClass(), nullptr);
257 EXPECT_NE(generator->base.destroy, nullptr);
258 EXPECT_NE(generator->generateKeyPair, nullptr);
259 EXPECT_NE(generator->getAlgoName, nullptr);
260 HcfObjDestroy(generator);
261 }
262
263 // HcfAsyKeyGeneratorCreate Incorrect case : algname is null
264 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest300, TestSize.Level0)
265 {
266 HcfAsyKeyGenerator *generator = nullptr;
267 HcfResult res = HcfAsyKeyGeneratorCreate(nullptr, &generator);
268 EXPECT_NE(res, HCF_SUCCESS);
269 EXPECT_EQ(generator, nullptr);
270 HcfObjDestroy(generator);
271 }
272
273 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest301, TestSize.Level0)
274 {
275 HcfAsyKeyGenerator *generator = nullptr;
276 HcfResult res = HcfAsyKeyGeneratorCreate("", &generator);
277 EXPECT_NE(res, HCF_SUCCESS);
278 }
279
280 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest310, TestSize.Level0)
281 {
282 HcfAsyKeyGenerator *generator = nullptr;
283 HcfResult res = HcfAsyKeyGeneratorCreate("111111111111111111111111111111111111111111111111111111111111111111111111"
284 "111111111111111111111111111111111111111111111111111111111111111111111", &generator);
285 EXPECT_NE(res, HCF_SUCCESS);
286 EXPECT_EQ(generator, nullptr);
287 HcfObjDestroy(generator);
288 }
289
290 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest320, TestSize.Level0)
291 {
292 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", nullptr);
293 EXPECT_NE(res, HCF_SUCCESS);
294 }
295
296 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest330, TestSize.Level0)
297 {
298 HcfAsyKeyGenerator *generator = nullptr;
299 HcfResult res = HcfAsyKeyGeneratorCreate("RSA12315", &generator);
300 EXPECT_NE(res, HCF_SUCCESS);
301 EXPECT_EQ(generator, nullptr);
302 HcfObjDestroy(generator);
303 }
304
305 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest340, TestSize.Level0)
306 {
307 HcfAsyKeyGenerator *generator = nullptr;
308 HcfResult res = HcfAsyKeyGeneratorCreate("RSA512|PRIMES_777", &generator);
309 EXPECT_NE(res, HCF_SUCCESS);
310 EXPECT_EQ(generator, nullptr);
311 HcfObjDestroy(generator);
312 }
313
314 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest350, TestSize.Level0)
315 {
316 HcfAsyKeyGenerator *generator = nullptr;
317 HcfResult res = HcfAsyKeyGeneratorCreate("RSA512|PRIMES_3", &generator);
318 EXPECT_NE(res, HCF_SUCCESS);
319 EXPECT_EQ(generator, nullptr);
320 HcfObjDestroy(generator);
321 }
322
323 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest360, TestSize.Level0)
324 {
325 HcfAsyKeyGenerator *generator = nullptr;
326 HcfResult res = HcfAsyKeyGeneratorCreate("RSA768|PRIMES_3", &generator);
327 EXPECT_NE(res, HCF_SUCCESS);
328 EXPECT_EQ(generator, nullptr);
329 HcfObjDestroy(generator);
330 }
331
332 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest370, TestSize.Level0)
333 {
334 HcfAsyKeyGenerator *generator = nullptr;
335 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_4", &generator);
336 EXPECT_NE(res, HCF_SUCCESS);
337 EXPECT_EQ(generator, nullptr);
338 HcfObjDestroy(generator);
339 }
340
341 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest380, TestSize.Level0)
342 {
343 HcfAsyKeyGenerator *generator = nullptr;
344 HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072|PRIMES_4", &generator);
345 EXPECT_NE(res, HCF_SUCCESS);
346 EXPECT_EQ(generator, nullptr);
347 HcfObjDestroy(generator);
348 }
349
350 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest381, TestSize.Level0)
351 {
352 HcfAsyKeyGenerator *generator = nullptr;
353 HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072|PRIMES_3", &generator);
354 EXPECT_EQ(res, HCF_SUCCESS);
355 EXPECT_NE(generator, nullptr);
356 HcfObjDestroy(generator);
357 }
358
359 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest390, TestSize.Level0)
360 {
361 HcfAsyKeyGenerator *generator = nullptr;
362 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096|PRIMES_5", &generator);
363 EXPECT_NE(res, HCF_SUCCESS);
364 EXPECT_EQ(generator, nullptr);
365 HcfObjDestroy(generator);
366 }
367
368 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest391, TestSize.Level0)
369 {
370 HcfAsyKeyGenerator *generator = nullptr;
371 HcfResult res = HcfAsyKeyGeneratorCreate("RSA8192|PRIMES_5", &generator);
372 EXPECT_EQ(res, HCF_SUCCESS);
373 EXPECT_NE(generator, nullptr);
374 HcfObjDestroy(generator);
375 }
376
377 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest400, TestSize.Level0)
378 {
379 HcfAsyKeyGenerator *generator = nullptr;
380 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
381 EXPECT_EQ(res, HCF_SUCCESS);
382 EXPECT_NE(generator, nullptr);
383 HcfObjDestroy(generator);
384 generator = nullptr;
385 HcfObjDestroy(generator);
386 HcfObjDestroy(nullptr);
387 }
388
389 // generateKeyPair correct case
390 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest500, TestSize.Level0)
391 {
392 HcfAsyKeyGenerator *generator = nullptr;
393 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
394
395 HcfKeyPair *keyPair = nullptr;
396 res = generator->generateKeyPair(generator, nullptr, &keyPair);
397
398 EXPECT_EQ(res, HCF_SUCCESS);
399 EXPECT_NE(keyPair, nullptr);
400 EXPECT_NE(keyPair->priKey, nullptr);
401 EXPECT_NE(keyPair->pubKey, nullptr);
402 EXPECT_NE(keyPair->base.getClass(), nullptr);
403 EXPECT_NE(keyPair->base.destroy, nullptr);
404
405 HcfPubKey *pubkey = keyPair->pubKey;
406 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
407 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
408 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
409 EXPECT_NE(pubkey->base.base.destroy, nullptr);
410
411 HcfPriKey *prikey = keyPair->priKey;
412 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
413 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
414 EXPECT_NE(prikey->base.base.getClass(), nullptr);
415 EXPECT_NE(prikey->base.base.destroy, nullptr);
416 EXPECT_NE(prikey->clearMem, nullptr);
417
418 HcfObjDestroy(keyPair);
419 HcfObjDestroy(generator);
420 }
421
422 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest510, TestSize.Level0)
423 {
424 HcfAsyKeyGenerator *generator = nullptr;
425 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
426
427 HcfKeyPair *keyPair = nullptr;
428 res = generator->generateKeyPair(generator, nullptr, &keyPair);
429
430 EXPECT_EQ(res, HCF_SUCCESS);
431 EXPECT_NE(keyPair, nullptr);
432 EXPECT_NE(keyPair->priKey, nullptr);
433 EXPECT_NE(keyPair->pubKey, nullptr);
434 EXPECT_NE(keyPair->base.getClass(), nullptr);
435 EXPECT_NE(keyPair->base.destroy, nullptr);
436
437 HcfPubKey *pubkey = keyPair->pubKey;
438 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
439 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
440 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
441 EXPECT_NE(pubkey->base.base.destroy, nullptr);
442
443 HcfPriKey *prikey = keyPair->priKey;
444 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
445 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
446 EXPECT_NE(prikey->base.base.getClass(), nullptr);
447 EXPECT_NE(prikey->base.base.destroy, nullptr);
448 EXPECT_NE(prikey->clearMem, nullptr);
449
450 HcfObjDestroy(keyPair);
451 HcfObjDestroy(generator);
452 }
453
454 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest511, TestSize.Level0)
455 {
456 HcfAsyKeyGenerator *generator = nullptr;
457 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_3", &generator);
458
459 HcfKeyPair *keyPair = nullptr;
460 res = generator->generateKeyPair(generator, nullptr, &keyPair);
461
462 HcfBlob pubKeyBlob;
463 HcfBlob priKeyBlob;
464 HcfPubKey *pubKey = keyPair->pubKey;
465 HcfPriKey *priKey = keyPair->priKey;
466
467 res = pubKey->base.getEncoded((HcfKey *)priKey, &pubKeyBlob);
468 EXPECT_NE(res, HCF_SUCCESS);
469 res = priKey->base.getEncoded((HcfKey *)pubKey, &priKeyBlob);
470 EXPECT_NE(res, HCF_SUCCESS);
471 HcfObjDestroy(keyPair);
472 HcfObjDestroy(generator);
473 HcfFree(pubKeyBlob.data);
474 HcfFree(priKeyBlob.data);
475 }
476
477 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest512, TestSize.Level0)
478 {
479 HcfAsyKeyGenerator *generator = nullptr;
480 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
481
482 HcfKeyPair *keyPair = nullptr;
483 res = generator->generateKeyPair(generator, nullptr, &keyPair);
484
485 HcfPubKey *pubKey = keyPair->pubKey;
486 HcfPriKey *priKey = keyPair->priKey;
487
488 res = pubKey->base.getEncoded((HcfKey *)priKey, nullptr);
489 EXPECT_NE(res, HCF_SUCCESS);
490 res = priKey->base.getEncoded((HcfKey *)pubKey, nullptr);
491 EXPECT_NE(res, HCF_SUCCESS);
492 HcfObjDestroy(keyPair);
493 HcfObjDestroy(generator);
494 }
495
496 // generateKeyPair conrrect case: use getEncode encode pubkey and prikey
497 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest520, TestSize.Level0)
498 {
499 HcfAsyKeyGenerator *generator = nullptr;
500 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
501 EXPECT_EQ(res, HCF_SUCCESS);
502 EXPECT_NE(generator, nullptr);
503
504 HcfKeyPair *keyPair = nullptr;
505 res = generator->generateKeyPair(generator, nullptr, &keyPair);
506 EXPECT_EQ(res, HCF_SUCCESS);
507 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
508 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
509 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
510 EXPECT_EQ(res, HCF_SUCCESS);
511 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
512 EXPECT_EQ(res, HCF_SUCCESS);
513
514 HcfKeyPair *dupKeyPair = nullptr;
515 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
516 EXPECT_EQ(res, HCF_SUCCESS);
517 HcfPubKey *pubkey = dupKeyPair->pubKey;
518 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
519 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
520 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
521 EXPECT_NE(pubkey->base.base.destroy, nullptr);
522
523 HcfPriKey *prikey = dupKeyPair->priKey;
524 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
525 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
526 EXPECT_NE(prikey->base.base.getClass(), nullptr);
527 EXPECT_NE(prikey->base.base.destroy, nullptr);
528 EXPECT_NE(prikey->clearMem, nullptr);
529
530 HcfFree(pubKeyBlob.data);
531 HcfFree(priKeyBlob.data);
532 HcfObjDestroy(generator);
533 HcfObjDestroy(keyPair);
534 HcfObjDestroy(dupKeyPair);
535 }
536
537 // Test muliti getEncoded and convertKey
538 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest521, TestSize.Level0)
539 {
540 HcfAsyKeyGenerator *generator = nullptr;
541 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
542 EXPECT_EQ(res, HCF_SUCCESS);
543 EXPECT_NE(generator, nullptr);
544
545 HcfKeyPair *keyPair = nullptr;
546 res = generator->generateKeyPair(generator, nullptr, &keyPair);
547 EXPECT_EQ(res, HCF_SUCCESS);
548 HcfBlob pubKeyBlob1 = {.data = nullptr, .len = 0};
549 HcfBlob priKeyBlob1 = {.data = nullptr, .len = 0};
550 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob1);
551 EXPECT_EQ(res, HCF_SUCCESS);
552 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob1);
553 EXPECT_EQ(res, HCF_SUCCESS);
554
555 HcfKeyPair *dupKeyPair1 = nullptr;
556 res = generator->convertKey(generator, nullptr, &pubKeyBlob1, &priKeyBlob1, &dupKeyPair1);
557 EXPECT_EQ(res, HCF_SUCCESS);
558
559 HcfKeyPair *dupKeyPair2 = nullptr;
560 HcfBlob pubKeyBlob2 = {.data = nullptr, .len = 0};
561 HcfBlob priKeyBlob2 = {.data = nullptr, .len = 0};
562 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob2);
563 EXPECT_EQ(res, HCF_SUCCESS);
564 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob2);
565 EXPECT_EQ(res, HCF_SUCCESS);
566 res = generator->convertKey(generator, nullptr, &pubKeyBlob2, &priKeyBlob2, &dupKeyPair2);
567 EXPECT_EQ(res, HCF_SUCCESS);
568
569 HcfFree(pubKeyBlob1.data);
570 HcfFree(priKeyBlob1.data);
571 HcfFree(pubKeyBlob2.data);
572 HcfFree(priKeyBlob2.data);
573 HcfObjDestroy(generator);
574 HcfObjDestroy(keyPair);
575 HcfObjDestroy(dupKeyPair1);
576 HcfObjDestroy(dupKeyPair2);
577 }
578
579 // generateKeyPair correct case: getEncode encode pubkey
580 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest530, TestSize.Level0)
581 {
582 HcfAsyKeyGenerator *generator = nullptr;
583 HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072|PRIMES_3", &generator);
584 EXPECT_EQ(res, HCF_SUCCESS);
585 EXPECT_NE(generator, nullptr);
586
587 HcfKeyPair *keyPair = nullptr;
588 res = generator->generateKeyPair(generator, nullptr, &keyPair);
589 EXPECT_EQ(res, HCF_SUCCESS);
590 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
591 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
592 EXPECT_EQ(res, HCF_SUCCESS);
593
594 HcfKeyPair *dupKeyPair = nullptr;
595 res = generator->convertKey(generator, nullptr, &pubKeyBlob, nullptr, &dupKeyPair);
596 EXPECT_EQ(res, HCF_SUCCESS);
597 HcfPubKey *pubkey = dupKeyPair->pubKey;
598 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
599 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
600 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
601 EXPECT_NE(pubkey->base.base.destroy, nullptr);
602
603 HcfFree(pubKeyBlob.data);
604 HcfObjDestroy(generator);
605 HcfObjDestroy(keyPair);
606 HcfObjDestroy(dupKeyPair);
607 }
608
609 // generateKeyPair correct case: getEncode encode prikey
610 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest540, TestSize.Level0)
611 {
612 HcfAsyKeyGenerator *generator = nullptr;
613 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
614 EXPECT_EQ(res, HCF_SUCCESS);
615 EXPECT_NE(generator, nullptr);
616
617 HcfKeyPair *keyPair = nullptr;
618 res = generator->generateKeyPair(generator, nullptr, &keyPair);
619 EXPECT_EQ(res, HCF_SUCCESS);
620 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
621 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
622 EXPECT_EQ(res, HCF_SUCCESS);
623
624 HcfKeyPair *dupKeyPair = nullptr;
625 res = generator->convertKey(generator, nullptr, nullptr, &priKeyBlob, &dupKeyPair);
626 EXPECT_EQ(res, HCF_SUCCESS);
627
628 HcfPriKey *prikey = dupKeyPair->priKey;
629 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
630 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
631 EXPECT_NE(prikey->base.base.getClass(), nullptr);
632 EXPECT_NE(prikey->base.base.destroy, nullptr);
633 EXPECT_NE(prikey->clearMem, nullptr);
634
635 HcfFree(priKeyBlob.data);
636 HcfObjDestroy(generator);
637 HcfObjDestroy(keyPair);
638 HcfObjDestroy(dupKeyPair);
639 }
640
641 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest550, TestSize.Level0)
642 {
643 HcfAsyKeyGenerator *generator = nullptr;
644 HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072", &generator);
645 EXPECT_EQ(res, HCF_SUCCESS);
646 EXPECT_NE(generator, nullptr);
647
648 HcfKeyPair *keyPair = nullptr;
649 res = generator->generateKeyPair(generator, nullptr, &keyPair);
650 EXPECT_EQ(res, HCF_SUCCESS);
651 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
652 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
653 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
654 EXPECT_EQ(res, HCF_SUCCESS);
655 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
656 EXPECT_EQ(res, HCF_SUCCESS);
657
658 HcfKeyPair *dupKeyPair = nullptr;
659 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
660 EXPECT_EQ(res, HCF_SUCCESS);
661 HcfPubKey *pubkey = dupKeyPair->pubKey;
662 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
663 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
664 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
665 EXPECT_NE(pubkey->base.base.destroy, nullptr);
666
667 HcfPriKey *prikey = dupKeyPair->priKey;
668 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
669 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
670 EXPECT_NE(prikey->base.base.getClass(), nullptr);
671 EXPECT_NE(prikey->base.base.destroy, nullptr);
672 EXPECT_NE(prikey->clearMem, nullptr);
673
674 HcfFree(pubKeyBlob.data);
675 HcfFree(priKeyBlob.data);
676 HcfObjDestroy(generator);
677 HcfObjDestroy(keyPair);
678 HcfObjDestroy(dupKeyPair);
679 }
680
681 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest560, TestSize.Level0)
682 {
683 HcfAsyKeyGenerator *generator = nullptr;
684 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096", &generator);
685 EXPECT_EQ(res, HCF_SUCCESS);
686 EXPECT_NE(generator, nullptr);
687
688 HcfKeyPair *keyPair = nullptr;
689 res = generator->generateKeyPair(generator, nullptr, &keyPair);
690 EXPECT_EQ(res, HCF_SUCCESS);
691 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
692 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
693 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
694 EXPECT_EQ(res, HCF_SUCCESS);
695 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
696 EXPECT_EQ(res, HCF_SUCCESS);
697
698 HcfKeyPair *dupKeyPair = nullptr;
699 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
700 EXPECT_EQ(res, HCF_SUCCESS);
701 HcfPubKey *pubkey = dupKeyPair->pubKey;
702 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
703 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
704 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
705 EXPECT_NE(pubkey->base.base.destroy, nullptr);
706
707 HcfPriKey *prikey = dupKeyPair->priKey;
708 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
709 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
710 EXPECT_NE(prikey->base.base.getClass(), nullptr);
711 EXPECT_NE(prikey->base.base.destroy, nullptr);
712 EXPECT_NE(prikey->clearMem, nullptr);
713
714 HcfFree(pubKeyBlob.data);
715 HcfFree(priKeyBlob.data);
716 HcfObjDestroy(generator);
717 HcfObjDestroy(keyPair);
718 HcfObjDestroy(dupKeyPair);
719 }
720
721 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest570, TestSize.Level0)
722 {
723 HcfAsyKeyGenerator *generator = nullptr;
724 HcfResult res = HcfAsyKeyGeneratorCreate("RSA512", &generator);
725 EXPECT_EQ(res, HCF_SUCCESS);
726 EXPECT_NE(generator, nullptr);
727
728 HcfKeyPair *keyPair = nullptr;
729 res = generator->generateKeyPair(generator, nullptr, &keyPair);
730 EXPECT_EQ(res, HCF_SUCCESS);
731 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
732 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
733 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
734 EXPECT_EQ(res, HCF_SUCCESS);
735 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
736 EXPECT_EQ(res, HCF_SUCCESS);
737
738 HcfKeyPair *dupKeyPair = nullptr;
739 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
740 EXPECT_EQ(res, HCF_SUCCESS);
741 HcfPubKey *pubkey = dupKeyPair->pubKey;
742 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
743 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
744 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
745 EXPECT_NE(pubkey->base.base.destroy, nullptr);
746
747 HcfPriKey *prikey = dupKeyPair->priKey;
748 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
749 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
750 EXPECT_NE(prikey->base.base.getClass(), nullptr);
751 EXPECT_NE(prikey->base.base.destroy, nullptr);
752 EXPECT_NE(prikey->clearMem, nullptr);
753
754 HcfFree(pubKeyBlob.data);
755 HcfFree(priKeyBlob.data);
756 HcfObjDestroy(generator);
757 HcfObjDestroy(keyPair);
758 HcfObjDestroy(dupKeyPair);
759 }
760
761 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest580, TestSize.Level0)
762 {
763 HcfAsyKeyGenerator *generator = nullptr;
764 HcfResult res = HcfAsyKeyGeneratorCreate("RSA768", &generator);
765 EXPECT_EQ(res, HCF_SUCCESS);
766 EXPECT_NE(generator, nullptr);
767
768 HcfKeyPair *keyPair = nullptr;
769 res = generator->generateKeyPair(generator, nullptr, &keyPair);
770 EXPECT_EQ(res, HCF_SUCCESS);
771 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
772 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
773 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
774 EXPECT_EQ(res, HCF_SUCCESS);
775 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
776 EXPECT_EQ(res, HCF_SUCCESS);
777
778 HcfKeyPair *dupKeyPair = nullptr;
779 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
780 EXPECT_EQ(res, HCF_SUCCESS);
781 HcfPubKey *pubkey = dupKeyPair->pubKey;
782 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
783 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
784 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
785 EXPECT_NE(pubkey->base.base.destroy, nullptr);
786
787 HcfPriKey *prikey = dupKeyPair->priKey;
788 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
789 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
790 EXPECT_NE(prikey->base.base.getClass(), nullptr);
791 EXPECT_NE(prikey->base.base.destroy, nullptr);
792 EXPECT_NE(prikey->clearMem, nullptr);
793
794 HcfFree(pubKeyBlob.data);
795 HcfFree(priKeyBlob.data);
796 HcfObjDestroy(generator);
797 HcfObjDestroy(keyPair);
798 HcfObjDestroy(dupKeyPair);
799 }
800
801 // generateKeyPair incorrect case: user wrong ECC class, ignore in this version
802 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest600, TestSize.Level0)
803 {
804 HcfAsyKeyGenerator *eccGenerator = nullptr;
805 HcfResult res = HcfAsyKeyGeneratorCreate("ECC224", &eccGenerator);
806 EXPECT_EQ(res, HCF_SUCCESS);
807 EXPECT_NE(eccGenerator, nullptr);
808
809 HcfAsyKeyGenerator *rsaGenerator = nullptr;
810 res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
811 EXPECT_EQ(res, HCF_SUCCESS);
812 EXPECT_NE(rsaGenerator, nullptr);
813
814 HcfKeyPair *keyPair = nullptr;
815 // innerkit调用,在framework层中,指针无法判断eccGenerator调用的self,所以keypair实际不为空。
816 // 会调到ecc的generatekeyPair,生成ecc的keypair对象(class为ecckeypair)
817 // 对js调用,能否防范?
818 res = rsaGenerator->generateKeyPair(eccGenerator, nullptr, &keyPair);
819 // 经验证,keypair不为空,且为ecc的keypair
820 EXPECT_NE(keyPair, nullptr);
821 EXPECT_STREQ("OPENSSL.ECC.KEY_PAIR", keyPair->base.getClass());
822
823 HcfObjDestroy(keyPair);
824 HcfObjDestroy(eccGenerator);
825 HcfObjDestroy(rsaGenerator);
826 }
827
828 // generateKeyPair incorrect case: generator class is null
829 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest610, TestSize.Level0)
830 {
831 HcfAsyKeyGenerator *rsaGenerator = nullptr;
832 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
833 EXPECT_EQ(res, HCF_SUCCESS);
834 EXPECT_NE(rsaGenerator, nullptr);
835
836 HcfKeyPair *keyPair = nullptr;
837 res = rsaGenerator->generateKeyPair(nullptr, nullptr, &keyPair);
838 EXPECT_NE(res, HCF_SUCCESS);
839 EXPECT_EQ(keyPair, nullptr);
840
841 HcfObjDestroy(rsaGenerator);
842 }
843
844 // generateKeyPair incorrect case: keypair is null
845 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest620, TestSize.Level0)
846 {
847 HcfAsyKeyGenerator *rsaGenerator = nullptr;
848 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
849 EXPECT_EQ(res, HCF_SUCCESS);
850 EXPECT_NE(rsaGenerator, nullptr);
851
852 res = rsaGenerator->generateKeyPair(rsaGenerator, nullptr, nullptr);
853 EXPECT_NE(res, HCF_SUCCESS);
854
855 HcfObjDestroy(rsaGenerator);
856 }
857
858 // convertKey correct case
859 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest700, TestSize.Level0)
860 {
861 HcfAsyKeyGenerator *generator = nullptr;
862 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &generator);
863 EXPECT_EQ(res, HCF_SUCCESS);
864 EXPECT_NE(generator, nullptr);
865
866 HcfKeyPair *keyPair = nullptr;
867 res = generator->generateKeyPair(generator, nullptr, &keyPair);
868 EXPECT_EQ(res, HCF_SUCCESS);
869 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
870 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
871 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
872 EXPECT_EQ(res, HCF_SUCCESS);
873 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
874 EXPECT_EQ(res, HCF_SUCCESS);
875
876 HcfKeyPair *dupKeyPair = nullptr;
877 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
878 EXPECT_EQ(res, HCF_SUCCESS);
879 HcfPubKey *pubkey = dupKeyPair->pubKey;
880 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
881 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
882 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
883 EXPECT_NE(pubkey->base.base.destroy, nullptr);
884
885 HcfPriKey *prikey = dupKeyPair->priKey;
886 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
887 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
888 EXPECT_NE(prikey->base.base.getClass(), nullptr);
889 EXPECT_NE(prikey->base.base.destroy, nullptr);
890 EXPECT_NE(prikey->clearMem, nullptr);
891
892 HcfFree(pubKeyBlob.data);
893 HcfFree(priKeyBlob.data);
894 HcfObjDestroy(generator);
895 HcfObjDestroy(keyPair);
896 HcfObjDestroy(dupKeyPair);
897 }
898
899 // convertKey incorrect case: input ECC class
900 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest710, TestSize.Level0)
901 {
902 HcfAsyKeyGenerator *eccGenerator = nullptr;
903 HcfResult res = HcfAsyKeyGeneratorCreate("ECC224", &eccGenerator);
904 EXPECT_EQ(res, HCF_SUCCESS);
905 EXPECT_NE(eccGenerator, nullptr);
906
907 HcfAsyKeyGenerator *rsaGenerator = nullptr;
908 res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
909 EXPECT_EQ(res, HCF_SUCCESS);
910 EXPECT_NE(rsaGenerator, nullptr);
911
912 HcfKeyPair *dupKeyPair = nullptr;
913 res = rsaGenerator->convertKey(eccGenerator, nullptr, nullptr, nullptr, &dupKeyPair);
914 EXPECT_NE(res, HCF_SUCCESS);
915 EXPECT_EQ(dupKeyPair, nullptr);
916
917 HcfObjDestroy(eccGenerator);
918 HcfObjDestroy(rsaGenerator);
919 }
920
921
922 // convertKey incorrect case: input null generator
923 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest720, TestSize.Level0)
924 {
925 HcfAsyKeyGenerator *rsaGenerator = nullptr;
926 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
927 EXPECT_EQ(res, HCF_SUCCESS);
928 EXPECT_NE(rsaGenerator, nullptr);
929
930 HcfKeyPair *keyPair = nullptr;
931 res = rsaGenerator->generateKeyPair(rsaGenerator, nullptr, &keyPair);
932 EXPECT_EQ(res, HCF_SUCCESS);
933 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
934 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
935 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
936 EXPECT_EQ(res, HCF_SUCCESS);
937 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
938 EXPECT_EQ(res, HCF_SUCCESS);
939
940 HcfKeyPair *dupKeyPair = nullptr;
941 res = rsaGenerator->convertKey(nullptr, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
942 EXPECT_NE(res, HCF_SUCCESS);
943 EXPECT_EQ(dupKeyPair, nullptr);
944
945 HcfFree(pubKeyBlob.data);
946 HcfFree(priKeyBlob.data);
947 HcfObjDestroy(keyPair);
948 HcfObjDestroy(rsaGenerator);
949 }
950
951 // convertKey incorrect case: input null dupkeypair
952 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest730, TestSize.Level0)
953 {
954 HcfAsyKeyGenerator *rsaGenerator = nullptr;
955 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
956 EXPECT_EQ(res, HCF_SUCCESS);
957 EXPECT_NE(rsaGenerator, nullptr);
958
959 HcfKeyPair *keyPair = nullptr;
960 res = rsaGenerator->generateKeyPair(rsaGenerator, nullptr, &keyPair);
961 EXPECT_EQ(res, HCF_SUCCESS);
962 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
963 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
964 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
965 EXPECT_EQ(res, HCF_SUCCESS);
966 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
967 EXPECT_EQ(res, HCF_SUCCESS);
968
969 HcfKeyPair *dupKeyPair = nullptr;
970 res = rsaGenerator->convertKey(rsaGenerator, nullptr, &pubKeyBlob, &priKeyBlob, nullptr);
971 EXPECT_NE(res, HCF_SUCCESS);
972 EXPECT_EQ(dupKeyPair, nullptr);
973
974 HcfFree(pubKeyBlob.data);
975 HcfFree(priKeyBlob.data);
976 HcfObjDestroy(keyPair);
977 HcfObjDestroy(rsaGenerator);
978 }
979
980 // convertKey incorrect case: input blob with null data
981 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest740, TestSize.Level0)
982 {
983 HcfAsyKeyGenerator *rsaGenerator = nullptr;
984 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
985 EXPECT_EQ(res, HCF_SUCCESS);
986 EXPECT_NE(rsaGenerator, nullptr);
987
988 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
989 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
990
991 HcfKeyPair *dupKeyPair = nullptr;
992 res = rsaGenerator->convertKey(rsaGenerator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
993 EXPECT_NE(res, HCF_SUCCESS);
994 EXPECT_EQ(dupKeyPair, nullptr);
995
996 HcfObjDestroy(rsaGenerator);
997 }
998
999 // convertKey incorrect case: input blob with zero len
1000 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest750, TestSize.Level0)
1001 {
1002 HcfAsyKeyGenerator *rsaGenerator = nullptr;
1003 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &rsaGenerator);
1004 EXPECT_EQ(res, HCF_SUCCESS);
1005 EXPECT_NE(rsaGenerator, nullptr);
1006
1007 HcfBlob pubKeyBlob = {.data = g_rsaCorrectPkData, .len = 0};
1008 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
1009
1010 HcfKeyPair *dupKeyPair = nullptr;
1011 res = rsaGenerator->convertKey(rsaGenerator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
1012 EXPECT_NE(res, HCF_SUCCESS);
1013 EXPECT_EQ(dupKeyPair, nullptr);
1014
1015 HcfObjDestroy(rsaGenerator);
1016 }
1017
1018 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest760, TestSize.Level0)
1019 {
1020 HcfAsyKeyGenerator *rsaGenerator = nullptr;
1021 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &rsaGenerator);
1022 EXPECT_EQ(res, HCF_SUCCESS);
1023 EXPECT_NE(rsaGenerator, nullptr);
1024
1025 HcfBlob priKeyBlob = {.data = g_rsaCorrectPkData, .len = 0};
1026
1027 HcfKeyPair *dupKeyPair = nullptr;
1028 res = rsaGenerator->convertKey(rsaGenerator, nullptr, nullptr, &priKeyBlob, &dupKeyPair);
1029 EXPECT_NE(res, HCF_SUCCESS);
1030 EXPECT_EQ(dupKeyPair, nullptr);
1031
1032 HcfObjDestroy(rsaGenerator);
1033 }
1034
1035 // convertKey incorrect case: input blob with error data
1036 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest770, TestSize.Level0)
1037 {
1038 HcfAsyKeyGenerator *rsaGenerator = nullptr;
1039 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
1040 EXPECT_EQ(res, HCF_SUCCESS);
1041 EXPECT_NE(rsaGenerator, nullptr);
1042
1043 HcfKeyPair *dupKeyPair = nullptr;
1044 res = rsaGenerator->convertKey(rsaGenerator, nullptr, &g_rsaErrorPubKeyBlob, &g_rsaErrorPubKeyBlob, &dupKeyPair);
1045 EXPECT_NE(res, HCF_SUCCESS);
1046 EXPECT_EQ(dupKeyPair, nullptr);
1047
1048 HcfObjDestroy(rsaGenerator);
1049 }
1050
1051 // Incorrect case: use wrong bits or primes
1052 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest800, TestSize.Level0)
1053 {
1054 HcfAsyKeyGenerator *generator = nullptr;
1055 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1111", &generator);
1056 EXPECT_NE(res, HCF_SUCCESS);
1057 EXPECT_EQ(generator, nullptr);
1058 HcfObjDestroy(generator);
1059 }
1060
1061 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest810, TestSize.Level0)
1062 {
1063 HcfAsyKeyGenerator *generator = nullptr;
1064 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|Primessf", &generator);
1065 EXPECT_NE(res, HCF_SUCCESS);
1066 EXPECT_EQ(generator, nullptr);
1067 HcfObjDestroy(generator);
1068 }
1069
1070 // 测试异常释放
1071 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest820, TestSize.Level0)
1072 {
1073 HcfAsyKeyGenerator *generator = nullptr;
1074 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|Primessf", &generator);
1075 EXPECT_NE(res, HCF_SUCCESS);
1076 EXPECT_EQ(generator, nullptr);
1077 HcfObjDestroy(generator);
1078 }
1079
1080 // prikey clear mem
1081 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest830, TestSize.Level0)
1082 {
1083 HcfAsyKeyGenerator *generator = nullptr;
1084 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
1085 EXPECT_EQ(res, HCF_SUCCESS);
1086 EXPECT_NE(generator, nullptr);
1087
1088 HcfKeyPair *keyPair = nullptr;
1089 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1090
1091 keyPair->priKey->clearMem(nullptr);
1092
1093 HcfObjDestroy(generator);
1094 HcfObjDestroy(keyPair);
1095 }
1096
1097 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest840, TestSize.Level0)
1098 {
1099 HcfAsyKeyGenerator *generator = nullptr;
1100 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
1101 EXPECT_EQ(res, HCF_SUCCESS);
1102 EXPECT_NE(generator, nullptr);
1103
1104 HcfKeyPair *keyPair = nullptr;
1105 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1106
1107 keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey);
1108
1109 HcfObjDestroy(generator);
1110 HcfObjDestroy(keyPair);
1111 }
1112
1113 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest850, TestSize.Level0)
1114 {
1115 HcfAsyKeyGenerator *generator = nullptr;
1116 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
1117 EXPECT_EQ(res, HCF_SUCCESS);
1118 EXPECT_NE(generator, nullptr);
1119
1120 HcfKeyPair *keyPair = nullptr;
1121 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1122
1123 keyPair->priKey->clearMem(keyPair->priKey);
1124
1125 HcfObjDestroy(generator);
1126 HcfObjDestroy(keyPair);
1127 }
1128
1129 // correct case: use destroy function inclass(not HcfObjDestroy)
1130 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest900, TestSize.Level0)
1131 {
1132 HcfAsyKeyGenerator *generator = nullptr;
1133 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
1134
1135 HcfKeyPair *keyPair = nullptr;
1136 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1137
1138 HcfPubKey *pubkey = keyPair->pubKey;
1139 HcfPriKey *prikey = keyPair->priKey;
1140
1141 EXPECT_EQ(pubkey->base.getFormat((HcfKey *)prikey), nullptr);
1142 EXPECT_EQ(prikey->base.getFormat((HcfKey *)pubkey), nullptr);
1143
1144 EXPECT_EQ(pubkey->base.getFormat(nullptr), nullptr);
1145 EXPECT_EQ(prikey->base.getFormat(nullptr), nullptr);
1146
1147 EXPECT_EQ(pubkey->base.getAlgorithm((HcfKey *)prikey), nullptr);
1148 EXPECT_EQ(prikey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
1149
1150 EXPECT_EQ(pubkey->base.getAlgorithm(nullptr), nullptr);
1151 EXPECT_EQ(prikey->base.getAlgorithm(nullptr), nullptr);
1152
1153 prikey->base.base.destroy(nullptr);
1154 pubkey->base.base.destroy(nullptr);
1155 keyPair->base.destroy(nullptr);
1156
1157 prikey->base.base.destroy((HcfObjectBase *)pubkey);
1158 pubkey->base.base.destroy((HcfObjectBase *)prikey);
1159 keyPair->base.destroy((HcfObjectBase *)prikey);
1160
1161 HcfObjDestroy(keyPair);
1162 HcfObjDestroy(generator);
1163 }
1164
1165 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest901, TestSize.Level0)
1166 {
1167 HcfAsyKeyGenerator *generator = nullptr;
1168 HcfResult res = HcfAsyKeyGeneratorCreate("RSA", &generator);
1169 EXPECT_NE(res, HCF_SUCCESS);
1170 EXPECT_EQ(generator, nullptr);
1171 HcfObjDestroy(generator);
1172 }
1173
1174 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest902, TestSize.Level0)
1175 {
1176 HcfAsyKeyGenerator *generator = nullptr;
1177 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &generator);
1178 EXPECT_EQ(res, HCF_SUCCESS);
1179 EXPECT_NE(generator, nullptr);
1180
1181 HcfKeyPair *keyPair = nullptr;
1182 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1183 EXPECT_EQ(res, HCF_SUCCESS);
1184 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
1185 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
1186 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
1187 EXPECT_EQ(res, HCF_SUCCESS);
1188 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
1189 EXPECT_EQ(res, HCF_SUCCESS);
1190
1191 HcfKeyPair *dupKeyPair = nullptr;
1192 res = generator->convertKey(generator, nullptr, nullptr, &priKeyBlob, &dupKeyPair);
1193 EXPECT_EQ(res, HCF_SUCCESS);
1194
1195 HcfPriKey *prikey = dupKeyPair->priKey;
1196 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
1197 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
1198 EXPECT_NE(prikey->base.base.getClass(), nullptr);
1199 EXPECT_NE(prikey->base.base.destroy, nullptr);
1200 EXPECT_NE(prikey->clearMem, nullptr);
1201
1202 HcfFree(pubKeyBlob.data);
1203 HcfFree(priKeyBlob.data);
1204 HcfObjDestroy(generator);
1205 HcfObjDestroy(keyPair);
1206 HcfObjDestroy(dupKeyPair);
1207 }
1208
1209 // test RSA key pair get
1210 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest903, TestSize.Level0)
1211 {
1212 HcfAsyKeyGenerator *generator = nullptr;
1213 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &generator);
1214 EXPECT_EQ(res, HCF_SUCCESS);
1215 EXPECT_NE(generator, nullptr);
1216
1217 HcfKeyPair *keyPair = nullptr;
1218 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1219 EXPECT_EQ(res, HCF_SUCCESS);
1220 EXPECT_NE(keyPair, nullptr);
1221 HcfPriKey *priKey = keyPair->priKey;
1222 HcfPubKey *pubKey = keyPair->pubKey;
1223
1224 HcfBigInteger returnPubN = { .data = nullptr, .len = 0 };
1225 HcfBigInteger returnPriN = { .data = nullptr, .len = 0 };
1226 HcfBigInteger returnE = { .data = nullptr, .len = 0 };
1227 HcfBigInteger returnD = { .data = nullptr, .len = 0 };
1228 res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN);
1229 EXPECT_EQ(res, HCF_SUCCESS);
1230 res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD);
1231 EXPECT_EQ(res, HCF_SUCCESS);
1232 res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN);
1233 EXPECT_EQ(res, HCF_SUCCESS);
1234 res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE);
1235 EXPECT_EQ(res, HCF_SUCCESS);
1236
1237 HcfFree(returnPubN.data);
1238 HcfFree(returnPriN.data);
1239 HcfFree(returnD.data);
1240 HcfFree(returnE.data);
1241 HcfObjDestroy(generator);
1242 HcfObjDestroy(keyPair);
1243 }
1244
1245 // spi create
1246 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest001, TestSize.Level0)
1247 {
1248 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1249 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(nullptr, &spiObj);
1250
1251 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1252 ASSERT_EQ(spiObj, nullptr);
1253 }
1254
1255 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest002, TestSize.Level0)
1256 {
1257 HcfAsyKeyGenParams params = {
1258 .algo = HCF_ALG_RSA,
1259 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1260 .primes = 0,
1261 };
1262
1263 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, nullptr);
1264
1265 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1266 }
1267
1268 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest003, TestSize.Level0)
1269 {
1270 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1271 HcfAsyKeyGenParams params = {
1272 .algo = HCF_ALG_RSA,
1273 .bits = OPENSSL_RSA_KEY_SIZE_ABNORMAL,
1274 .primes = 0,
1275 };
1276
1277 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1278
1279 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1280 ASSERT_EQ(spiObj, nullptr);
1281 }
1282
1283 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest004, TestSize.Level0)
1284 {
1285 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1286 HcfAsyKeyGenParams params = {
1287 .algo = HCF_ALG_RSA,
1288 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1289 .primes = OPENSSL_RSA_PRIMES_ABNORMAL,
1290 };
1291
1292 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1293
1294 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1295 ASSERT_EQ(spiObj, nullptr);
1296 }
1297
1298 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest005, TestSize.Level0)
1299 {
1300 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1301 HcfAsyKeyGenParams params = {
1302 .algo = HCF_ALG_RSA,
1303 .bits = OPENSSL_RSA_KEY_SIZE_4096,
1304 .primes = OPENSSL_RSA_PRIMES_ABNORMAL,
1305 };
1306
1307 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1308
1309 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1310 ASSERT_EQ(spiObj, nullptr);
1311 }
1312
1313 // spi gen keyPair
1314 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest006, TestSize.Level0)
1315 {
1316 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1317 HcfAsyKeyGenParams params = {
1318 .algo = HCF_ALG_RSA,
1319 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1320 .primes = 0,
1321 };
1322
1323 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1324
1325 EXPECT_EQ(res, HCF_SUCCESS);
1326 EXPECT_NE(spiObj, nullptr);
1327
1328 HcfKeyPair *keyPair = nullptr;
1329 res = spiObj->engineGenerateKeyPair((HcfAsyKeyGeneratorSpi *)&g_obj, &keyPair);
1330 EXPECT_EQ(res, HCF_INVALID_PARAMS);
1331 HcfObjDestroy(spiObj);
1332 }
1333
1334 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest007, TestSize.Level0)
1335 {
1336 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1337 HcfAsyKeyGenParams params = {
1338 .algo = HCF_ALG_RSA,
1339 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1340 .primes = 0,
1341 };
1342
1343 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1344
1345 EXPECT_EQ(res, HCF_SUCCESS);
1346 EXPECT_NE(spiObj, nullptr);
1347
1348 res = spiObj->engineGenerateKeyPair(nullptr, nullptr);
1349 EXPECT_EQ(res, HCF_INVALID_PARAMS);
1350 HcfObjDestroy(spiObj);
1351 }
1352
1353 // spi destroy
1354 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest008, TestSize.Level0)
1355 {
1356 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1357 HcfAsyKeyGenParams params = {
1358 .algo = HCF_ALG_RSA,
1359 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1360 .primes = 0,
1361 };
1362
1363 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1364
1365 EXPECT_EQ(res, HCF_SUCCESS);
1366 EXPECT_NE(spiObj, nullptr);
1367
1368 spiObj->base.destroy(nullptr);
1369 HcfObjDestroy(spiObj);
1370 }
1371
1372 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest009, TestSize.Level0)
1373 {
1374 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1375 HcfAsyKeyGenParams params = {
1376 .algo = HCF_ALG_RSA,
1377 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1378 .primes = 0,
1379 };
1380
1381 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1382
1383 EXPECT_EQ(res, HCF_SUCCESS);
1384 EXPECT_NE(spiObj, nullptr);
1385
1386 spiObj->base.destroy(&g_obj);
1387 HcfObjDestroy(spiObj);
1388 }
1389
1390 // spi convert
1391 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest010, TestSize.Level0)
1392 {
1393 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1394 HcfAsyKeyGenParams params = {
1395 .algo = HCF_ALG_RSA,
1396 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1397 .primes = 0,
1398 };
1399
1400 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1401
1402 EXPECT_EQ(res, HCF_SUCCESS);
1403 EXPECT_NE(spiObj, nullptr);
1404
1405 HcfKeyPair *keyPair = nullptr;
1406 res = spiObj->engineConvertKey((HcfAsyKeyGeneratorSpi *)&g_obj,
1407 nullptr, &g_rsaCorrectPubKeyBlob, nullptr, &keyPair);
1408 HcfObjDestroy(spiObj);
1409 }
1410
1411 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest011, TestSize.Level0)
1412 {
1413 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1414 HcfAsyKeyGenParams params = {
1415 .algo = HCF_ALG_RSA,
1416 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1417 .primes = 0,
1418 };
1419
1420 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1421
1422 EXPECT_EQ(res, HCF_SUCCESS);
1423 EXPECT_NE(spiObj, nullptr);
1424
1425 HcfKeyPair *keyPair = nullptr;
1426 res = spiObj->engineConvertKey(nullptr, nullptr, &g_rsaCorrectPubKeyBlob, nullptr, &keyPair);
1427 HcfObjDestroy(spiObj);
1428 }
1429
1430 // spi destroy
1431 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest012, TestSize.Level0)
1432 {
1433 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1434 HcfAsyKeyGenParams params = {
1435 .algo = HCF_ALG_RSA,
1436 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1437 .primes = 0,
1438 };
1439
1440 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1441
1442 EXPECT_EQ(res, HCF_SUCCESS);
1443 EXPECT_NE(spiObj, nullptr);
1444
1445 spiObj->base.destroy(nullptr);
1446 EXPECT_NE(spiObj, nullptr);
1447 HcfObjDestroy(spiObj);
1448 }
1449
1450 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest013, TestSize.Level0)
1451 {
1452 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1453 HcfAsyKeyGenParams params = {
1454 .algo = HCF_ALG_RSA,
1455 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1456 .primes = 0,
1457 };
1458
1459 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1460
1461 EXPECT_EQ(res, HCF_SUCCESS);
1462 EXPECT_NE(spiObj, nullptr);
1463
1464 spiObj->base.destroy(&g_obj);
1465 EXPECT_NE(spiObj, nullptr);
1466 HcfObjDestroy(spiObj);
1467 }
1468 }
1469