2 * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License
19 #include <dpl/test/test_runner.h>
20 #include <ckm-common.h>
21 #include <ckmc/ckmc-manager.h>
22 #include <ckmc/ckmc-control.h>
27 const uid_t UID = 5001;
28 ckmc_raw_buffer_s* DEFAULT_IV = nullptr;
30 const Alias AES_KEY_128_ALIAS = "AES-gen-test-128";
31 const Alias AES_KEY_192_ALIAS = "AES-gen-test-192";
32 const Alias AES_KEY_256_ALIAS = "AES-gen-test-256";
33 const Alias AES_KEY_128_PASS_ALIAS = "AES-gen-test-128-pass";
34 const Alias AES_KEY_UNEXP_PASS_ALIAS = "AES-gen-test-128-unexp-pass";
35 const Alias AES_KEY_UNEXP_ALIAS = "AES-gen-test-128-unexp";
36 const Alias RSA_KEY_1024_PRV_ALIAS = "RSA-gen-test-1024-prv";
37 const Alias RSA_KEY_1024_PUB_ALIAS = "RSA-gen-test-1024-pub";
38 const Alias RSA_KEY_2048_PRV_ALIAS = "RSA-gen-test-2048-prv";
39 const Alias RSA_KEY_2048_PUB_ALIAS = "RSA-gen-test-2048-pub";
40 const Alias RSA_KEY_4096_PRV_ALIAS = "RSA-gen-test-4096-prv";
41 const Alias RSA_KEY_4096_PUB_ALIAS = "RSA-gen-test-4096-pub";
43 const Alias IMP_AES_CTR = "imp-AES-CTR";
44 const Alias IMP_AES_CTR_PASS = "imp-AES-CTR-p";
45 const Alias IMPORTED_ALIAS = "imported-key-1";
47 const char* KEY_PASSWORD = "test-pass-1";
48 const ckmc_policy_s EXPORTABLE = {nullptr, 1};
49 const ckmc_policy_s EXPORTABLE_PASS = {const_cast<char*>(KEY_PASSWORD), 1};
50 const ckmc_policy_s UNEXPORTABLE = {nullptr, 0};
51 const ckmc_policy_s UNEXPORTABLE_PASS = {const_cast<char*>(KEY_PASSWORD), 0};
54 ckmc_algo_type_e type;
57 const Algo AES_CTR_ALGO = {CKMC_ALGO_AES_CTR, 16};
58 const Algo AES_CBC_ALGO = {CKMC_ALGO_AES_CBC, 16};
59 const Algo AES_GCM_ALGO = {CKMC_ALGO_AES_GCM, 16};
60 const Algo AES_CFB_ALGO = {CKMC_ALGO_AES_CFB, 16};
61 const Algo RSA_OAEP_ALGO = {CKMC_ALGO_RSA_OAEP, 0};
63 void importKey(const Algo &algo,
65 const Alias &wrappingKeyAlias,
66 const char* wrappingKeyPass,
67 const Alias &importedKeyAlias,
68 const ckmc_policy_s &importedKeyPolicy);
70 class GroupFixture: public DPL::Test::TestGroup{
72 void Init() override {
73 remove_user_data(UID);
74 int ret = ckmc_unlock_user_key(UID,"db-pass");
75 if (ret != CKMC_ERROR_NONE)
76 RUNNER_ERROR_MSG("DB unlock failed: " <<CKMCErrorToString(ret));
78 assert_positive(ckmc_create_key_pair_rsa,
80 RSA_KEY_1024_PRV_ALIAS.c_str(),
81 RSA_KEY_1024_PUB_ALIAS.c_str(),
85 assert_positive(ckmc_create_key_pair_rsa,
87 RSA_KEY_2048_PRV_ALIAS.c_str(),
88 RSA_KEY_2048_PUB_ALIAS.c_str(),
92 assert_positive(ckmc_create_key_pair_rsa,
94 RSA_KEY_4096_PRV_ALIAS.c_str(),
95 RSA_KEY_4096_PUB_ALIAS.c_str(),
99 assert_positive(ckmc_create_key_aes, 128, AES_KEY_128_ALIAS.c_str(), EXPORTABLE);
100 assert_positive(ckmc_create_key_aes, 192, AES_KEY_192_ALIAS.c_str(), EXPORTABLE);
101 assert_positive(ckmc_create_key_aes, 256, AES_KEY_256_ALIAS.c_str(), EXPORTABLE);
102 assert_positive(ckmc_create_key_aes, 128, AES_KEY_128_PASS_ALIAS.c_str(), EXPORTABLE_PASS);
103 assert_positive(ckmc_create_key_aes, 128, AES_KEY_UNEXP_ALIAS.c_str(), UNEXPORTABLE);
104 assert_positive(ckmc_create_key_aes, 128, AES_KEY_UNEXP_PASS_ALIAS.c_str(), UNEXPORTABLE_PASS);
106 importKey(AES_CTR_ALGO, 16, AES_KEY_128_ALIAS, nullptr, IMP_AES_CTR, EXPORTABLE);
107 importKey(AES_CTR_ALGO, 16, AES_KEY_128_ALIAS, nullptr, IMP_AES_CTR_PASS, EXPORTABLE_PASS);
109 void Finish() override {
110 int ret = ckmc_lock_user_key(UID);
111 if (ret != CKMC_ERROR_NONE)
112 RUNNER_ERROR_MSG("DB lock failed: " <<CKMCErrorToString(ret));
114 remove_user_data(UID);
115 ckmc_buffer_free(DEFAULT_IV);
117 ckmc_remove_key(RSA_KEY_1024_PRV_ALIAS.c_str());
118 ckmc_remove_key(RSA_KEY_1024_PUB_ALIAS.c_str());
119 ckmc_remove_key(RSA_KEY_2048_PRV_ALIAS.c_str());
120 ckmc_remove_key(RSA_KEY_2048_PUB_ALIAS.c_str());
121 ckmc_remove_key(RSA_KEY_4096_PRV_ALIAS.c_str());
122 ckmc_remove_key(RSA_KEY_4096_PUB_ALIAS.c_str());
123 ckmc_remove_key(AES_KEY_128_ALIAS.c_str());
124 ckmc_remove_key(AES_KEY_192_ALIAS.c_str());
125 ckmc_remove_key(AES_KEY_256_ALIAS.c_str());
126 ckmc_remove_key(AES_KEY_128_PASS_ALIAS.c_str());
127 ckmc_remove_key(AES_KEY_UNEXP_ALIAS.c_str());
128 ckmc_remove_key(AES_KEY_UNEXP_PASS_ALIAS.c_str());
130 ckmc_remove_key(IMP_AES_CTR.c_str());
131 ckmc_remove_key(IMP_AES_CTR_PASS.c_str());
135 ParamListPtr getDefaultParams(const Algo &algo){
136 ckmc_param_list_h handle = nullptr;
138 assert_positive(ckmc_generate_new_params, algo.type, &handle);
139 ParamListPtr params = ParamListPtr(handle, ckmc_param_list_free);
140 if(algo.type == CKMC_ALGO_RSA_OAEP)
143 DEFAULT_IV = createRandomBufferCAPI(algo.initVector);
144 setParam(params, CKMC_PARAM_ED_IV, DEFAULT_IV);
148 RawBufferPtr encryptAndImport(const ParamListPtr ¶ms,
150 const Alias &wrappingKeyAlias,
151 const char* wrappingKeyPass,
152 const Alias &importedKeyAlias,
153 const ckmc_policy_s &importedKeyPolicy){
154 RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(buffLen));
156 ckmc_raw_buffer_s *encrypted = nullptr;
157 ckmc_key_s *aesKey = nullptr;
159 assert_positive(ckmc_encrypt_data,
161 wrappingKeyAlias.c_str(),
166 assert_positive(ckmc_key_new,
173 assert_positive(ckmc_import_wrapped_key,
175 wrappingKeyAlias.c_str(),
177 importedKeyAlias.c_str(),
181 ckmc_buffer_free(encrypted);
182 ckmc_key_free(aesKey);
185 void testInvalidAlgoParameters(const ParamListPtr &invalidParams, const Algo &algo){
186 ParamListPtr params = getDefaultParams(algo);
187 RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(32));
189 ckmc_raw_buffer_s *encrypted = nullptr;
190 ckmc_key_s *aesKey = nullptr;
192 assert_positive(ckmc_encrypt_data,
194 AES_KEY_128_ALIAS.c_str(),
199 assert_positive(ckmc_key_new,
206 assert_invalid_param(ckmc_import_wrapped_key,
208 AES_KEY_128_ALIAS.c_str(),
210 IMPORTED_ALIAS.c_str(),
214 ckmc_buffer_free(encrypted);
215 ckmc_key_free(aesKey);
217 void testImportInvalidBuffLen(const Algo &algo,
219 const Alias &wrappingKeyAlias){
220 RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(buffLen));
222 ckmc_raw_buffer_s *encrypted = nullptr;
223 ckmc_key_s *aesKey = nullptr;
225 ParamListPtr params = getDefaultParams(algo);
227 assert_positive(ckmc_encrypt_data,
229 wrappingKeyAlias.c_str(),
234 assert_positive(ckmc_key_new,
241 assert_invalid_param(ckmc_import_wrapped_key,
243 wrappingKeyAlias.c_str(),
245 IMPORTED_ALIAS.c_str(),
248 ckmc_buffer_free(encrypted);
249 ckmc_key_free(aesKey);
252 void testImportValidArgs(const Algo &algo, int buffLen, const Alias &wrappingKeyAlias){
253 ckmc_key_s *ppkey = nullptr;
254 ckmc_raw_buffer_s *finalData = nullptr;
256 ParamListPtr params = getDefaultParams(algo);
258 RawBufferPtr plainData = encryptAndImport(params,
262 IMPORTED_ALIAS.c_str(),
265 assert_positive(ckmc_get_key, IMPORTED_ALIAS.c_str(), nullptr, &ppkey);
266 assert_positive(ckmc_buffer_new, ppkey->raw_key, ppkey->key_size, &finalData);
267 assert_buffers_equal(plainData.get(), finalData);
269 ckmc_buffer_free(finalData);
270 ckmc_key_free(ppkey);
271 ckmc_remove_key(IMPORTED_ALIAS.c_str());
274 void testBadWrappedKey(const Algo &algo){
275 ParamListPtr params = getDefaultParams(algo);
276 ckmc_key_s *wrongKey = generate_AES_key(128, nullptr);
278 assert_invalid_param(ckmc_import_wrapped_key,
280 AES_KEY_128_ALIAS.c_str(),
282 IMPORTED_ALIAS.c_str(),
286 ckmc_key_free(wrongKey);
289 void testExportableImported(const Algo &algo,
291 const Alias &wrappingKeyAlias,
292 const char* wrappingKeyPass,
293 const ckmc_policy_s &importedKeyPolicy,
294 const char* importedKeyPass){
295 ckmc_key_s *ppkey = nullptr;
296 ckmc_raw_buffer_s* finalData = nullptr;
298 ParamListPtr params = getDefaultParams(algo);
300 RawBufferPtr plainData = encryptAndImport(params,
304 IMPORTED_ALIAS.c_str(),
307 assert_positive(ckmc_get_key,
308 IMPORTED_ALIAS.c_str(),
312 assert_positive(ckmc_buffer_new,
317 assert_buffers_equal(plainData.get(), finalData);
319 ckmc_buffer_free(finalData);
320 ckmc_key_free(ppkey);
321 ckmc_remove_key(IMPORTED_ALIAS.c_str());
324 void testUnEXPORTABLEImported(const Algo &algo,
326 const Alias &wrappingKeyAlias,
327 const char* wrappingKeyPass,
328 const ckmc_policy_s &importedKeyPolicy,
329 const char* importedKeyPass){
330 ckmc_key_s *ppkey = nullptr;
331 ParamListPtr params = getDefaultParams(algo);
333 RawBufferPtr plainData = encryptAndImport(params,
337 IMPORTED_ALIAS.c_str(),
340 assert_result(CKMC_ERROR_NOT_EXPORTABLE,
342 IMPORTED_ALIAS.c_str(),
345 ckmc_key_free(ppkey);
346 ckmc_remove_key(IMPORTED_ALIAS.c_str());
349 void importKey(const Algo &algo,
351 const Alias &wrappingKeyAlias,
352 const char* wrappingKeyPass,
353 const Alias &importedKeyAlias,
354 const ckmc_policy_s &importedKeyPolicy){
355 RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(buffLen));
357 ckmc_key_s *aesKey = nullptr;
358 ckmc_raw_buffer_s* encrypted = nullptr;
360 ParamListPtr params = getDefaultParams(algo);
362 assert_positive(ckmc_encrypt_data,
364 wrappingKeyAlias.c_str(),
369 assert_positive(ckmc_key_new,
376 assert_positive(ckmc_import_wrapped_key,
378 wrappingKeyAlias.c_str(),
380 importedKeyAlias.c_str(),
384 ckmc_buffer_free(encrypted);
385 ckmc_key_free(aesKey);
388 void testImportExportValidArgs(const Algo &algo,
390 const Alias &wrappingKeyAlias,
391 const char* wrappingKeyPass,
392 const ckmc_policy_s &importedKeyPolicy,
393 const char* importedKeyPass){
394 ckmc_key_s *ppkey = nullptr;
395 ckmc_raw_buffer_s* finalData = nullptr;
396 ckmc_raw_buffer_s* decrypted = nullptr;
398 ParamListPtr params = getDefaultParams(algo);
400 RawBufferPtr plainData = encryptAndImport(params,
402 wrappingKeyAlias.c_str(),
407 assert_positive(ckmc_export_wrapped_key,
409 wrappingKeyAlias.c_str(),
411 IMPORTED_ALIAS.c_str(),
415 assert_positive(ckmc_buffer_new,
420 assert_positive(ckmc_decrypt_data,
422 wrappingKeyAlias.c_str(),
427 assert_buffers_equal(plainData.get(), decrypted);
429 ckmc_buffer_free(finalData);
430 ckmc_buffer_free(decrypted);
431 ckmc_key_free(ppkey);
432 ckmc_remove_key(IMPORTED_ALIAS.c_str());
435 } //END OF THE NAMESPACE
437 RUNNER_TEST_GROUP_INIT_ENV(CKM_KEY_WRAPPING, GroupFixture);
439 RUNNER_TEST(TKW_NO_ADDED_ALGO){
440 RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(32));
442 ckmc_key_s *aesKey = nullptr;
443 ckmc_raw_buffer_s* encrypted = nullptr;
445 ParamListPtr params = getDefaultParams(AES_CBC_ALGO);
447 ckmc_param_list_h handle = nullptr;
449 assert_positive(ckmc_encrypt_data,
451 AES_KEY_128_ALIAS.c_str(),
456 assert_positive(ckmc_key_new,
463 assert_invalid_param(ckmc_import_wrapped_key,
465 AES_KEY_128_ALIAS.c_str(),
467 IMPORTED_ALIAS.c_str(),
470 ckmc_buffer_free(encrypted);
471 ckmc_key_free(aesKey);
474 RUNNER_TEST(TKW_WRONG_ALGO_PARAMS){
475 ckmc_param_list_h handle = nullptr;
476 assert_positive(ckmc_generate_new_params, AES_CTR_ALGO.type, &handle);
477 ParamListPtr invalidParams = ParamListPtr(handle, ckmc_param_list_free);
478 ckmc_raw_buffer_s *initVec = createRandomBufferCAPI(8);
479 setParam(invalidParams, CKMC_PARAM_ED_IV, initVec);
481 testInvalidAlgoParameters(invalidParams, AES_CTR_ALGO);
483 ckmc_buffer_free(initVec);
484 invalidParams.reset();
485 assert_positive(ckmc_generate_new_params, AES_GCM_ALGO.type, &handle);
486 invalidParams = ParamListPtr(handle, ckmc_param_list_free);
487 initVec = createRandomBufferCAPI(16);
488 setParam(invalidParams, CKMC_PARAM_ED_IV, initVec);
489 setParam(invalidParams, CKMC_PARAM_ED_TAG_LEN, 130);
491 testInvalidAlgoParameters(invalidParams, AES_GCM_ALGO);
493 ckmc_buffer_free(initVec);
496 RUNNER_TEST(TKW_WRONG_PASS_WRAPPING_KEY){
498 RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(buffLen));
500 ckmc_key_s *aesKey = nullptr;
501 ckmc_raw_buffer_s* encrypted = nullptr;
502 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
504 assert_positive(ckmc_encrypt_data,
506 AES_KEY_128_PASS_ALIAS.c_str(),
511 assert_positive(ckmc_key_new,
518 assert_result(CKMC_ERROR_AUTHENTICATION_FAILED,
519 ckmc_import_wrapped_key,
521 AES_KEY_128_PASS_ALIAS.c_str(),
523 IMPORTED_ALIAS.c_str(),
527 assert_result(CKMC_ERROR_AUTHENTICATION_FAILED,
528 ckmc_import_wrapped_key,
530 AES_KEY_128_PASS_ALIAS.c_str(),
532 IMPORTED_ALIAS.c_str(),
536 assert_result(CKMC_ERROR_AUTHENTICATION_FAILED,
537 ckmc_import_wrapped_key,
539 AES_KEY_128_ALIAS.c_str(),
540 "non_empty_password",
541 IMPORTED_ALIAS.c_str(),
545 ckmc_buffer_free(encrypted);
546 ckmc_key_free(aesKey);
549 RUNNER_TEST(TKW_UNKNOWN_ALIAS_WRAPPING_KEY){
550 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
551 ckmc_key_s *key = generate_AES_key(128, nullptr);
553 assert_result(CKMC_ERROR_DB_ALIAS_UNKNOWN,
554 ckmc_import_wrapped_key,
558 IMPORTED_ALIAS.c_str(),
565 RUNNER_TEST(TKW_EXISTING_ALIAS_WRAPPING_KEY){
566 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
567 ckmc_key_s *key = generate_AES_key(128, nullptr);
569 assert_result(CKMC_ERROR_DB_ALIAS_EXISTS,
570 ckmc_import_wrapped_key,
572 AES_KEY_128_ALIAS.c_str(),
581 RUNNER_TEST(TKW_INVALID_ALIAS_IMPORT){
582 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
583 ckmc_key_s *key = generate_AES_key(128, nullptr);
584 Alias invalidAlias = "invalid alias";
586 assert_result(CKMC_ERROR_PERMISSION_DENIED,
587 ckmc_import_wrapped_key,
589 AES_KEY_128_ALIAS.c_str(),
591 invalidAlias.c_str(),
598 RUNNER_TEST(TKW_BAD_WRAPPED_KEY){
599 testBadWrappedKey(AES_CBC_ALGO);
600 testBadWrappedKey(AES_GCM_ALGO);
601 testBadWrappedKey(RSA_OAEP_ALGO);
604 RUNNER_TEST(TKW_NULL_PARAMETER){
605 RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(16));
607 ckmc_key_s *aesKey = nullptr;
608 ckmc_raw_buffer_s* encrypted = nullptr;
610 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
612 assert_positive(ckmc_encrypt_data,
614 AES_KEY_128_ALIAS.c_str(),
619 assert_positive(ckmc_key_new,
626 assert_invalid_param(ckmc_import_wrapped_key,
628 AES_KEY_128_ALIAS.c_str(),
630 IMPORTED_ALIAS.c_str(),
634 assert_invalid_param(ckmc_import_wrapped_key,
638 IMPORTED_ALIAS.c_str(),
642 assert_invalid_param(ckmc_import_wrapped_key,
644 AES_KEY_128_ALIAS.c_str(),
650 assert_invalid_param(ckmc_import_wrapped_key,
652 AES_KEY_128_ALIAS.c_str(),
654 IMPORTED_ALIAS.c_str(),
657 ckmc_buffer_free(encrypted);
658 ckmc_key_free(aesKey);
661 RUNNER_TEST(TKW_VALID_ARGS_AES_CTR_128){
662 testImportValidArgs(AES_CTR_ALGO, 16, AES_KEY_128_ALIAS);
663 testImportValidArgs(AES_CTR_ALGO, 24, AES_KEY_128_ALIAS);
664 testImportValidArgs(AES_CTR_ALGO, 32, AES_KEY_128_ALIAS);
667 RUNNER_TEST(TKW_VALID_ARGS_AES_CBC_128){
668 testImportValidArgs(AES_CBC_ALGO, 16, AES_KEY_128_ALIAS);
669 testImportValidArgs(AES_CBC_ALGO, 24, AES_KEY_128_ALIAS);
670 testImportValidArgs(AES_CBC_ALGO, 32, AES_KEY_128_ALIAS);
673 RUNNER_TEST(TKW_VALID_ARGS_AES_GCM_128){
674 testImportValidArgs(AES_GCM_ALGO, 16, AES_KEY_128_ALIAS);
675 testImportValidArgs(AES_GCM_ALGO, 24, AES_KEY_128_ALIAS);
676 testImportValidArgs(AES_GCM_ALGO, 32, AES_KEY_128_ALIAS);
679 RUNNER_TEST(TKW_VALID_ARGS_AES_CFB_128){
680 testImportValidArgs(AES_CFB_ALGO, 16, AES_KEY_128_ALIAS);
681 testImportValidArgs(AES_CFB_ALGO, 24, AES_KEY_128_ALIAS);
682 testImportValidArgs(AES_CFB_ALGO, 32, AES_KEY_128_ALIAS);
685 RUNNER_TEST(TKW_VALID_ARGS_AES_CTR_192){
686 testImportValidArgs(AES_CTR_ALGO, 16, AES_KEY_192_ALIAS);
687 testImportValidArgs(AES_CTR_ALGO, 24, AES_KEY_192_ALIAS);
688 testImportValidArgs(AES_CTR_ALGO, 32, AES_KEY_192_ALIAS);
691 RUNNER_TEST(TKW_VALID_ARGS_AES_CBC_192){
692 testImportValidArgs(AES_CBC_ALGO, 16, AES_KEY_192_ALIAS);
693 testImportValidArgs(AES_CBC_ALGO, 24, AES_KEY_192_ALIAS);
694 testImportValidArgs(AES_CBC_ALGO, 32, AES_KEY_192_ALIAS);
697 RUNNER_TEST(TKW_VALID_ARGS_AES_GCM_192){
698 testImportValidArgs(AES_GCM_ALGO, 16, AES_KEY_192_ALIAS);
699 testImportValidArgs(AES_GCM_ALGO, 24, AES_KEY_192_ALIAS);
700 testImportValidArgs(AES_GCM_ALGO, 32, AES_KEY_192_ALIAS);
703 RUNNER_TEST(TKW_VALID_ARGS_AES_CFB_192){
704 testImportValidArgs(AES_CFB_ALGO, 16, AES_KEY_192_ALIAS);
705 testImportValidArgs(AES_CFB_ALGO, 24, AES_KEY_192_ALIAS);
706 testImportValidArgs(AES_CFB_ALGO, 32, AES_KEY_192_ALIAS);
708 RUNNER_TEST(TKW_VALID_ARGS_AES_CTR_256){
709 testImportValidArgs(AES_CTR_ALGO, 16, AES_KEY_256_ALIAS);
710 testImportValidArgs(AES_CTR_ALGO, 24, AES_KEY_256_ALIAS);
711 testImportValidArgs(AES_CTR_ALGO, 32, AES_KEY_256_ALIAS);
714 RUNNER_TEST(TKW_VALID_ARGS_AES_CBC_256){
715 testImportValidArgs(AES_CBC_ALGO, 16, AES_KEY_256_ALIAS);
716 testImportValidArgs(AES_CBC_ALGO, 24, AES_KEY_256_ALIAS);
717 testImportValidArgs(AES_CBC_ALGO, 32, AES_KEY_256_ALIAS);
720 RUNNER_TEST(TKW_VALID_ARGS_AES_GCM_256){
721 testImportValidArgs(AES_GCM_ALGO, 16, AES_KEY_256_ALIAS);
722 testImportValidArgs(AES_GCM_ALGO, 24, AES_KEY_256_ALIAS);
723 testImportValidArgs(AES_GCM_ALGO, 32, AES_KEY_256_ALIAS);
726 RUNNER_TEST(TKW_VALID_ARGS_AES_CFB_256){
727 testImportValidArgs(AES_CFB_ALGO, 16, AES_KEY_256_ALIAS);
728 testImportValidArgs(AES_CFB_ALGO, 24, AES_KEY_256_ALIAS);
729 testImportValidArgs(AES_CFB_ALGO, 32, AES_KEY_256_ALIAS);
732 RUNNER_TEST(TKW_AES_CTR_INVALID_BUFF_LENGTH){
733 testImportInvalidBuffLen(AES_CTR_ALGO, 8, AES_KEY_128_ALIAS);
734 testImportInvalidBuffLen(AES_CTR_ALGO, 12, AES_KEY_128_ALIAS);
735 testImportInvalidBuffLen(AES_CTR_ALGO, 128, AES_KEY_128_ALIAS);
736 testImportInvalidBuffLen(AES_CTR_ALGO, 8, AES_KEY_192_ALIAS);
737 testImportInvalidBuffLen(AES_CTR_ALGO, 12, AES_KEY_192_ALIAS);
738 testImportInvalidBuffLen(AES_CTR_ALGO, 128, AES_KEY_192_ALIAS);
739 testImportInvalidBuffLen(AES_CTR_ALGO, 8, AES_KEY_256_ALIAS);
740 testImportInvalidBuffLen(AES_CTR_ALGO, 12, AES_KEY_256_ALIAS);
741 testImportInvalidBuffLen(AES_CTR_ALGO, 128, AES_KEY_256_ALIAS);
744 RUNNER_TEST(TKW_AES_CBC_INVALID_BUFF_LENGTH){
745 testImportInvalidBuffLen(AES_CBC_ALGO, 8, AES_KEY_128_ALIAS);
746 testImportInvalidBuffLen(AES_CBC_ALGO, 12, AES_KEY_128_ALIAS);
747 testImportInvalidBuffLen(AES_CBC_ALGO, 128, AES_KEY_128_ALIAS);
748 testImportInvalidBuffLen(AES_CBC_ALGO, 8, AES_KEY_192_ALIAS);
749 testImportInvalidBuffLen(AES_CBC_ALGO, 12, AES_KEY_192_ALIAS);
750 testImportInvalidBuffLen(AES_CBC_ALGO, 128, AES_KEY_192_ALIAS);
751 testImportInvalidBuffLen(AES_CBC_ALGO, 8, AES_KEY_256_ALIAS);
752 testImportInvalidBuffLen(AES_CBC_ALGO, 12, AES_KEY_256_ALIAS);
753 testImportInvalidBuffLen(AES_CBC_ALGO, 128, AES_KEY_256_ALIAS);
755 RUNNER_TEST(TKW_AES_GCM_INVALID_BUFF_LENGTH){
756 testImportInvalidBuffLen(AES_GCM_ALGO, 8, AES_KEY_128_ALIAS);
757 testImportInvalidBuffLen(AES_GCM_ALGO, 12, AES_KEY_128_ALIAS);
758 testImportInvalidBuffLen(AES_GCM_ALGO, 128, AES_KEY_128_ALIAS);
759 testImportInvalidBuffLen(AES_GCM_ALGO, 8, AES_KEY_192_ALIAS);
760 testImportInvalidBuffLen(AES_GCM_ALGO, 12, AES_KEY_192_ALIAS);
761 testImportInvalidBuffLen(AES_GCM_ALGO, 128, AES_KEY_192_ALIAS);
762 testImportInvalidBuffLen(AES_GCM_ALGO, 8, AES_KEY_256_ALIAS);
763 testImportInvalidBuffLen(AES_GCM_ALGO, 12, AES_KEY_256_ALIAS);
764 testImportInvalidBuffLen(AES_GCM_ALGO, 128, AES_KEY_256_ALIAS);
767 RUNNER_TEST(TKW_AES_CFB_INVALID_BUFF_LENGTH){
768 testImportInvalidBuffLen(AES_CFB_ALGO, 8, AES_KEY_128_ALIAS);
769 testImportInvalidBuffLen(AES_CFB_ALGO, 12, AES_KEY_128_ALIAS);
770 testImportInvalidBuffLen(AES_CFB_ALGO, 128, AES_KEY_128_ALIAS);
771 testImportInvalidBuffLen(AES_CFB_ALGO, 8, AES_KEY_192_ALIAS);
772 testImportInvalidBuffLen(AES_CFB_ALGO, 12, AES_KEY_192_ALIAS);
773 testImportInvalidBuffLen(AES_CFB_ALGO, 128, AES_KEY_192_ALIAS);
774 testImportInvalidBuffLen(AES_CFB_ALGO, 8, AES_KEY_256_ALIAS);
775 testImportInvalidBuffLen(AES_CFB_ALGO, 12, AES_KEY_256_ALIAS);
776 testImportInvalidBuffLen(AES_CFB_ALGO, 128, AES_KEY_256_ALIAS);
779 RUNNER_TEST(TKW_VALID_ARGS_RSA_OAEP_1024){
780 testImportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PRV_ALIAS);
781 testImportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PRV_ALIAS);
782 testImportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PRV_ALIAS);
785 RUNNER_TEST(TKW_VALID_ARGS_RSA_OAEP_2048){
786 testImportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PRV_ALIAS);
787 testImportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PRV_ALIAS);
788 testImportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PRV_ALIAS);
791 RUNNER_TEST(TKW_VALID_ARGS_RSA_OAEP_4096){
792 testImportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PRV_ALIAS);
793 testImportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PRV_ALIAS);
794 testImportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PRV_ALIAS);
797 RUNNER_TEST(TKW_RSAOAEP_INVALID_BUFF_LENGTH){
798 testImportInvalidBuffLen(RSA_OAEP_ALGO, 8, RSA_KEY_1024_PRV_ALIAS);
799 testImportInvalidBuffLen(RSA_OAEP_ALGO, 12, RSA_KEY_1024_PRV_ALIAS);
800 testImportInvalidBuffLen(RSA_OAEP_ALGO, 82, RSA_KEY_1024_PRV_ALIAS);
801 testImportInvalidBuffLen(RSA_OAEP_ALGO, 8, RSA_KEY_2048_PRV_ALIAS);
802 testImportInvalidBuffLen(RSA_OAEP_ALGO, 12, RSA_KEY_2048_PRV_ALIAS);
803 testImportInvalidBuffLen(RSA_OAEP_ALGO, 82, RSA_KEY_2048_PRV_ALIAS);
804 testImportInvalidBuffLen(RSA_OAEP_ALGO, 8, RSA_KEY_4096_PRV_ALIAS);
805 testImportInvalidBuffLen(RSA_OAEP_ALGO, 12, RSA_KEY_4096_PRV_ALIAS);
806 testImportInvalidBuffLen(RSA_OAEP_ALGO, 82, RSA_KEY_4096_PRV_ALIAS);
809 RUNNER_TEST(TKW_WRONG_TYPE_WRAPPING_KEY){
810 testImportInvalidBuffLen(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PUB_ALIAS);
811 testImportInvalidBuffLen(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PUB_ALIAS);
812 testImportInvalidBuffLen(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PUB_ALIAS);
813 testImportInvalidBuffLen(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PUB_ALIAS);
814 testImportInvalidBuffLen(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PUB_ALIAS);
815 testImportInvalidBuffLen(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PUB_ALIAS);
816 testImportInvalidBuffLen(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PUB_ALIAS);
817 testImportInvalidBuffLen(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PUB_ALIAS);
818 testImportInvalidBuffLen(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PUB_ALIAS);
821 RUNNER_TEST(TKW_DIF_POLICIES_EXPORTABLE_IMPORTED){
822 testExportableImported(AES_CTR_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
823 testExportableImported(AES_CTR_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
824 testExportableImported(AES_CTR_ALGO, 16, AES_KEY_UNEXP_ALIAS, nullptr, EXPORTABLE, nullptr);
825 testExportableImported(AES_CTR_ALGO, 16, AES_KEY_UNEXP_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
827 testExportableImported(AES_CTR_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
828 testExportableImported(AES_CTR_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
829 testExportableImported(AES_CTR_ALGO, 16, AES_KEY_UNEXP_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
830 testExportableImported(AES_CTR_ALGO, 16, AES_KEY_UNEXP_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
833 RUNNER_TEST(TKW_DIF_POLICIES_UNEXPORTABLE_IMPORTED){
834 testUnEXPORTABLEImported(AES_CTR_ALGO, 16, AES_KEY_128_ALIAS, nullptr, UNEXPORTABLE, nullptr);
835 testUnEXPORTABLEImported(AES_CTR_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, UNEXPORTABLE, nullptr);
836 testUnEXPORTABLEImported(AES_CTR_ALGO, 16, AES_KEY_UNEXP_ALIAS, nullptr, UNEXPORTABLE, nullptr);
837 testUnEXPORTABLEImported(AES_CTR_ALGO, 16, AES_KEY_UNEXP_PASS_ALIAS, KEY_PASSWORD, UNEXPORTABLE, nullptr);
839 testUnEXPORTABLEImported(AES_CTR_ALGO, 16, AES_KEY_128_ALIAS, nullptr, UNEXPORTABLE_PASS, KEY_PASSWORD);
840 testUnEXPORTABLEImported(AES_CTR_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, UNEXPORTABLE_PASS, KEY_PASSWORD);
841 testUnEXPORTABLEImported(AES_CTR_ALGO, 16, AES_KEY_UNEXP_ALIAS, nullptr, UNEXPORTABLE_PASS, KEY_PASSWORD);
842 testUnEXPORTABLEImported(AES_CTR_ALGO, 16, AES_KEY_UNEXP_PASS_ALIAS, KEY_PASSWORD, UNEXPORTABLE_PASS, KEY_PASSWORD);
845 RUNNER_TEST(TKW_EXPORT_IMPORTED_KEY){
846 ckmc_key_s *ppkey = nullptr;
848 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
849 assert_positive(ckmc_export_wrapped_key,
851 AES_KEY_128_ALIAS.c_str(),
857 ckmc_key_free(ppkey);
860 RUNNER_TEST(TKW_NO_ADDED_ALGO_EXPORT){
861 ckmc_key_s *ppkey = nullptr;
862 ckmc_param_list_h handle = nullptr;
864 assert_invalid_param(ckmc_export_wrapped_key,
866 AES_KEY_128_ALIAS.c_str(),
872 ckmc_key_free(ppkey);
875 RUNNER_TEST(TKW_EXPORT_UNKNOWN_WRAPPING_KEY_ALIAS){
876 ckmc_key_s *ppkey = nullptr;
877 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
879 assert_result(CKMC_ERROR_DB_ALIAS_UNKNOWN,
880 ckmc_export_wrapped_key,
888 ckmc_key_free(ppkey);
891 RUNNER_TEST(TKW_EXPORT_UNKNOWN_IMPORTED_KEY_ALIAS){
892 ckmc_key_s *ppkey = nullptr;
893 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
894 Alias alias = "non_existing_alias";
896 assert_result(CKMC_ERROR_DB_ALIAS_UNKNOWN,
897 ckmc_export_wrapped_key,
899 AES_KEY_128_ALIAS.c_str(),
905 ckmc_key_free(ppkey);
908 RUNNER_TEST(TKW_EXPORT_AUTHENTICATION_FAILED){
909 ckmc_key_s *ppkey = nullptr;
910 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
912 assert_result(CKMC_ERROR_AUTHENTICATION_FAILED,
913 ckmc_export_wrapped_key,
915 AES_KEY_128_PASS_ALIAS.c_str(),
921 assert_result(CKMC_ERROR_AUTHENTICATION_FAILED,
922 ckmc_export_wrapped_key,
924 AES_KEY_128_PASS_ALIAS.c_str(),
930 assert_result(CKMC_ERROR_AUTHENTICATION_FAILED,
931 ckmc_export_wrapped_key,
933 AES_KEY_128_ALIAS.c_str(),
935 IMP_AES_CTR_PASS.c_str(),
939 assert_result(CKMC_ERROR_AUTHENTICATION_FAILED,
940 ckmc_export_wrapped_key,
942 AES_KEY_128_ALIAS.c_str(),
944 IMP_AES_CTR_PASS.c_str(),
948 ckmc_key_free(ppkey);
951 RUNNER_TEST(TKW_EXPORT_NULL_PARAMETER){
952 ckmc_key_s *ppkey = nullptr;
953 ParamListPtr params = getDefaultParams(AES_CTR_ALGO);
955 assert_invalid_param(ckmc_export_wrapped_key,
957 AES_KEY_128_ALIAS.c_str(),
963 assert_invalid_param(ckmc_export_wrapped_key,
971 assert_invalid_param(ckmc_export_wrapped_key,
973 AES_KEY_128_ALIAS.c_str(),
979 assert_invalid_param(ckmc_export_wrapped_key,
981 AES_KEY_128_ALIAS.c_str(),
987 ckmc_key_free(ppkey);
990 RUNNER_TEST(TKW_IMPORT_EXPORT_AES_CTR){
991 testImportExportValidArgs(AES_CTR_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
992 testImportExportValidArgs(AES_CTR_ALGO, 24, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
993 testImportExportValidArgs(AES_CTR_ALGO, 32, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
994 testImportExportValidArgs(AES_CTR_ALGO, 16, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
995 testImportExportValidArgs(AES_CTR_ALGO, 24, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
996 testImportExportValidArgs(AES_CTR_ALGO, 32, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
997 testImportExportValidArgs(AES_CTR_ALGO, 16, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
998 testImportExportValidArgs(AES_CTR_ALGO, 24, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
999 testImportExportValidArgs(AES_CTR_ALGO, 32, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1001 testImportExportValidArgs(AES_CTR_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1002 testImportExportValidArgs(AES_CTR_ALGO, 24, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1003 testImportExportValidArgs(AES_CTR_ALGO, 32, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1004 testImportExportValidArgs(AES_CTR_ALGO, 16, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1005 testImportExportValidArgs(AES_CTR_ALGO, 24, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1006 testImportExportValidArgs(AES_CTR_ALGO, 32, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1007 testImportExportValidArgs(AES_CTR_ALGO, 16, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1008 testImportExportValidArgs(AES_CTR_ALGO, 24, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1009 testImportExportValidArgs(AES_CTR_ALGO, 32, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1012 RUNNER_TEST(TKW_IMPORT_EXPORT_AES_CTR_PASS){
1013 testImportExportValidArgs(AES_CTR_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1014 testImportExportValidArgs(AES_CTR_ALGO, 24, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1015 testImportExportValidArgs(AES_CTR_ALGO, 32, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1017 testImportExportValidArgs(AES_CTR_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1018 testImportExportValidArgs(AES_CTR_ALGO, 24, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1019 testImportExportValidArgs(AES_CTR_ALGO, 32, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1022 RUNNER_TEST(TKW_IMPORT_EXPORT_AES_CBC){
1023 testImportExportValidArgs(AES_CBC_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
1024 testImportExportValidArgs(AES_CBC_ALGO, 24, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
1025 testImportExportValidArgs(AES_CBC_ALGO, 32, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
1026 testImportExportValidArgs(AES_CBC_ALGO, 16, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
1027 testImportExportValidArgs(AES_CBC_ALGO, 24, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
1028 testImportExportValidArgs(AES_CBC_ALGO, 32, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
1029 testImportExportValidArgs(AES_CBC_ALGO, 16, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1030 testImportExportValidArgs(AES_CBC_ALGO, 24, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1031 testImportExportValidArgs(AES_CBC_ALGO, 32, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1033 testImportExportValidArgs(AES_CBC_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1034 testImportExportValidArgs(AES_CBC_ALGO, 24, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1035 testImportExportValidArgs(AES_CBC_ALGO, 32, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1036 testImportExportValidArgs(AES_CBC_ALGO, 16, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1037 testImportExportValidArgs(AES_CBC_ALGO, 24, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1038 testImportExportValidArgs(AES_CBC_ALGO, 32, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1039 testImportExportValidArgs(AES_CBC_ALGO, 16, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1040 testImportExportValidArgs(AES_CBC_ALGO, 24, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1041 testImportExportValidArgs(AES_CBC_ALGO, 32, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1044 RUNNER_TEST(TKW_IMPORT_EXPORT_AES_CBC_PASS){
1045 testImportExportValidArgs(AES_CBC_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1046 testImportExportValidArgs(AES_CBC_ALGO, 24, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1047 testImportExportValidArgs(AES_CBC_ALGO, 32, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1049 testImportExportValidArgs(AES_CBC_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1050 testImportExportValidArgs(AES_CBC_ALGO, 24, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1051 testImportExportValidArgs(AES_CBC_ALGO, 32, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1054 RUNNER_TEST(TKW_IMPORT_EXPORT_AES_GCM){
1055 testImportExportValidArgs(AES_GCM_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
1056 testImportExportValidArgs(AES_GCM_ALGO, 24, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
1057 testImportExportValidArgs(AES_GCM_ALGO, 32, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
1058 testImportExportValidArgs(AES_GCM_ALGO, 16, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
1059 testImportExportValidArgs(AES_GCM_ALGO, 24, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
1060 testImportExportValidArgs(AES_GCM_ALGO, 32, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
1061 testImportExportValidArgs(AES_GCM_ALGO, 16, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1062 testImportExportValidArgs(AES_GCM_ALGO, 24, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1063 testImportExportValidArgs(AES_GCM_ALGO, 32, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1065 testImportExportValidArgs(AES_GCM_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1066 testImportExportValidArgs(AES_GCM_ALGO, 24, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1067 testImportExportValidArgs(AES_GCM_ALGO, 32, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1068 testImportExportValidArgs(AES_GCM_ALGO, 16, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1069 testImportExportValidArgs(AES_GCM_ALGO, 24, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1070 testImportExportValidArgs(AES_GCM_ALGO, 32, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1071 testImportExportValidArgs(AES_GCM_ALGO, 16, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1072 testImportExportValidArgs(AES_GCM_ALGO, 24, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1073 testImportExportValidArgs(AES_GCM_ALGO, 32, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1076 RUNNER_TEST(TKW_IMPORT_EXPORT_AES_GCM_PASS){
1077 testImportExportValidArgs(AES_GCM_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1078 testImportExportValidArgs(AES_GCM_ALGO, 24, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1079 testImportExportValidArgs(AES_GCM_ALGO, 32, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1081 testImportExportValidArgs(AES_GCM_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1082 testImportExportValidArgs(AES_GCM_ALGO, 24, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1083 testImportExportValidArgs(AES_GCM_ALGO, 32, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1086 RUNNER_TEST(TKW_IMPORT_EXPORT_AES_CFB){
1087 testImportExportValidArgs(AES_CFB_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
1088 testImportExportValidArgs(AES_CFB_ALGO, 24, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
1089 testImportExportValidArgs(AES_CFB_ALGO, 32, AES_KEY_128_ALIAS, nullptr, EXPORTABLE, nullptr);
1090 testImportExportValidArgs(AES_CFB_ALGO, 16, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
1091 testImportExportValidArgs(AES_CFB_ALGO, 24, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
1092 testImportExportValidArgs(AES_CFB_ALGO, 32, AES_KEY_192_ALIAS, nullptr, EXPORTABLE, nullptr);
1093 testImportExportValidArgs(AES_CFB_ALGO, 16, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1094 testImportExportValidArgs(AES_CFB_ALGO, 24, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1095 testImportExportValidArgs(AES_CFB_ALGO, 32, AES_KEY_256_ALIAS, nullptr, EXPORTABLE, nullptr);
1097 testImportExportValidArgs(AES_CFB_ALGO, 16, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1098 testImportExportValidArgs(AES_CFB_ALGO, 24, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1099 testImportExportValidArgs(AES_CFB_ALGO, 32, AES_KEY_128_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1100 testImportExportValidArgs(AES_CFB_ALGO, 16, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1101 testImportExportValidArgs(AES_CFB_ALGO, 24, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1102 testImportExportValidArgs(AES_CFB_ALGO, 32, AES_KEY_192_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1103 testImportExportValidArgs(AES_CFB_ALGO, 16, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1104 testImportExportValidArgs(AES_CFB_ALGO, 24, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1105 testImportExportValidArgs(AES_CFB_ALGO, 32, AES_KEY_256_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1108 RUNNER_TEST(TKW_IMPORT_EXPORT_AES_CFB_PASS){
1109 testImportExportValidArgs(AES_CFB_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1110 testImportExportValidArgs(AES_CFB_ALGO, 24, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1111 testImportExportValidArgs(AES_CFB_ALGO, 32, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE, nullptr);
1113 testImportExportValidArgs(AES_CFB_ALGO, 16, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1114 testImportExportValidArgs(AES_CFB_ALGO, 24, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1115 testImportExportValidArgs(AES_CFB_ALGO, 32, AES_KEY_128_PASS_ALIAS, KEY_PASSWORD, EXPORTABLE_PASS, KEY_PASSWORD);
1118 RUNNER_TEST(TKW_IMPORT_EXPORT_RSA_OAEP){
1119 testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
1120 testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
1121 testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
1122 testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
1123 testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
1124 testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
1125 testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
1126 testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
1127 testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
1129 testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1130 testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1131 testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1132 testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1133 testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1134 testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1135 testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1136 testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
1137 testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);