1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "hks_pbkdf2_derive_part1_test.h"
17 #include "hks_pbkdf2_derive_test_common.h"
18
19 #include <gtest/gtest.h>
20
21 using namespace testing::ext;
22 namespace Unittest::Pbkdf2Derive {
23 class HksPbkdf2DerivePart1Test : public testing::Test {
24 public:
25 static void SetUpTestCase(void);
26
27 static void TearDownTestCase(void);
28
29 void SetUp();
30
31 void TearDown();
32 };
33
SetUpTestCase(void)34 void HksPbkdf2DerivePart1Test::SetUpTestCase(void)
35 {
36 }
37
TearDownTestCase(void)38 void HksPbkdf2DerivePart1Test::TearDownTestCase(void)
39 {
40 }
41
SetUp()42 void HksPbkdf2DerivePart1Test::SetUp()
43 {
44 }
45
TearDown()46 void HksPbkdf2DerivePart1Test::TearDown()
47 {
48 }
49
50 uint8_t g_saltdata1[16] = {0};
51
52 static struct HksParam g_genParams001[] = {
53 {
54 .tag = HKS_TAG_ALGORITHM,
55 .uint32Param = HKS_ALG_AES
56 }, {
57 .tag = HKS_TAG_PURPOSE,
58 .uint32Param = HKS_KEY_PURPOSE_DERIVE
59 }, {
60 .tag = HKS_TAG_DIGEST,
61 .uint32Param = HKS_DIGEST_SHA256
62 }, {
63 .tag = HKS_TAG_KEY_SIZE,
64 .uint32Param = 256
65 }
66 };
67 static struct HksParam g_pbkdf2Params001[] = {
68 {
69 .tag = HKS_TAG_ALGORITHM,
70 .uint32Param = HKS_ALG_PBKDF2
71 }, {
72 .tag = HKS_TAG_PURPOSE,
73 .uint32Param = HKS_KEY_PURPOSE_DERIVE
74 }, {
75 .tag = HKS_TAG_DIGEST,
76 .uint32Param = HKS_DIGEST_SHA256
77 }, {
78 .tag = HKS_TAG_KEY_SIZE,
79 .uint32Param = 256
80 }, {
81 .tag = HKS_TAG_ITERATION,
82 .int32Param = DERIVE_ITERATION
83 }, {
84 .tag = HKS_TAG_SALT,
85 .blob = {
86 sizeof(g_saltdata1),
87 (uint8_t *)g_saltdata1
88 }
89 }, {
90 .tag = HKS_TAG_DERIVE_KEY_SIZE,
91 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_32
92 }
93 };
94 static struct HksParam g_pbkdf2FinishParams001[] = {
95 {
96 .tag = HKS_TAG_KEY_STORAGE_FLAG,
97 .uint32Param = HKS_STORAGE_PERSISTENT
98 }, {
99 .tag = HKS_TAG_KEY_ALIAS,
100 .blob = {
101 strlen("HksPBKDF2DeriveKeyAliasTest001_2"),
102 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest001_2"
103 }
104 }, {
105 .tag = HKS_TAG_ALGORITHM,
106 .uint32Param = HKS_ALG_AES
107 }, {
108 .tag = HKS_TAG_KEY_SIZE,
109 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_32
110 }, {
111 .tag = HKS_TAG_PURPOSE,
112 .uint32Param = HKS_KEY_PURPOSE_DERIVE
113 }, {
114 .tag = HKS_TAG_DIGEST,
115 .uint32Param = HKS_DIGEST_SHA256
116 }
117 };
118 static struct HksParam g_genParams002[] = {
119 {
120 .tag = HKS_TAG_ALGORITHM,
121 .uint32Param = HKS_ALG_AES
122 }, {
123 .tag = HKS_TAG_PURPOSE,
124 .uint32Param = HKS_KEY_PURPOSE_DERIVE
125 }, {
126 .tag = HKS_TAG_DIGEST,
127 .uint32Param = HKS_DIGEST_SHA256
128 }, {
129 .tag = HKS_TAG_KEY_SIZE,
130 .uint32Param = HKS_AES_KEY_SIZE_192
131 }
132 };
133 static struct HksParam g_pbkdf2Params002[] = {
134 {
135 .tag = HKS_TAG_ALGORITHM,
136 .uint32Param = HKS_ALG_PBKDF2
137 }, {
138 .tag = HKS_TAG_PURPOSE,
139 .uint32Param = HKS_KEY_PURPOSE_DERIVE
140 }, {
141 .tag = HKS_TAG_DIGEST,
142 .uint32Param = HKS_DIGEST_SHA256
143 }, {
144 .tag = HKS_TAG_ITERATION,
145 .int32Param = DERIVE_ITERATION
146 }, {
147 .tag = HKS_TAG_SALT,
148 .blob = {
149 sizeof(g_saltdata1),
150 (uint8_t *)g_saltdata1
151 }
152 }, {
153 .tag = HKS_TAG_DERIVE_KEY_SIZE,
154 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_32
155 }
156 };
157 static struct HksParam g_pbkdf2FinishParams002[] = {
158 {
159 .tag = HKS_TAG_KEY_STORAGE_FLAG,
160 .uint32Param = HKS_STORAGE_PERSISTENT
161 }, {
162 .tag = HKS_TAG_KEY_ALIAS,
163 .blob = {
164 strlen("HksPBKDF2DeriveKeyAliasTest002_2"),
165 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest002_2"
166 }
167 }, {
168 .tag = HKS_TAG_ALGORITHM,
169 .uint32Param = HKS_ALG_AES
170 }, {
171 .tag = HKS_TAG_KEY_SIZE,
172 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_32
173 }, {
174 .tag = HKS_TAG_PURPOSE,
175 .uint32Param = HKS_KEY_PURPOSE_DERIVE
176 }, {
177 .tag = HKS_TAG_DIGEST,
178 .uint32Param = HKS_DIGEST_SHA256
179 }
180 };
181 static struct HksParam g_genParams003[] = {
182 {
183 .tag = HKS_TAG_ALGORITHM,
184 .uint32Param = HKS_ALG_AES
185 }, {
186 .tag = HKS_TAG_PURPOSE,
187 .uint32Param = HKS_KEY_PURPOSE_DERIVE
188 }, {
189 .tag = HKS_TAG_DIGEST,
190 .uint32Param = HKS_DIGEST_SHA256
191 }, {
192 .tag = HKS_TAG_KEY_SIZE,
193 .uint32Param = HKS_AES_KEY_SIZE_256
194 }
195 };
196 static struct HksParam g_pbkdf2Params003[] = {
197 {
198 .tag = HKS_TAG_ALGORITHM,
199 .uint32Param = HKS_ALG_PBKDF2
200 }, {
201 .tag = HKS_TAG_PURPOSE,
202 .uint32Param = HKS_KEY_PURPOSE_DERIVE
203 }, {
204 .tag = HKS_TAG_DIGEST,
205 .uint32Param = HKS_DIGEST_SHA256
206 }, {
207 .tag = HKS_TAG_ITERATION,
208 .int32Param = DERIVE_ITERATION
209 }, {
210 .tag = HKS_TAG_SALT,
211 .blob = {
212 sizeof(g_saltdata1),
213 (uint8_t *)g_saltdata1
214 }
215 }, {
216 .tag = HKS_TAG_DERIVE_KEY_SIZE,
217 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_32
218 }
219 };
220 static struct HksParam g_pbkdf2FinishParams003[] = {
221 {
222 .tag = HKS_TAG_KEY_STORAGE_FLAG,
223 .uint32Param = HKS_STORAGE_PERSISTENT
224 }, {
225 .tag = HKS_TAG_KEY_ALIAS,
226 .blob = {
227 strlen("HksPBKDF2DeriveKeyAliasTest003_2"),
228 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest003_2"
229 }
230 }, {
231 .tag = HKS_TAG_ALGORITHM,
232 .uint32Param = HKS_ALG_AES
233 }, {
234 .tag = HKS_TAG_KEY_SIZE,
235 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_32
236 }, {
237 .tag = HKS_TAG_PURPOSE,
238 .uint32Param = HKS_KEY_PURPOSE_DERIVE
239 }, {
240 .tag = HKS_TAG_DIGEST,
241 .uint32Param = HKS_DIGEST_SHA256
242 }
243 };
244 static struct HksParam g_genParams004[] = {
245 {
246 .tag = HKS_TAG_ALGORITHM,
247 .uint32Param = HKS_ALG_AES
248 }, {
249 .tag = HKS_TAG_PURPOSE,
250 .uint32Param = HKS_KEY_PURPOSE_DERIVE
251 }, {
252 .tag = HKS_TAG_DIGEST,
253 .uint32Param = HKS_DIGEST_SHA384
254 }, {
255 .tag = HKS_TAG_KEY_SIZE,
256 .uint32Param = HKS_AES_KEY_SIZE_128
257 }
258 };
259 static struct HksParam g_pbkdf2Params004[] = {
260 {
261 .tag = HKS_TAG_ALGORITHM,
262 .uint32Param = HKS_ALG_PBKDF2
263 }, {
264 .tag = HKS_TAG_PURPOSE,
265 .uint32Param = HKS_KEY_PURPOSE_DERIVE
266 }, {
267 .tag = HKS_TAG_DIGEST,
268 .uint32Param = HKS_DIGEST_SHA384
269 }, {
270 .tag = HKS_TAG_ITERATION,
271 .int32Param = DERIVE_ITERATION
272 }, {
273 .tag = HKS_TAG_SALT,
274 .blob = {
275 sizeof(g_saltdata1),
276 (uint8_t *)g_saltdata1
277 }
278 }, {
279 .tag = HKS_TAG_DERIVE_KEY_SIZE,
280 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_48
281 }
282 };
283 static struct HksParam g_pbkdf2FinishParams004[] = {
284 {
285 .tag = HKS_TAG_KEY_STORAGE_FLAG,
286 .uint32Param = HKS_STORAGE_PERSISTENT
287 }, {
288 .tag = HKS_TAG_KEY_ALIAS,
289 .blob = {
290 strlen("HksPBKDF2DeriveKeyAliasTest004_2"),
291 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest004_2"
292 }
293 }, {
294 .tag = HKS_TAG_ALGORITHM,
295 .uint32Param = HKS_ALG_AES
296 }, {
297 .tag = HKS_TAG_KEY_SIZE,
298 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_48
299 }, {
300 .tag = HKS_TAG_PURPOSE,
301 .uint32Param = HKS_KEY_PURPOSE_DERIVE
302 }, {
303 .tag = HKS_TAG_DIGEST,
304 .uint32Param = HKS_DIGEST_SHA384
305 }
306 };
307 static struct HksParam g_genParams005[] = {
308 {
309 .tag = HKS_TAG_ALGORITHM,
310 .uint32Param = HKS_ALG_AES
311 }, {
312 .tag = HKS_TAG_PURPOSE,
313 .uint32Param = HKS_KEY_PURPOSE_DERIVE
314 }, {
315 .tag = HKS_TAG_DIGEST,
316 .uint32Param = HKS_DIGEST_SHA384
317 }, {
318 .tag = HKS_TAG_KEY_SIZE,
319 .uint32Param = HKS_AES_KEY_SIZE_192
320 }
321 };
322 static struct HksParam g_pbkdf2Params005[] = {
323 {
324 .tag = HKS_TAG_ALGORITHM,
325 .uint32Param = HKS_ALG_PBKDF2
326 }, {
327 .tag = HKS_TAG_PURPOSE,
328 .uint32Param = HKS_KEY_PURPOSE_DERIVE
329 }, {
330 .tag = HKS_TAG_DIGEST,
331 .uint32Param = HKS_DIGEST_SHA384
332 }, {
333 .tag = HKS_TAG_ITERATION,
334 .int32Param = DERIVE_ITERATION
335 }, {
336 .tag = HKS_TAG_SALT,
337 .blob = {
338 sizeof(g_saltdata1),
339 (uint8_t *)g_saltdata1
340 }
341 }, {
342 .tag = HKS_TAG_DERIVE_KEY_SIZE,
343 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_48
344 }
345 };
346 static struct HksParam g_pbkdf2FinishParams005[] = {
347 {
348 .tag = HKS_TAG_KEY_STORAGE_FLAG,
349 .uint32Param = HKS_STORAGE_PERSISTENT
350 }, {
351 .tag = HKS_TAG_KEY_ALIAS,
352 .blob = {
353 strlen("HksPBKDF2DeriveKeyAliasTest005_2"),
354 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest005_2"
355 }
356 }, {
357 .tag = HKS_TAG_ALGORITHM,
358 .uint32Param = HKS_ALG_AES
359 }, {
360 .tag = HKS_TAG_KEY_SIZE,
361 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_48
362 }, {
363 .tag = HKS_TAG_PURPOSE,
364 .uint32Param = HKS_KEY_PURPOSE_DERIVE
365 }, {
366 .tag = HKS_TAG_DIGEST,
367 .uint32Param = HKS_DIGEST_SHA384
368 }
369 };
370 static struct HksParam g_genParams006[] = {
371 {
372 .tag = HKS_TAG_ALGORITHM,
373 .uint32Param = HKS_ALG_AES
374 }, {
375 .tag = HKS_TAG_PURPOSE,
376 .uint32Param = HKS_KEY_PURPOSE_DERIVE
377 }, {
378 .tag = HKS_TAG_DIGEST,
379 .uint32Param = HKS_DIGEST_SHA384
380 }, {
381 .tag = HKS_TAG_KEY_SIZE,
382 .uint32Param = HKS_AES_KEY_SIZE_256}
383 };
384 static struct HksParam g_pbkdf2Params006[] = {
385 {
386 .tag = HKS_TAG_ALGORITHM,
387 .uint32Param = HKS_ALG_PBKDF2
388 }, {
389 .tag = HKS_TAG_PURPOSE,
390 .uint32Param = HKS_KEY_PURPOSE_DERIVE
391 }, {
392 .tag = HKS_TAG_DIGEST,
393 .uint32Param = HKS_DIGEST_SHA384
394 }, {
395 .tag = HKS_TAG_ITERATION,
396 .int32Param = DERIVE_ITERATION
397 }, {
398 .tag = HKS_TAG_SALT,
399 .blob = {
400 sizeof(g_saltdata1),
401 (uint8_t *)g_saltdata1
402 }
403 }, {
404 .tag = HKS_TAG_DERIVE_KEY_SIZE,
405 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_48
406 }
407 };
408 static struct HksParam g_pbkdf2FinishParams006[] = {
409 {
410 .tag = HKS_TAG_KEY_STORAGE_FLAG,
411 .uint32Param = HKS_STORAGE_PERSISTENT
412 }, {
413 .tag = HKS_TAG_KEY_ALIAS,
414 .blob = {
415 strlen("HksPBKDF2DeriveKeyAliasTest006_2Finish"),
416 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest006_2Finish"
417 }
418 }, {
419 .tag = HKS_TAG_ALGORITHM,
420 .uint32Param = HKS_ALG_AES
421 }, {
422 .tag = HKS_TAG_KEY_SIZE,
423 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_48
424 }, {
425 .tag = HKS_TAG_PURPOSE,
426 .uint32Param = HKS_KEY_PURPOSE_DERIVE
427 }, {
428 .tag = HKS_TAG_DIGEST,
429 .uint32Param = HKS_DIGEST_SHA384
430 }
431 };
432 static struct HksParam g_genParams007[] = {
433 {
434 .tag = HKS_TAG_ALGORITHM,
435 .uint32Param = HKS_ALG_AES
436 }, {
437 .tag = HKS_TAG_PURPOSE,
438 .uint32Param = HKS_KEY_PURPOSE_DERIVE
439 }, {
440 .tag = HKS_TAG_DIGEST,
441 .uint32Param = HKS_DIGEST_SHA512
442 }, {
443 .tag = HKS_TAG_KEY_SIZE,
444 .uint32Param = HKS_AES_KEY_SIZE_128
445 }
446 };
447 static struct HksParam g_pbkdf2Params007[] = {
448 {
449 .tag = HKS_TAG_ALGORITHM,
450 .uint32Param = HKS_ALG_PBKDF2
451 }, {
452 .tag = HKS_TAG_PURPOSE,
453 .uint32Param = HKS_KEY_PURPOSE_DERIVE
454 }, {
455 .tag = HKS_TAG_DIGEST,
456 .uint32Param = HKS_DIGEST_SHA512
457 }, {
458 .tag = HKS_TAG_ITERATION,
459 .int32Param = DERIVE_ITERATION
460 }, {
461 .tag = HKS_TAG_SALT,
462 .blob = {
463 sizeof(g_saltdata1),
464 (uint8_t *)g_saltdata1
465 }
466 }, {
467 .tag = HKS_TAG_DERIVE_KEY_SIZE,
468 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_64
469 }
470 };
471 static struct HksParam g_pbkdf2FinishParams007[] = {
472 {
473 .tag = HKS_TAG_KEY_STORAGE_FLAG,
474 .uint32Param = HKS_STORAGE_PERSISTENT
475 }, {
476 .tag = HKS_TAG_KEY_ALIAS,
477 .blob = {
478 strlen("HksPBKDF2DeriveKeyAliasTest007_2Finish"),
479 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest007_2Finish"
480 }
481 }, {
482 .tag = HKS_TAG_ALGORITHM,
483 .uint32Param = HKS_ALG_AES
484 }, {
485 .tag = HKS_TAG_KEY_SIZE,
486 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_64
487 }, {
488 .tag = HKS_TAG_PURPOSE,
489 .uint32Param = HKS_KEY_PURPOSE_DERIVE
490 }, {
491 .tag = HKS_TAG_DIGEST,
492 .uint32Param = HKS_DIGEST_SHA512
493 }
494 };
495 static struct HksParam g_genParams008[] = {
496 {
497 .tag = HKS_TAG_ALGORITHM,
498 .uint32Param = HKS_ALG_AES
499 }, {
500 .tag = HKS_TAG_PURPOSE,
501 .uint32Param = HKS_KEY_PURPOSE_DERIVE
502 }, {
503 .tag = HKS_TAG_DIGEST,
504 .uint32Param = HKS_DIGEST_SHA512
505 }, {
506 .tag = HKS_TAG_KEY_SIZE,
507 .uint32Param = HKS_AES_KEY_SIZE_192
508 }
509 };
510 static struct HksParam g_pbkdf2Params008[] = {
511 {
512 .tag = HKS_TAG_ALGORITHM,
513 .uint32Param = HKS_ALG_PBKDF2
514 }, {
515 .tag = HKS_TAG_PURPOSE,
516 .uint32Param = HKS_KEY_PURPOSE_DERIVE
517 }, {
518 .tag = HKS_TAG_DIGEST,
519 .uint32Param = HKS_DIGEST_SHA512
520 }, {
521 .tag = HKS_TAG_ITERATION,
522 .int32Param = DERIVE_ITERATION
523 }, {
524 .tag = HKS_TAG_SALT,
525 .blob = {
526 sizeof(g_saltdata1),
527 (uint8_t *)g_saltdata1
528 }
529 }, {
530 .tag = HKS_TAG_DERIVE_KEY_SIZE,
531 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_64
532 }
533 };
534 static struct HksParam g_pbkdf2FinishParams008[] = {
535 {
536 .tag = HKS_TAG_KEY_STORAGE_FLAG,
537 .uint32Param = HKS_STORAGE_PERSISTENT
538 }, {
539 .tag = HKS_TAG_KEY_ALIAS,
540 .blob = {
541 strlen("HksPBKDF2DeriveKeyAliasTest008_2Finish"),
542 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest008_2Finish"
543 }
544 }, {
545 .tag = HKS_TAG_ALGORITHM,
546 .uint32Param = HKS_ALG_AES
547 }, {
548 .tag = HKS_TAG_KEY_SIZE,
549 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_64
550 }, {
551 .tag = HKS_TAG_PURPOSE,
552 .uint32Param = HKS_KEY_PURPOSE_DERIVE
553 }, {
554 .tag = HKS_TAG_DIGEST,
555 .uint32Param = HKS_DIGEST_SHA512
556 }
557 };
558 static struct HksParam g_genParams009[] = {
559 {
560 .tag = HKS_TAG_ALGORITHM,
561 .uint32Param = HKS_ALG_AES
562 }, {
563 .tag = HKS_TAG_PURPOSE,
564 .uint32Param = HKS_KEY_PURPOSE_DERIVE
565 }, {
566 .tag = HKS_TAG_DIGEST,
567 .uint32Param = HKS_DIGEST_SHA512
568 }, {
569 .tag = HKS_TAG_KEY_SIZE,
570 .uint32Param = HKS_AES_KEY_SIZE_256
571 }
572 };
573 static struct HksParam g_pbkdf2Params009[] = {
574 {
575 .tag = HKS_TAG_ALGORITHM,
576 .uint32Param = HKS_ALG_PBKDF2
577 }, {
578 .tag = HKS_TAG_PURPOSE,
579 .uint32Param = HKS_KEY_PURPOSE_DERIVE
580 }, {
581 .tag = HKS_TAG_DIGEST,
582 .uint32Param = HKS_DIGEST_SHA512
583 }, {
584 .tag = HKS_TAG_ITERATION,
585 .int32Param = DERIVE_ITERATION
586 }, {
587 .tag = HKS_TAG_SALT,
588 .blob = {
589 sizeof(g_saltdata1),
590 (uint8_t *)g_saltdata1
591 }
592 }, {
593 .tag = HKS_TAG_DERIVE_KEY_SIZE,
594 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_64
595 }
596 };
597 static struct HksParam g_pbkdf2FinishParams009[] = {
598 {
599 .tag = HKS_TAG_KEY_STORAGE_FLAG,
600 .uint32Param = HKS_STORAGE_PERSISTENT
601 }, {
602 .tag = HKS_TAG_KEY_ALIAS,
603 .blob = {
604 strlen("HksPBKDF2DeriveKeyAliasTest009_2Finish"),
605 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest009_2Finish"
606 }
607 }, {
608 .tag = HKS_TAG_ALGORITHM,
609 .uint32Param = HKS_ALG_AES
610 }, {
611 .tag = HKS_TAG_KEY_SIZE,
612 .uint32Param = Unittest::Pbkdf2Derive::DERIVE_KEY_SIZE_64
613 }, {
614 .tag = HKS_TAG_PURPOSE,
615 .uint32Param = HKS_KEY_PURPOSE_DERIVE
616 }, {
617 .tag = HKS_TAG_DIGEST,
618 .uint32Param = HKS_DIGEST_SHA512
619 }
620 };
621
622 /**
623 * @tc.name: HksPbkdf2DerivePart1Test.HksPbkdf2Derive001
624 * @tc.desc: alg-PBKDF2 pur-Derive dig-SHA256.
625 * @tc.type: FUNC
626 */
627 HWTEST_F(HksPbkdf2DerivePart1Test, HksPbkdf2Derive001, TestSize.Level0)
628 {
629 struct HksBlob keyAlias = { strlen("HksPBKDF2DeriveKeyAliasTest001_1"),
630 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest001_1" };
631 int32_t ret = HKS_FAILURE;
632 /* 1. Generate Key */
633 struct HksParamSet *genParamSet = nullptr;
634 ret = InitParamSet(&genParamSet, g_genParams001, sizeof(g_genParams001)/sizeof(HksParam));
635 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
636
637 /* 2. PBKDF2 Three Stage */
638 struct HksParamSet *pbkdf2ParamSet = nullptr;
639 struct HksParamSet *pbkdf2FinishParamSet = nullptr;
640 ret = InitParamSet(&pbkdf2ParamSet, g_pbkdf2Params001, sizeof(g_pbkdf2Params001)/sizeof(HksParam));
641 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
642 struct HksParam *saltParam = nullptr;
643 HksGetParam(pbkdf2ParamSet, HKS_TAG_SALT, &saltParam);
644 ret = HksGenerateRandom(NULL, &(saltParam->blob));
645 EXPECT_EQ(ret, HKS_SUCCESS) << "GenerateRandom failed.";
646 // Finish paramset
647 ret = InitParamSet(&pbkdf2FinishParamSet, g_pbkdf2FinishParams001,
648 sizeof(g_pbkdf2FinishParams001)/sizeof(HksParam));
649 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
650
651 // init-update-final
652 HksPbkdf2DeriveTestNormalCase(keyAlias, genParamSet, pbkdf2ParamSet, pbkdf2FinishParamSet);
653 /* 3. Delete Key */
654 ret = HksDeleteKey(&keyAlias, genParamSet);
655 EXPECT_EQ(ret, HKS_SUCCESS) << "DeleteKey failed.";
656 struct HksBlob deleteKeyAlias = { .size = strlen("HksPBKDF2DeriveKeyAliasTest001_2"),
657 .data = (uint8_t *)"HksPBKDF2DeriveKeyAliasTest001_2"};
658 ret = HksDeleteKey(&deleteKeyAlias, NULL);
659 EXPECT_EQ(ret, HKS_SUCCESS) << "Delete Final Key failed.";
660
661 HksFreeParamSet(&genParamSet);
662 HksFreeParamSet(&pbkdf2ParamSet);
663 HksFreeParamSet(&pbkdf2FinishParamSet);
664 }
665
666 /**
667 * @tc.name: HksPbkdf2DerivePart1Test.HksPbkdf2Derive002
668 * @tc.desc: alg-PBKDF2 pur-Derive dig-SHA256.
669 * @tc.type: FUNC
670 */
671 HWTEST_F(HksPbkdf2DerivePart1Test, HksPbkdf2Derive002, TestSize.Level0)
672 {
673 struct HksBlob keyAlias = { strlen("HksPBKDF2DeriveKeyAliasTest002_1"),
674 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest002_1" };
675 int32_t ret = HKS_FAILURE;
676 /* 1. Generate Key */
677 struct HksParamSet *genParamSet = nullptr;
678 ret = InitParamSet(&genParamSet, g_genParams002, sizeof(g_genParams002)/sizeof(HksParam));
679 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
680
681 /* 2. PBKDF2 Three Stage */
682 struct HksParamSet *pbkdf2ParamSet = nullptr;
683 struct HksParamSet *pbkdf2FinishParamSet = nullptr;
684 ret = InitParamSet(&pbkdf2ParamSet, g_pbkdf2Params002, sizeof(g_pbkdf2Params002)/sizeof(HksParam));
685 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
686 struct HksParam *saltParam = nullptr;
687 HksGetParam(pbkdf2ParamSet, HKS_TAG_SALT, &saltParam);
688 ret = HksGenerateRandom(NULL, &(saltParam->blob));
689 EXPECT_EQ(ret, HKS_SUCCESS) << "GenerateRandom failed.";
690 // Finish paramset
691 ret = InitParamSet(&pbkdf2FinishParamSet, g_pbkdf2FinishParams002,
692 sizeof(g_pbkdf2FinishParams002)/sizeof(HksParam));
693 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
694
695 // init-update-final
696 HksPbkdf2DeriveTestNormalCase(keyAlias, genParamSet, pbkdf2ParamSet, pbkdf2FinishParamSet);
697 /* 3. Delete Key */
698 ret = HksDeleteKey(&keyAlias, genParamSet);
699 EXPECT_EQ(ret, HKS_SUCCESS) << "DeleteKey failed.";
700 struct HksBlob deleteKeyAlias = { .size = strlen("HksPBKDF2DeriveKeyAliasTest002_2"),
701 .data = (uint8_t *)"HksPBKDF2DeriveKeyAliasTest002_2"};
702 ret = HksDeleteKey(&deleteKeyAlias, NULL);
703 EXPECT_EQ(ret, HKS_SUCCESS) << "Delete Final Key failed.";
704
705 HksFreeParamSet(&genParamSet);
706 HksFreeParamSet(&pbkdf2ParamSet);
707 HksFreeParamSet(&pbkdf2FinishParamSet);
708 }
709
710 /**
711 * @tc.name: HksPbkdf2DerivePart1Test.HksPbkdf2Derive003
712 * @tc.desc: alg-PBKDF2 pur-Derive dig-SHA256.
713 * @tc.type: FUNC
714 */
715 HWTEST_F(HksPbkdf2DerivePart1Test, HksPbkdf2Derive003, TestSize.Level0)
716 {
717 struct HksBlob keyAlias = { strlen("HksPBKDF2DeriveKeyAliasTest003_1"),
718 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest003_1" };
719 int32_t ret = HKS_FAILURE;
720 /* 1. Generate Key */
721 struct HksParamSet *genParamSet = nullptr;
722 ret = InitParamSet(&genParamSet, g_genParams003, sizeof(g_genParams003)/sizeof(HksParam));
723 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
724
725 /* 2. PBKDF2 Three Stage */
726 struct HksParamSet *pbkdf2ParamSet = nullptr;
727 struct HksParamSet *pbkdf2FinishParamSet = nullptr;
728 ret = InitParamSet(&pbkdf2ParamSet, g_pbkdf2Params003, sizeof(g_pbkdf2Params003)/sizeof(HksParam));
729 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
730 struct HksParam *saltParam = nullptr;
731 HksGetParam(pbkdf2ParamSet, HKS_TAG_SALT, &saltParam);
732 ret = HksGenerateRandom(NULL, &(saltParam->blob));
733 EXPECT_EQ(ret, HKS_SUCCESS) << "GenerateRandom failed.";
734 // Finish paramset
735 ret = InitParamSet(&pbkdf2FinishParamSet, g_pbkdf2FinishParams003,
736 sizeof(g_pbkdf2FinishParams003)/sizeof(HksParam));
737 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
738
739 // init-update-final
740 HksPbkdf2DeriveTestNormalCase(keyAlias, genParamSet, pbkdf2ParamSet, pbkdf2FinishParamSet);
741 /* 3. Delete Key */
742 ret = HksDeleteKey(&keyAlias, genParamSet);
743 EXPECT_EQ(ret, HKS_SUCCESS) << "DeleteKey failed.";
744 struct HksBlob deleteKeyAlias = { .size = strlen("HksPBKDF2DeriveKeyAliasTest003_2"),
745 .data = (uint8_t *)"HksPBKDF2DeriveKeyAliasTest003_2"};
746 ret = HksDeleteKey(&deleteKeyAlias, NULL);
747 EXPECT_EQ(ret, HKS_SUCCESS) << "Delete Final Key failed.";
748
749 HksFreeParamSet(&genParamSet);
750 HksFreeParamSet(&pbkdf2ParamSet);
751 HksFreeParamSet(&pbkdf2FinishParamSet);
752 }
753
754 /**
755 * @tc.name: HksPbkdf2DerivePart1Test.HksPbkdf2Derive004
756 * @tc.desc: alg-PBKDF2 pur-Derive dig-SHA256.
757 * @tc.type: FUNC
758 */
759 HWTEST_F(HksPbkdf2DerivePart1Test, HksPbkdf2Derive004, TestSize.Level0)
760 {
761 struct HksBlob keyAlias = { strlen("HksPBKDF2DeriveKeyAliasTest004_1"),
762 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest004_1" };
763 int32_t ret = HKS_FAILURE;
764 /* 1. Generate Key */
765 struct HksParamSet *genParamSet = nullptr;
766 ret = InitParamSet(&genParamSet, g_genParams004, sizeof(g_genParams004)/sizeof(HksParam));
767 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
768
769 /* 2. PBKDF2 Three Stage */
770 struct HksParamSet *pbkdf2ParamSet = nullptr;
771 struct HksParamSet *pbkdf2FinishParamSet = nullptr;
772 ret = InitParamSet(&pbkdf2ParamSet, g_pbkdf2Params004, sizeof(g_pbkdf2Params004)/sizeof(HksParam));
773 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
774 struct HksParam *saltParam = nullptr;
775 HksGetParam(pbkdf2ParamSet, HKS_TAG_SALT, &saltParam);
776 ret = HksGenerateRandom(NULL, &(saltParam->blob));
777 EXPECT_EQ(ret, HKS_SUCCESS) << "GenerateRandom failed.";
778 // Finish paramset
779 ret = InitParamSet(&pbkdf2FinishParamSet, g_pbkdf2FinishParams004,
780 sizeof(g_pbkdf2FinishParams004)/sizeof(HksParam));
781 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
782
783 // init-update-final
784 HksPbkdf2DeriveTestNormalCase(keyAlias, genParamSet, pbkdf2ParamSet, pbkdf2FinishParamSet);
785 /* 3. Delete Key */
786 ret = HksDeleteKey(&keyAlias, genParamSet);
787 EXPECT_EQ(ret, HKS_SUCCESS) << "DeleteKey failed.";
788 struct HksBlob deleteKeyAlias = { .size = strlen("HksPBKDF2DeriveKeyAliasTest004_2"),
789 .data = (uint8_t *)"HksPBKDF2DeriveKeyAliasTest004_2"};
790 ret = HksDeleteKey(&deleteKeyAlias, NULL);
791 EXPECT_EQ(ret, HKS_SUCCESS) << "Delete Final Key failed.";
792
793 HksFreeParamSet(&genParamSet);
794 HksFreeParamSet(&pbkdf2ParamSet);
795 HksFreeParamSet(&pbkdf2FinishParamSet);
796 }
797
798 /**
799 * @tc.name: HksPbkdf2DerivePart1Test.HksPbkdf2Derive005
800 * @tc.desc: alg-PBKDF2 pur-Derive dig-SHA256.
801 * @tc.type: FUNC
802 */
803 HWTEST_F(HksPbkdf2DerivePart1Test, HksPbkdf2Derive005, TestSize.Level0)
804 {
805 struct HksBlob keyAlias = { strlen("HksPBKDF2DeriveKeyAliasTest005_1"),
806 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest005_1" };
807 int32_t ret = HKS_FAILURE;
808 /* 1. Generate Key */
809 struct HksParamSet *genParamSet = nullptr;
810 ret = InitParamSet(&genParamSet, g_genParams005, sizeof(g_genParams005)/sizeof(HksParam));
811 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
812
813 /* 2. PBKDF2 Three Stage */
814 struct HksParamSet *pbkdf2ParamSet = nullptr;
815 struct HksParamSet *pbkdf2FinishParamSet = nullptr;
816 ret = InitParamSet(&pbkdf2ParamSet, g_pbkdf2Params005, sizeof(g_pbkdf2Params005)/sizeof(HksParam));
817 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
818 struct HksParam *saltParam = nullptr;
819 HksGetParam(pbkdf2ParamSet, HKS_TAG_SALT, &saltParam);
820 ret = HksGenerateRandom(NULL, &(saltParam->blob));
821 EXPECT_EQ(ret, HKS_SUCCESS) << "GenerateRandom failed.";
822 // Finish paramset
823 ret = InitParamSet(&pbkdf2FinishParamSet, g_pbkdf2FinishParams005,
824 sizeof(g_pbkdf2FinishParams005)/sizeof(HksParam));
825 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
826
827 // init-update-final
828 HksPbkdf2DeriveTestNormalCase(keyAlias, genParamSet, pbkdf2ParamSet, pbkdf2FinishParamSet);
829 /* 3. Delete Key */
830 ret = HksDeleteKey(&keyAlias, genParamSet);
831 EXPECT_EQ(ret, HKS_SUCCESS) << "DeleteKey failed.";
832 struct HksBlob deleteKeyAlias = { .size = strlen("HksPBKDF2DeriveKeyAliasTest005_2"),
833 .data = (uint8_t *)"HksPBKDF2DeriveKeyAliasTest005_2"};
834 ret = HksDeleteKey(&deleteKeyAlias, NULL);
835 EXPECT_EQ(ret, HKS_SUCCESS) << "Delete Final Key failed.";
836
837 HksFreeParamSet(&genParamSet);
838 HksFreeParamSet(&pbkdf2ParamSet);
839 HksFreeParamSet(&pbkdf2FinishParamSet);
840 }
841
842 /**
843 * @tc.name: HksPbkdf2DerivePart1Test.HksPbkdf2Derive006
844 * @tc.desc: alg-PBKDF2 pur-Derive dig-SHA256.
845 * @tc.type: FUNC
846 */
847 HWTEST_F(HksPbkdf2DerivePart1Test, HksPbkdf2Derive006, TestSize.Level0)
848 {
849 struct HksBlob keyAlias = { strlen("HksPBKDF2DeriveKeyAliasTest006_1"),
850 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest006_1" };
851 int32_t ret = HKS_FAILURE;
852 /* 1. Generate Key */
853 struct HksParamSet *genParamSet = nullptr;
854 ret = InitParamSet(&genParamSet, g_genParams006, sizeof(g_genParams006)/sizeof(HksParam));
855 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
856
857 /* 2. PBKDF2 Three Stage */
858 struct HksParamSet *pbkdf2ParamSet = nullptr;
859 struct HksParamSet *pbkdf2FinishParamSet = nullptr;
860 ret = InitParamSet(&pbkdf2ParamSet, g_pbkdf2Params006, sizeof(g_pbkdf2Params006)/sizeof(HksParam));
861 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
862 struct HksParam *saltParam = nullptr;
863 HksGetParam(pbkdf2ParamSet, HKS_TAG_SALT, &saltParam);
864 ret = HksGenerateRandom(NULL, &(saltParam->blob));
865 EXPECT_EQ(ret, HKS_SUCCESS) << "GenerateRandom failed.";
866 // Finish paramset
867 ret = InitParamSet(&pbkdf2FinishParamSet, g_pbkdf2FinishParams006,
868 sizeof(g_pbkdf2FinishParams006)/sizeof(HksParam));
869 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
870
871 // init-update-final
872 HksPbkdf2DeriveTestNormalCase(keyAlias, genParamSet, pbkdf2ParamSet, pbkdf2FinishParamSet);
873 /* 3. Delete Key */
874 ret = HksDeleteKey(&keyAlias, genParamSet);
875 EXPECT_EQ(ret, HKS_SUCCESS) << "DeleteKey failed.";
876 struct HksBlob deleteKeyAlias = { .size = strlen("HksPBKDF2DeriveKeyAliasTest006_2Finish"),
877 .data = (uint8_t *)"HksPBKDF2DeriveKeyAliasTest006_2Finish"};
878 ret = HksDeleteKey(&deleteKeyAlias, NULL);
879 EXPECT_EQ(ret, HKS_SUCCESS) << "Delete Final Key failed.";
880
881 HksFreeParamSet(&genParamSet);
882 HksFreeParamSet(&pbkdf2ParamSet);
883 HksFreeParamSet(&pbkdf2FinishParamSet);
884 }
885
886 /**
887 * @tc.name: HksPbkdf2DerivePart1Test.HksPbkdf2Derive007
888 * @tc.desc: alg-PBKDF2 pur-Derive dig-SHA256.
889 * @tc.type: FUNC
890 */
891 HWTEST_F(HksPbkdf2DerivePart1Test, HksPbkdf2Derive007, TestSize.Level0)
892 {
893 struct HksBlob keyAlias = { strlen("HksPBKDF2DeriveKeyAliasTest007_1"),
894 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest007_1" };
895 int32_t ret = HKS_FAILURE;
896 /* 1. Generate Key */
897 struct HksParamSet *genParamSet = nullptr;
898 ret = InitParamSet(&genParamSet, g_genParams007, sizeof(g_genParams007)/sizeof(HksParam));
899 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
900
901 /* 2. PBKDF2 Three Stage */
902 struct HksParamSet *pbkdf2ParamSet = nullptr;
903 struct HksParamSet *pbkdf2FinishParamSet = nullptr;
904 ret = InitParamSet(&pbkdf2ParamSet, g_pbkdf2Params007, sizeof(g_pbkdf2Params007)/sizeof(HksParam));
905 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
906 struct HksParam *saltParam = nullptr;
907 HksGetParam(pbkdf2ParamSet, HKS_TAG_SALT, &saltParam);
908 ret = HksGenerateRandom(NULL, &(saltParam->blob));
909 EXPECT_EQ(ret, HKS_SUCCESS) << "GenerateRandom failed.";
910 // Finish paramset
911 ret = InitParamSet(&pbkdf2FinishParamSet, g_pbkdf2FinishParams007,
912 sizeof(g_pbkdf2FinishParams007)/sizeof(HksParam));
913 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
914
915 // init-update-final
916 HksPbkdf2DeriveTestNormalCase(keyAlias, genParamSet, pbkdf2ParamSet, pbkdf2FinishParamSet);
917 /* 3. Delete Key */
918 ret = HksDeleteKey(&keyAlias, genParamSet);
919 EXPECT_EQ(ret, HKS_SUCCESS) << "DeleteKey failed.";
920 struct HksBlob deleteKeyAlias = { .size = strlen("HksPBKDF2DeriveKeyAliasTest007_2Finish"),
921 .data = (uint8_t *)"HksPBKDF2DeriveKeyAliasTest007_2Finish"};
922 ret = HksDeleteKey(&deleteKeyAlias, NULL);
923 EXPECT_EQ(ret, HKS_SUCCESS) << "Delete Final Key failed.";
924
925 HksFreeParamSet(&genParamSet);
926 HksFreeParamSet(&pbkdf2ParamSet);
927 HksFreeParamSet(&pbkdf2FinishParamSet);
928 }
929
930 /**
931 * @tc.name: HksPbkdf2DerivePart1Test.HksPbkdf2Derive008
932 * @tc.desc: alg-PBKDF2 pur-Derive dig-SHA256.
933 * @tc.type: FUNC
934 */
935 HWTEST_F(HksPbkdf2DerivePart1Test, HksPbkdf2Derive008, TestSize.Level0)
936 {
937 struct HksBlob keyAlias = { strlen("HksPBKDF2DeriveKeyAliasTest008_1"),
938 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest008_1" };
939 int32_t ret = HKS_FAILURE;
940 /* 1. Generate Key */
941 struct HksParamSet *genParamSet = nullptr;
942 ret = InitParamSet(&genParamSet, g_genParams008, sizeof(g_genParams008)/sizeof(HksParam));
943 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
944
945 /* 2. PBKDF2 Three Stage */
946 struct HksParamSet *pbkdf2ParamSet = nullptr;
947 struct HksParamSet *pbkdf2FinishParamSet = nullptr;
948 ret = InitParamSet(&pbkdf2ParamSet, g_pbkdf2Params008, sizeof(g_pbkdf2Params008)/sizeof(HksParam));
949 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
950 struct HksParam *saltParam = nullptr;
951 HksGetParam(pbkdf2ParamSet, HKS_TAG_SALT, &saltParam);
952 ret = HksGenerateRandom(NULL, &(saltParam->blob));
953 EXPECT_EQ(ret, HKS_SUCCESS) << "GenerateRandom failed.";
954 // Finish paramset
955 ret = InitParamSet(&pbkdf2FinishParamSet, g_pbkdf2FinishParams008,
956 sizeof(g_pbkdf2FinishParams008)/sizeof(HksParam));
957 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
958
959 // init-update-final
960 HksPbkdf2DeriveTestNormalCase(keyAlias, genParamSet, pbkdf2ParamSet, pbkdf2FinishParamSet);
961 /* 3. Delete Key */
962 ret = HksDeleteKey(&keyAlias, genParamSet);
963 EXPECT_EQ(ret, HKS_SUCCESS) << "DeleteKey failed.";
964 struct HksBlob deleteKeyAlias = { .size = strlen("HksPBKDF2DeriveKeyAliasTest008_2Finish"),
965 .data = (uint8_t *)"HksPBKDF2DeriveKeyAliasTest008_2Finish"};
966 ret = HksDeleteKey(&deleteKeyAlias, NULL);
967 EXPECT_EQ(ret, HKS_SUCCESS) << "Delete Final Key failed.";
968
969 HksFreeParamSet(&genParamSet);
970 HksFreeParamSet(&pbkdf2ParamSet);
971 HksFreeParamSet(&pbkdf2FinishParamSet);
972 }
973
974 /**
975 * @tc.name: HksPbkdf2DerivePart1Test.HksPbkdf2Derive009
976 * @tc.desc: alg-PBKDF2 pur-Derive dig-SHA256.
977 * @tc.type: FUNC
978 */
979 HWTEST_F(HksPbkdf2DerivePart1Test, HksPbkdf2Derive009, TestSize.Level0)
980 {
981 struct HksBlob keyAlias = { strlen("HksPBKDF2DeriveKeyAliasTest009_1"),
982 (uint8_t *)"HksPBKDF2DeriveKeyAliasTest009_1" };
983 int32_t ret = HKS_FAILURE;
984 /* 1. Generate Key */
985 struct HksParamSet *genParamSet = nullptr;
986 ret = InitParamSet(&genParamSet, g_genParams009, sizeof(g_genParams009)/sizeof(HksParam));
987 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
988
989 /* 2. PBKDF2 Three Stage */
990 struct HksParamSet *pbkdf2ParamSet = nullptr;
991 struct HksParamSet *pbkdf2FinishParamSet = nullptr;
992 ret = InitParamSet(&pbkdf2ParamSet, g_pbkdf2Params009, sizeof(g_pbkdf2Params009)/sizeof(HksParam));
993 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
994 struct HksParam *saltParam = nullptr;
995 HksGetParam(pbkdf2ParamSet, HKS_TAG_SALT, &saltParam);
996 ret = HksGenerateRandom(NULL, &(saltParam->blob));
997 EXPECT_EQ(ret, HKS_SUCCESS) << "GenerateRandom failed.";
998 // Finish paramset
999 ret = InitParamSet(&pbkdf2FinishParamSet, g_pbkdf2FinishParams009,
1000 sizeof(g_pbkdf2FinishParams009)/sizeof(HksParam));
1001 EXPECT_EQ(ret, HKS_SUCCESS) << "InitParamSet failed.";
1002
1003 // init-update-final
1004 HksPbkdf2DeriveTestNormalCase(keyAlias, genParamSet, pbkdf2ParamSet, pbkdf2FinishParamSet);
1005 /* 3. Delete Key */
1006 ret = HksDeleteKey(&keyAlias, genParamSet);
1007 EXPECT_EQ(ret, HKS_SUCCESS) << "DeleteKey failed.";
1008 struct HksBlob deleteKeyAlias = { .size = strlen("HksPBKDF2DeriveKeyAliasTest009_2Finish"),
1009 .data = (uint8_t *)"HksPBKDF2DeriveKeyAliasTest009_2Finish"};
1010 ret = HksDeleteKey(&deleteKeyAlias, NULL);
1011 EXPECT_EQ(ret, HKS_SUCCESS) << "Delete Final Key failed.";
1012
1013 HksFreeParamSet(&genParamSet);
1014 HksFreeParamSet(&pbkdf2ParamSet);
1015 HksFreeParamSet(&pbkdf2FinishParamSet);
1016 }
1017 }