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 }
474
475 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest512, TestSize.Level0)
476 {
477 HcfAsyKeyGenerator *generator = nullptr;
478 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048|PRIMES_2", &generator);
479
480 HcfKeyPair *keyPair = nullptr;
481 res = generator->generateKeyPair(generator, nullptr, &keyPair);
482
483 HcfPubKey *pubKey = keyPair->pubKey;
484 HcfPriKey *priKey = keyPair->priKey;
485
486 res = pubKey->base.getEncoded((HcfKey *)priKey, nullptr);
487 EXPECT_NE(res, HCF_SUCCESS);
488 res = priKey->base.getEncoded((HcfKey *)pubKey, nullptr);
489 EXPECT_NE(res, HCF_SUCCESS);
490 HcfObjDestroy(keyPair);
491 HcfObjDestroy(generator);
492 }
493
494 // generateKeyPair conrrect case: use getEncode encode pubkey and prikey
495 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest520, TestSize.Level0)
496 {
497 HcfAsyKeyGenerator *generator = nullptr;
498 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
499 EXPECT_EQ(res, HCF_SUCCESS);
500 EXPECT_NE(generator, nullptr);
501
502 HcfKeyPair *keyPair = nullptr;
503 res = generator->generateKeyPair(generator, nullptr, &keyPair);
504 EXPECT_EQ(res, HCF_SUCCESS);
505 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
506 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
507 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
508 EXPECT_EQ(res, HCF_SUCCESS);
509 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
510 EXPECT_EQ(res, HCF_SUCCESS);
511
512 HcfKeyPair *dupKeyPair = nullptr;
513 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
514 EXPECT_EQ(res, HCF_SUCCESS);
515 HcfPubKey *pubkey = dupKeyPair->pubKey;
516 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
517 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
518 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
519 EXPECT_NE(pubkey->base.base.destroy, nullptr);
520
521 HcfPriKey *prikey = dupKeyPair->priKey;
522 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
523 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
524 EXPECT_NE(prikey->base.base.getClass(), nullptr);
525 EXPECT_NE(prikey->base.base.destroy, nullptr);
526 EXPECT_NE(prikey->clearMem, nullptr);
527
528 HcfFree(pubKeyBlob.data);
529 HcfFree(priKeyBlob.data);
530 HcfObjDestroy(generator);
531 HcfObjDestroy(keyPair);
532 HcfObjDestroy(dupKeyPair);
533 }
534
535 // Test muliti getEncoded and convertKey
536 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest521, TestSize.Level0)
537 {
538 HcfAsyKeyGenerator *generator = nullptr;
539 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
540 EXPECT_EQ(res, HCF_SUCCESS);
541 EXPECT_NE(generator, nullptr);
542
543 HcfKeyPair *keyPair = nullptr;
544 res = generator->generateKeyPair(generator, nullptr, &keyPair);
545 EXPECT_EQ(res, HCF_SUCCESS);
546 HcfBlob pubKeyBlob1 = {.data = nullptr, .len = 0};
547 HcfBlob priKeyBlob1 = {.data = nullptr, .len = 0};
548 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob1);
549 EXPECT_EQ(res, HCF_SUCCESS);
550 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob1);
551 EXPECT_EQ(res, HCF_SUCCESS);
552
553 HcfKeyPair *dupKeyPair1 = nullptr;
554 res = generator->convertKey(generator, nullptr, &pubKeyBlob1, &priKeyBlob1, &dupKeyPair1);
555 EXPECT_EQ(res, HCF_SUCCESS);
556
557 HcfKeyPair *dupKeyPair2 = nullptr;
558 HcfBlob pubKeyBlob2 = {.data = nullptr, .len = 0};
559 HcfBlob priKeyBlob2 = {.data = nullptr, .len = 0};
560 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob2);
561 EXPECT_EQ(res, HCF_SUCCESS);
562 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob2);
563 EXPECT_EQ(res, HCF_SUCCESS);
564 res = generator->convertKey(generator, nullptr, &pubKeyBlob2, &priKeyBlob2, &dupKeyPair2);
565 EXPECT_EQ(res, HCF_SUCCESS);
566
567 HcfFree(pubKeyBlob1.data);
568 HcfFree(priKeyBlob1.data);
569 HcfFree(pubKeyBlob2.data);
570 HcfFree(priKeyBlob2.data);
571 HcfObjDestroy(generator);
572 HcfObjDestroy(keyPair);
573 HcfObjDestroy(dupKeyPair1);
574 HcfObjDestroy(dupKeyPair2);
575 }
576
577 // generateKeyPair correct case: getEncode encode pubkey
578 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest530, TestSize.Level0)
579 {
580 HcfAsyKeyGenerator *generator = nullptr;
581 HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072|PRIMES_3", &generator);
582 EXPECT_EQ(res, HCF_SUCCESS);
583 EXPECT_NE(generator, nullptr);
584
585 HcfKeyPair *keyPair = nullptr;
586 res = generator->generateKeyPair(generator, nullptr, &keyPair);
587 EXPECT_EQ(res, HCF_SUCCESS);
588 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
589 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
590 EXPECT_EQ(res, HCF_SUCCESS);
591
592 HcfKeyPair *dupKeyPair = nullptr;
593 res = generator->convertKey(generator, nullptr, &pubKeyBlob, nullptr, &dupKeyPair);
594 EXPECT_EQ(res, HCF_SUCCESS);
595 HcfPubKey *pubkey = dupKeyPair->pubKey;
596 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
597 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
598 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
599 EXPECT_NE(pubkey->base.base.destroy, nullptr);
600
601 HcfFree(pubKeyBlob.data);
602 HcfObjDestroy(generator);
603 HcfObjDestroy(keyPair);
604 HcfObjDestroy(dupKeyPair);
605 }
606
607 // generateKeyPair correct case: getEncode encode prikey
608 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest540, TestSize.Level0)
609 {
610 HcfAsyKeyGenerator *generator = nullptr;
611 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
612 EXPECT_EQ(res, HCF_SUCCESS);
613 EXPECT_NE(generator, nullptr);
614
615 HcfKeyPair *keyPair = nullptr;
616 res = generator->generateKeyPair(generator, nullptr, &keyPair);
617 EXPECT_EQ(res, HCF_SUCCESS);
618 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
619 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
620 EXPECT_EQ(res, HCF_SUCCESS);
621
622 HcfKeyPair *dupKeyPair = nullptr;
623 res = generator->convertKey(generator, nullptr, nullptr, &priKeyBlob, &dupKeyPair);
624 EXPECT_EQ(res, HCF_SUCCESS);
625
626 HcfPriKey *prikey = dupKeyPair->priKey;
627 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
628 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
629 EXPECT_NE(prikey->base.base.getClass(), nullptr);
630 EXPECT_NE(prikey->base.base.destroy, nullptr);
631 EXPECT_NE(prikey->clearMem, nullptr);
632
633 HcfFree(priKeyBlob.data);
634 HcfObjDestroy(generator);
635 HcfObjDestroy(keyPair);
636 HcfObjDestroy(dupKeyPair);
637 }
638
639 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest550, TestSize.Level0)
640 {
641 HcfAsyKeyGenerator *generator = nullptr;
642 HcfResult res = HcfAsyKeyGeneratorCreate("RSA3072", &generator);
643 EXPECT_EQ(res, HCF_SUCCESS);
644 EXPECT_NE(generator, nullptr);
645
646 HcfKeyPair *keyPair = nullptr;
647 res = generator->generateKeyPair(generator, nullptr, &keyPair);
648 EXPECT_EQ(res, HCF_SUCCESS);
649 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
650 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
651 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
652 EXPECT_EQ(res, HCF_SUCCESS);
653 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
654 EXPECT_EQ(res, HCF_SUCCESS);
655
656 HcfKeyPair *dupKeyPair = nullptr;
657 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
658 EXPECT_EQ(res, HCF_SUCCESS);
659 HcfPubKey *pubkey = dupKeyPair->pubKey;
660 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
661 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
662 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
663 EXPECT_NE(pubkey->base.base.destroy, nullptr);
664
665 HcfPriKey *prikey = dupKeyPair->priKey;
666 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
667 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
668 EXPECT_NE(prikey->base.base.getClass(), nullptr);
669 EXPECT_NE(prikey->base.base.destroy, nullptr);
670 EXPECT_NE(prikey->clearMem, nullptr);
671
672 HcfFree(pubKeyBlob.data);
673 HcfFree(priKeyBlob.data);
674 HcfObjDestroy(generator);
675 HcfObjDestroy(keyPair);
676 HcfObjDestroy(dupKeyPair);
677 }
678
679 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest560, TestSize.Level0)
680 {
681 HcfAsyKeyGenerator *generator = nullptr;
682 HcfResult res = HcfAsyKeyGeneratorCreate("RSA4096", &generator);
683 EXPECT_EQ(res, HCF_SUCCESS);
684 EXPECT_NE(generator, nullptr);
685
686 HcfKeyPair *keyPair = nullptr;
687 res = generator->generateKeyPair(generator, nullptr, &keyPair);
688 EXPECT_EQ(res, HCF_SUCCESS);
689 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
690 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
691 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
692 EXPECT_EQ(res, HCF_SUCCESS);
693 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
694 EXPECT_EQ(res, HCF_SUCCESS);
695
696 HcfKeyPair *dupKeyPair = nullptr;
697 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
698 EXPECT_EQ(res, HCF_SUCCESS);
699 HcfPubKey *pubkey = dupKeyPair->pubKey;
700 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
701 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
702 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
703 EXPECT_NE(pubkey->base.base.destroy, nullptr);
704
705 HcfPriKey *prikey = dupKeyPair->priKey;
706 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
707 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
708 EXPECT_NE(prikey->base.base.getClass(), nullptr);
709 EXPECT_NE(prikey->base.base.destroy, nullptr);
710 EXPECT_NE(prikey->clearMem, nullptr);
711
712 HcfFree(pubKeyBlob.data);
713 HcfFree(priKeyBlob.data);
714 HcfObjDestroy(generator);
715 HcfObjDestroy(keyPair);
716 HcfObjDestroy(dupKeyPair);
717 }
718
719 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest570, TestSize.Level0)
720 {
721 HcfAsyKeyGenerator *generator = nullptr;
722 HcfResult res = HcfAsyKeyGeneratorCreate("RSA512", &generator);
723 EXPECT_EQ(res, HCF_SUCCESS);
724 EXPECT_NE(generator, nullptr);
725
726 HcfKeyPair *keyPair = nullptr;
727 res = generator->generateKeyPair(generator, nullptr, &keyPair);
728 EXPECT_EQ(res, HCF_SUCCESS);
729 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
730 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
731 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
732 EXPECT_EQ(res, HCF_SUCCESS);
733 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
734 EXPECT_EQ(res, HCF_SUCCESS);
735
736 HcfKeyPair *dupKeyPair = nullptr;
737 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
738 EXPECT_EQ(res, HCF_SUCCESS);
739 HcfPubKey *pubkey = dupKeyPair->pubKey;
740 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
741 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
742 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
743 EXPECT_NE(pubkey->base.base.destroy, nullptr);
744
745 HcfPriKey *prikey = dupKeyPair->priKey;
746 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
747 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
748 EXPECT_NE(prikey->base.base.getClass(), nullptr);
749 EXPECT_NE(prikey->base.base.destroy, nullptr);
750 EXPECT_NE(prikey->clearMem, nullptr);
751
752 HcfFree(pubKeyBlob.data);
753 HcfFree(priKeyBlob.data);
754 HcfObjDestroy(generator);
755 HcfObjDestroy(keyPair);
756 HcfObjDestroy(dupKeyPair);
757 }
758
759 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest580, TestSize.Level0)
760 {
761 HcfAsyKeyGenerator *generator = nullptr;
762 HcfResult res = HcfAsyKeyGeneratorCreate("RSA768", &generator);
763 EXPECT_EQ(res, HCF_SUCCESS);
764 EXPECT_NE(generator, nullptr);
765
766 HcfKeyPair *keyPair = nullptr;
767 res = generator->generateKeyPair(generator, nullptr, &keyPair);
768 EXPECT_EQ(res, HCF_SUCCESS);
769 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
770 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
771 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
772 EXPECT_EQ(res, HCF_SUCCESS);
773 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
774 EXPECT_EQ(res, HCF_SUCCESS);
775
776 HcfKeyPair *dupKeyPair = nullptr;
777 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
778 EXPECT_EQ(res, HCF_SUCCESS);
779 HcfPubKey *pubkey = dupKeyPair->pubKey;
780 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
781 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
782 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
783 EXPECT_NE(pubkey->base.base.destroy, nullptr);
784
785 HcfPriKey *prikey = dupKeyPair->priKey;
786 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
787 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
788 EXPECT_NE(prikey->base.base.getClass(), nullptr);
789 EXPECT_NE(prikey->base.base.destroy, nullptr);
790 EXPECT_NE(prikey->clearMem, nullptr);
791
792 HcfFree(pubKeyBlob.data);
793 HcfFree(priKeyBlob.data);
794 HcfObjDestroy(generator);
795 HcfObjDestroy(keyPair);
796 HcfObjDestroy(dupKeyPair);
797 }
798
799 // generateKeyPair incorrect case: user wrong ECC class, ignore in this version
800 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest600, TestSize.Level0)
801 {
802 HcfAsyKeyGenerator *eccGenerator = nullptr;
803 HcfResult res = HcfAsyKeyGeneratorCreate("ECC224", &eccGenerator);
804 EXPECT_EQ(res, HCF_SUCCESS);
805 EXPECT_NE(eccGenerator, nullptr);
806
807 HcfAsyKeyGenerator *rsaGenerator = nullptr;
808 res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
809 EXPECT_EQ(res, HCF_SUCCESS);
810 EXPECT_NE(rsaGenerator, nullptr);
811
812 HcfKeyPair *keyPair = nullptr;
813 // innerkit调用,在framework层中,指针无法判断eccGenerator调用的self,所以keypair实际不为空。
814 // 会调到ecc的generatekeyPair,生成ecc的keypair对象(class为ecckeypair)
815 // 对js调用,能否防范?
816 res = rsaGenerator->generateKeyPair(eccGenerator, nullptr, &keyPair);
817 // 经验证,keypair不为空,且为ecc的keypair
818 EXPECT_NE(keyPair, nullptr);
819 EXPECT_STREQ("OPENSSL.ECC.KEY_PAIR", keyPair->base.getClass());
820
821 HcfObjDestroy(keyPair);
822 HcfObjDestroy(eccGenerator);
823 HcfObjDestroy(rsaGenerator);
824 }
825
826 // generateKeyPair incorrect case: generator class is null
827 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest610, TestSize.Level0)
828 {
829 HcfAsyKeyGenerator *rsaGenerator = nullptr;
830 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
831 EXPECT_EQ(res, HCF_SUCCESS);
832 EXPECT_NE(rsaGenerator, nullptr);
833
834 HcfKeyPair *keyPair = nullptr;
835 res = rsaGenerator->generateKeyPair(nullptr, nullptr, &keyPair);
836 EXPECT_NE(res, HCF_SUCCESS);
837 EXPECT_EQ(keyPair, nullptr);
838
839 HcfObjDestroy(rsaGenerator);
840 }
841
842 // generateKeyPair incorrect case: keypair is null
843 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest620, TestSize.Level0)
844 {
845 HcfAsyKeyGenerator *rsaGenerator = nullptr;
846 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
847 EXPECT_EQ(res, HCF_SUCCESS);
848 EXPECT_NE(rsaGenerator, nullptr);
849
850 res = rsaGenerator->generateKeyPair(rsaGenerator, nullptr, nullptr);
851 EXPECT_NE(res, HCF_SUCCESS);
852
853 HcfObjDestroy(rsaGenerator);
854 }
855
856 // convertKey correct case
857 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest700, TestSize.Level0)
858 {
859 HcfAsyKeyGenerator *generator = nullptr;
860 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &generator);
861 EXPECT_EQ(res, HCF_SUCCESS);
862 EXPECT_NE(generator, nullptr);
863
864 HcfKeyPair *keyPair = nullptr;
865 res = generator->generateKeyPair(generator, nullptr, &keyPair);
866 EXPECT_EQ(res, HCF_SUCCESS);
867 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
868 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
869 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
870 EXPECT_EQ(res, HCF_SUCCESS);
871 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
872 EXPECT_EQ(res, HCF_SUCCESS);
873
874 HcfKeyPair *dupKeyPair = nullptr;
875 res = generator->convertKey(generator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
876 EXPECT_EQ(res, HCF_SUCCESS);
877 HcfPubKey *pubkey = dupKeyPair->pubKey;
878 EXPECT_NE(pubkey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
879 EXPECT_NE(pubkey->base.getFormat((HcfKey *)pubkey), nullptr);
880 EXPECT_NE(pubkey->base.base.getClass(), nullptr);
881 EXPECT_NE(pubkey->base.base.destroy, nullptr);
882
883 HcfPriKey *prikey = dupKeyPair->priKey;
884 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
885 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
886 EXPECT_NE(prikey->base.base.getClass(), nullptr);
887 EXPECT_NE(prikey->base.base.destroy, nullptr);
888 EXPECT_NE(prikey->clearMem, nullptr);
889
890 HcfFree(pubKeyBlob.data);
891 HcfFree(priKeyBlob.data);
892 HcfObjDestroy(generator);
893 HcfObjDestroy(keyPair);
894 HcfObjDestroy(dupKeyPair);
895 }
896
897 // convertKey incorrect case: input ECC class
898 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest710, TestSize.Level0)
899 {
900 HcfAsyKeyGenerator *eccGenerator = nullptr;
901 HcfResult res = HcfAsyKeyGeneratorCreate("ECC224", &eccGenerator);
902 EXPECT_EQ(res, HCF_SUCCESS);
903 EXPECT_NE(eccGenerator, nullptr);
904
905 HcfAsyKeyGenerator *rsaGenerator = nullptr;
906 res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
907 EXPECT_EQ(res, HCF_SUCCESS);
908 EXPECT_NE(rsaGenerator, nullptr);
909
910 HcfKeyPair *dupKeyPair = nullptr;
911 res = rsaGenerator->convertKey(eccGenerator, nullptr, nullptr, nullptr, &dupKeyPair);
912 EXPECT_NE(res, HCF_SUCCESS);
913 EXPECT_EQ(dupKeyPair, nullptr);
914
915 HcfObjDestroy(eccGenerator);
916 HcfObjDestroy(rsaGenerator);
917 }
918
919
920 // convertKey incorrect case: input null generator
921 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest720, TestSize.Level0)
922 {
923 HcfAsyKeyGenerator *rsaGenerator = nullptr;
924 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
925 EXPECT_EQ(res, HCF_SUCCESS);
926 EXPECT_NE(rsaGenerator, nullptr);
927
928 HcfKeyPair *keyPair = nullptr;
929 res = rsaGenerator->generateKeyPair(rsaGenerator, nullptr, &keyPair);
930 EXPECT_EQ(res, HCF_SUCCESS);
931 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
932 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
933 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
934 EXPECT_EQ(res, HCF_SUCCESS);
935 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
936 EXPECT_EQ(res, HCF_SUCCESS);
937
938 HcfKeyPair *dupKeyPair = nullptr;
939 res = rsaGenerator->convertKey(nullptr, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
940 EXPECT_NE(res, HCF_SUCCESS);
941 EXPECT_EQ(dupKeyPair, nullptr);
942
943 HcfFree(pubKeyBlob.data);
944 HcfFree(priKeyBlob.data);
945 HcfObjDestroy(keyPair);
946 HcfObjDestroy(rsaGenerator);
947 }
948
949 // convertKey incorrect case: input null dupkeypair
950 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest730, TestSize.Level0)
951 {
952 HcfAsyKeyGenerator *rsaGenerator = nullptr;
953 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
954 EXPECT_EQ(res, HCF_SUCCESS);
955 EXPECT_NE(rsaGenerator, nullptr);
956
957 HcfKeyPair *keyPair = nullptr;
958 res = rsaGenerator->generateKeyPair(rsaGenerator, nullptr, &keyPair);
959 EXPECT_EQ(res, HCF_SUCCESS);
960 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
961 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
962 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
963 EXPECT_EQ(res, HCF_SUCCESS);
964 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
965 EXPECT_EQ(res, HCF_SUCCESS);
966
967 res = rsaGenerator->convertKey(rsaGenerator, nullptr, &pubKeyBlob, &priKeyBlob, nullptr);
968 EXPECT_NE(res, HCF_SUCCESS);
969
970 HcfFree(pubKeyBlob.data);
971 HcfFree(priKeyBlob.data);
972 HcfObjDestroy(keyPair);
973 HcfObjDestroy(rsaGenerator);
974 }
975
976 // convertKey incorrect case: input blob with null data
977 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest740, TestSize.Level0)
978 {
979 HcfAsyKeyGenerator *rsaGenerator = nullptr;
980 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
981 EXPECT_EQ(res, HCF_SUCCESS);
982 EXPECT_NE(rsaGenerator, nullptr);
983
984 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
985 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
986
987 HcfKeyPair *dupKeyPair = nullptr;
988 res = rsaGenerator->convertKey(rsaGenerator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
989 EXPECT_NE(res, HCF_SUCCESS);
990 EXPECT_EQ(dupKeyPair, nullptr);
991
992 HcfObjDestroy(rsaGenerator);
993 }
994
995 // convertKey incorrect case: input blob with zero len
996 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest750, TestSize.Level0)
997 {
998 HcfAsyKeyGenerator *rsaGenerator = nullptr;
999 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &rsaGenerator);
1000 EXPECT_EQ(res, HCF_SUCCESS);
1001 EXPECT_NE(rsaGenerator, nullptr);
1002
1003 HcfBlob pubKeyBlob = {.data = g_rsaCorrectPkData, .len = 0};
1004 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
1005
1006 HcfKeyPair *dupKeyPair = nullptr;
1007 res = rsaGenerator->convertKey(rsaGenerator, nullptr, &pubKeyBlob, &priKeyBlob, &dupKeyPair);
1008 EXPECT_NE(res, HCF_SUCCESS);
1009 EXPECT_EQ(dupKeyPair, nullptr);
1010
1011 HcfObjDestroy(rsaGenerator);
1012 }
1013
1014 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest760, TestSize.Level0)
1015 {
1016 HcfAsyKeyGenerator *rsaGenerator = nullptr;
1017 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &rsaGenerator);
1018 EXPECT_EQ(res, HCF_SUCCESS);
1019 EXPECT_NE(rsaGenerator, nullptr);
1020
1021 HcfBlob priKeyBlob = {.data = g_rsaCorrectPkData, .len = 0};
1022
1023 HcfKeyPair *dupKeyPair = nullptr;
1024 res = rsaGenerator->convertKey(rsaGenerator, nullptr, nullptr, &priKeyBlob, &dupKeyPair);
1025 EXPECT_NE(res, HCF_SUCCESS);
1026 EXPECT_EQ(dupKeyPair, nullptr);
1027
1028 HcfObjDestroy(rsaGenerator);
1029 }
1030
1031 // convertKey incorrect case: input blob with error data
1032 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest770, TestSize.Level0)
1033 {
1034 HcfAsyKeyGenerator *rsaGenerator = nullptr;
1035 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &rsaGenerator);
1036 EXPECT_EQ(res, HCF_SUCCESS);
1037 EXPECT_NE(rsaGenerator, nullptr);
1038
1039 HcfKeyPair *dupKeyPair = nullptr;
1040 res = rsaGenerator->convertKey(rsaGenerator, nullptr, &g_rsaErrorPubKeyBlob, &g_rsaErrorPubKeyBlob, &dupKeyPair);
1041 EXPECT_NE(res, HCF_SUCCESS);
1042 EXPECT_EQ(dupKeyPair, nullptr);
1043
1044 HcfObjDestroy(rsaGenerator);
1045 }
1046
1047 // Incorrect case: use wrong bits or primes
1048 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest800, TestSize.Level0)
1049 {
1050 HcfAsyKeyGenerator *generator = nullptr;
1051 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1111", &generator);
1052 EXPECT_NE(res, HCF_SUCCESS);
1053 EXPECT_EQ(generator, nullptr);
1054 HcfObjDestroy(generator);
1055 }
1056
1057 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest810, TestSize.Level0)
1058 {
1059 HcfAsyKeyGenerator *generator = nullptr;
1060 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|Primessf", &generator);
1061 EXPECT_NE(res, HCF_SUCCESS);
1062 EXPECT_EQ(generator, nullptr);
1063 HcfObjDestroy(generator);
1064 }
1065
1066 // 测试异常释放
1067 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest820, TestSize.Level0)
1068 {
1069 HcfAsyKeyGenerator *generator = nullptr;
1070 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|Primessf", &generator);
1071 EXPECT_NE(res, HCF_SUCCESS);
1072 EXPECT_EQ(generator, nullptr);
1073 HcfObjDestroy(generator);
1074 }
1075
1076 // prikey clear mem
1077 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest830, TestSize.Level0)
1078 {
1079 HcfAsyKeyGenerator *generator = nullptr;
1080 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
1081 EXPECT_EQ(res, HCF_SUCCESS);
1082 EXPECT_NE(generator, nullptr);
1083
1084 HcfKeyPair *keyPair = nullptr;
1085 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1086
1087 keyPair->priKey->clearMem(nullptr);
1088
1089 HcfObjDestroy(generator);
1090 HcfObjDestroy(keyPair);
1091 }
1092
1093 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest840, TestSize.Level0)
1094 {
1095 HcfAsyKeyGenerator *generator = nullptr;
1096 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
1097 EXPECT_EQ(res, HCF_SUCCESS);
1098 EXPECT_NE(generator, nullptr);
1099
1100 HcfKeyPair *keyPair = nullptr;
1101 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1102
1103 keyPair->priKey->clearMem((HcfPriKey *)keyPair->pubKey);
1104
1105 HcfObjDestroy(generator);
1106 HcfObjDestroy(keyPair);
1107 }
1108
1109 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest850, TestSize.Level0)
1110 {
1111 HcfAsyKeyGenerator *generator = nullptr;
1112 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024", &generator);
1113 EXPECT_EQ(res, HCF_SUCCESS);
1114 EXPECT_NE(generator, nullptr);
1115
1116 HcfKeyPair *keyPair = nullptr;
1117 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1118
1119 keyPair->priKey->clearMem(keyPair->priKey);
1120
1121 HcfObjDestroy(generator);
1122 HcfObjDestroy(keyPair);
1123 }
1124
1125 // correct case: use destroy function inclass(not HcfObjDestroy)
1126 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest900, TestSize.Level0)
1127 {
1128 HcfAsyKeyGenerator *generator = nullptr;
1129 HcfResult res = HcfAsyKeyGeneratorCreate("RSA1024|PRIMES_2", &generator);
1130
1131 HcfKeyPair *keyPair = nullptr;
1132 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1133
1134 HcfPubKey *pubkey = keyPair->pubKey;
1135 HcfPriKey *prikey = keyPair->priKey;
1136
1137 EXPECT_EQ(pubkey->base.getFormat((HcfKey *)prikey), nullptr);
1138 EXPECT_EQ(prikey->base.getFormat((HcfKey *)pubkey), nullptr);
1139
1140 EXPECT_EQ(pubkey->base.getFormat(nullptr), nullptr);
1141 EXPECT_EQ(prikey->base.getFormat(nullptr), nullptr);
1142
1143 EXPECT_EQ(pubkey->base.getAlgorithm((HcfKey *)prikey), nullptr);
1144 EXPECT_EQ(prikey->base.getAlgorithm((HcfKey *)pubkey), nullptr);
1145
1146 EXPECT_EQ(pubkey->base.getAlgorithm(nullptr), nullptr);
1147 EXPECT_EQ(prikey->base.getAlgorithm(nullptr), nullptr);
1148
1149 prikey->base.base.destroy(nullptr);
1150 pubkey->base.base.destroy(nullptr);
1151 keyPair->base.destroy(nullptr);
1152
1153 prikey->base.base.destroy((HcfObjectBase *)pubkey);
1154 pubkey->base.base.destroy((HcfObjectBase *)prikey);
1155 keyPair->base.destroy((HcfObjectBase *)prikey);
1156
1157 HcfObjDestroy(keyPair);
1158 HcfObjDestroy(generator);
1159 }
1160
1161 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest901, TestSize.Level0)
1162 {
1163 HcfAsyKeyGenerator *generator = nullptr;
1164 HcfResult res = HcfAsyKeyGeneratorCreate("RSA", &generator);
1165 EXPECT_NE(res, HCF_SUCCESS);
1166 EXPECT_EQ(generator, nullptr);
1167 HcfObjDestroy(generator);
1168 }
1169
1170 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest902, TestSize.Level0)
1171 {
1172 HcfAsyKeyGenerator *generator = nullptr;
1173 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &generator);
1174 EXPECT_EQ(res, HCF_SUCCESS);
1175 EXPECT_NE(generator, nullptr);
1176
1177 HcfKeyPair *keyPair = nullptr;
1178 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1179 EXPECT_EQ(res, HCF_SUCCESS);
1180 HcfBlob pubKeyBlob = {.data = nullptr, .len = 0};
1181 HcfBlob priKeyBlob = {.data = nullptr, .len = 0};
1182 res = keyPair->pubKey->base.getEncoded((HcfKey *)keyPair->pubKey, &pubKeyBlob);
1183 EXPECT_EQ(res, HCF_SUCCESS);
1184 res = keyPair->priKey->base.getEncoded((HcfKey *)keyPair->priKey, &priKeyBlob);
1185 EXPECT_EQ(res, HCF_SUCCESS);
1186
1187 HcfKeyPair *dupKeyPair = nullptr;
1188 res = generator->convertKey(generator, nullptr, nullptr, &priKeyBlob, &dupKeyPair);
1189 EXPECT_EQ(res, HCF_SUCCESS);
1190
1191 HcfPriKey *prikey = dupKeyPair->priKey;
1192 EXPECT_NE(prikey->base.getAlgorithm((HcfKey *)prikey), nullptr);
1193 EXPECT_NE(prikey->base.getFormat((HcfKey *)prikey), nullptr);
1194 EXPECT_NE(prikey->base.base.getClass(), nullptr);
1195 EXPECT_NE(prikey->base.base.destroy, nullptr);
1196 EXPECT_NE(prikey->clearMem, nullptr);
1197
1198 HcfFree(pubKeyBlob.data);
1199 HcfFree(priKeyBlob.data);
1200 HcfObjDestroy(generator);
1201 HcfObjDestroy(keyPair);
1202 HcfObjDestroy(dupKeyPair);
1203 }
1204
1205 // test RSA key pair get
1206 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest903, TestSize.Level0)
1207 {
1208 HcfAsyKeyGenerator *generator = nullptr;
1209 HcfResult res = HcfAsyKeyGeneratorCreate("RSA2048", &generator);
1210 EXPECT_EQ(res, HCF_SUCCESS);
1211 EXPECT_NE(generator, nullptr);
1212
1213 HcfKeyPair *keyPair = nullptr;
1214 res = generator->generateKeyPair(generator, nullptr, &keyPair);
1215 EXPECT_EQ(res, HCF_SUCCESS);
1216 EXPECT_NE(keyPair, nullptr);
1217 HcfPriKey *priKey = keyPair->priKey;
1218 HcfPubKey *pubKey = keyPair->pubKey;
1219
1220 HcfBigInteger returnPubN = { .data = nullptr, .len = 0 };
1221 HcfBigInteger returnPriN = { .data = nullptr, .len = 0 };
1222 HcfBigInteger returnE = { .data = nullptr, .len = 0 };
1223 HcfBigInteger returnD = { .data = nullptr, .len = 0 };
1224 res = priKey->getAsyKeySpecBigInteger(priKey, RSA_N_BN, &returnPriN);
1225 EXPECT_EQ(res, HCF_SUCCESS);
1226 res = priKey->getAsyKeySpecBigInteger(priKey, RSA_SK_BN, &returnD);
1227 EXPECT_EQ(res, HCF_SUCCESS);
1228 res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_N_BN, &returnPubN);
1229 EXPECT_EQ(res, HCF_SUCCESS);
1230 res = pubKey->getAsyKeySpecBigInteger(pubKey, RSA_PK_BN, &returnE);
1231 EXPECT_EQ(res, HCF_SUCCESS);
1232
1233 HcfFree(returnPubN.data);
1234 HcfFree(returnPriN.data);
1235 HcfFree(returnD.data);
1236 HcfFree(returnE.data);
1237 HcfObjDestroy(generator);
1238 HcfObjDestroy(keyPair);
1239 }
1240
1241 // spi create
1242 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest001, TestSize.Level0)
1243 {
1244 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1245 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(nullptr, &spiObj);
1246
1247 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1248 ASSERT_EQ(spiObj, nullptr);
1249 }
1250
1251 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest002, TestSize.Level0)
1252 {
1253 HcfAsyKeyGenParams params = {
1254 .algo = HCF_ALG_RSA,
1255 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1256 .primes = 0,
1257 };
1258
1259 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, nullptr);
1260
1261 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1262 }
1263
1264 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest003, TestSize.Level0)
1265 {
1266 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1267 HcfAsyKeyGenParams params = {
1268 .algo = HCF_ALG_RSA,
1269 .bits = OPENSSL_RSA_KEY_SIZE_ABNORMAL,
1270 .primes = 0,
1271 };
1272
1273 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1274
1275 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1276 ASSERT_EQ(spiObj, nullptr);
1277 }
1278
1279 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest004, TestSize.Level0)
1280 {
1281 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1282 HcfAsyKeyGenParams params = {
1283 .algo = HCF_ALG_RSA,
1284 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1285 .primes = OPENSSL_RSA_PRIMES_ABNORMAL,
1286 };
1287
1288 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1289
1290 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1291 ASSERT_EQ(spiObj, nullptr);
1292 }
1293
1294 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest005, TestSize.Level0)
1295 {
1296 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1297 HcfAsyKeyGenParams params = {
1298 .algo = HCF_ALG_RSA,
1299 .bits = OPENSSL_RSA_KEY_SIZE_4096,
1300 .primes = OPENSSL_RSA_PRIMES_ABNORMAL,
1301 };
1302
1303 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1304
1305 ASSERT_EQ(res, HCF_INVALID_PARAMS);
1306 ASSERT_EQ(spiObj, nullptr);
1307 }
1308
1309 // spi gen keyPair
1310 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest006, TestSize.Level0)
1311 {
1312 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1313 HcfAsyKeyGenParams params = {
1314 .algo = HCF_ALG_RSA,
1315 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1316 .primes = 0,
1317 };
1318
1319 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1320
1321 EXPECT_EQ(res, HCF_SUCCESS);
1322 EXPECT_NE(spiObj, nullptr);
1323
1324 HcfKeyPair *keyPair = nullptr;
1325 res = spiObj->engineGenerateKeyPair((HcfAsyKeyGeneratorSpi *)&g_obj, &keyPair);
1326 EXPECT_EQ(res, HCF_INVALID_PARAMS);
1327 HcfObjDestroy(spiObj);
1328 }
1329
1330 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest007, TestSize.Level0)
1331 {
1332 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1333 HcfAsyKeyGenParams params = {
1334 .algo = HCF_ALG_RSA,
1335 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1336 .primes = 0,
1337 };
1338
1339 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1340
1341 EXPECT_EQ(res, HCF_SUCCESS);
1342 EXPECT_NE(spiObj, nullptr);
1343
1344 res = spiObj->engineGenerateKeyPair(nullptr, nullptr);
1345 EXPECT_EQ(res, HCF_INVALID_PARAMS);
1346 HcfObjDestroy(spiObj);
1347 }
1348
1349 // spi destroy
1350 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest008, TestSize.Level0)
1351 {
1352 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1353 HcfAsyKeyGenParams params = {
1354 .algo = HCF_ALG_RSA,
1355 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1356 .primes = 0,
1357 };
1358
1359 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1360
1361 EXPECT_EQ(res, HCF_SUCCESS);
1362 EXPECT_NE(spiObj, nullptr);
1363
1364 spiObj->base.destroy(nullptr);
1365 HcfObjDestroy(spiObj);
1366 }
1367
1368 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest009, TestSize.Level0)
1369 {
1370 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1371 HcfAsyKeyGenParams params = {
1372 .algo = HCF_ALG_RSA,
1373 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1374 .primes = 0,
1375 };
1376
1377 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1378
1379 EXPECT_EQ(res, HCF_SUCCESS);
1380 EXPECT_NE(spiObj, nullptr);
1381
1382 spiObj->base.destroy(&g_obj);
1383 HcfObjDestroy(spiObj);
1384 }
1385
1386 // spi convert
1387 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest010, TestSize.Level0)
1388 {
1389 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1390 HcfAsyKeyGenParams params = {
1391 .algo = HCF_ALG_RSA,
1392 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1393 .primes = 0,
1394 };
1395
1396 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1397
1398 EXPECT_EQ(res, HCF_SUCCESS);
1399 EXPECT_NE(spiObj, nullptr);
1400
1401 HcfKeyPair *keyPair = nullptr;
1402 res = spiObj->engineConvertKey((HcfAsyKeyGeneratorSpi *)&g_obj,
1403 nullptr, &g_rsaCorrectPubKeyBlob, nullptr, &keyPair);
1404 HcfObjDestroy(spiObj);
1405 }
1406
1407 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest011, TestSize.Level0)
1408 {
1409 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1410 HcfAsyKeyGenParams params = {
1411 .algo = HCF_ALG_RSA,
1412 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1413 .primes = 0,
1414 };
1415
1416 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1417
1418 EXPECT_EQ(res, HCF_SUCCESS);
1419 EXPECT_NE(spiObj, nullptr);
1420
1421 HcfKeyPair *keyPair = nullptr;
1422 res = spiObj->engineConvertKey(nullptr, nullptr, &g_rsaCorrectPubKeyBlob, nullptr, &keyPair);
1423 HcfObjDestroy(spiObj);
1424 }
1425
1426 // spi destroy
1427 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest012, TestSize.Level0)
1428 {
1429 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1430 HcfAsyKeyGenParams params = {
1431 .algo = HCF_ALG_RSA,
1432 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1433 .primes = 0,
1434 };
1435
1436 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1437
1438 EXPECT_EQ(res, HCF_SUCCESS);
1439 EXPECT_NE(spiObj, nullptr);
1440
1441 spiObj->base.destroy(nullptr);
1442 EXPECT_NE(spiObj, nullptr);
1443 HcfObjDestroy(spiObj);
1444 }
1445
1446 HWTEST_F(CryptoRsaAsyKeyGeneratorTest, CryptoRsaAsyKeyGeneratorTest013, TestSize.Level0)
1447 {
1448 HcfAsyKeyGeneratorSpi *spiObj = nullptr;
1449 HcfAsyKeyGenParams params = {
1450 .algo = HCF_ALG_RSA,
1451 .bits = OPENSSL_RSA_KEY_SIZE_2048,
1452 .primes = 0,
1453 };
1454
1455 HcfResult res = HcfAsyKeyGeneratorSpiRsaCreate(¶ms, &spiObj);
1456
1457 EXPECT_EQ(res, HCF_SUCCESS);
1458 EXPECT_NE(spiObj, nullptr);
1459
1460 spiObj->base.destroy(&g_obj);
1461 EXPECT_NE(spiObj, nullptr);
1462 HcfObjDestroy(spiObj);
1463 }
1464 }
1465