CKM: Use public key for key wrapping 55/294855/4
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Tue, 27 Jun 2023 15:38:13 +0000 (17:38 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Wed, 28 Jun 2023 09:19:31 +0000 (11:19 +0200)
Private key contains the public key and it (the public key) is actually
used for encryption so the testing code is ok. However, to make it
clearer, the public key will be used explicitly.

Change-Id: I8599710b3c5b03675811b1c527b59efbc5006d00

src/ckm/unprivileged/key-wrapping.cpp

index 8a2da4a23839271561a0fe4f3888ecbd340353fc..e6f7649a1b1c989652e109246757b6788bd69959 100644 (file)
@@ -172,6 +172,8 @@ RawBufferPtr encryptAndImport(const ParamListPtr &params,
                        int buffLen,
                        const Alias &wrappingKeyAlias,
                        const char* wrappingKeyPass,
+                       const Alias &unwrappingKeyAlias,
+                       const char* unwrappingKeyPass,
                        const Alias &importedKeyAlias,
                        const ckmc_policy_s &importedKeyPolicy){
        RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(buffLen));
@@ -195,8 +197,8 @@ RawBufferPtr encryptAndImport(const ParamListPtr &params,
 
        assert_positive(ckmc_import_wrapped_key,
                                params.get(),
-                               wrappingKeyAlias.c_str(),
-                               wrappingKeyPass,
+                               unwrappingKeyAlias.c_str(),
+                               unwrappingKeyPass,
                                importedKeyAlias.c_str(),
                                aesKey,
                                importedKeyPolicy);
@@ -205,6 +207,23 @@ RawBufferPtr encryptAndImport(const ParamListPtr &params,
        ckmc_key_free(aesKey);
        return plainData;
 }
+
+RawBufferPtr encryptAndImport(const ParamListPtr &params,
+                       int buffLen,
+                       const Alias &wrappingKeyAlias,
+                       const char* wrappingKeyPass,
+                       const Alias &importedKeyAlias,
+                       const ckmc_policy_s &importedKeyPolicy){
+       return encryptAndImport(params,
+                                                       buffLen,
+                                                       wrappingKeyAlias,
+                                                       wrappingKeyPass,
+                                                       wrappingKeyAlias,
+                                                       wrappingKeyPass,
+                                                       importedKeyAlias,
+                                                       importedKeyPolicy);
+}
+
 void testInvalidAlgoParameters(const ParamListPtr &invalidParams, const Algo &algo){
        ParamListPtr params = getDefaultParams(algo);
        RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(32));
@@ -239,11 +258,14 @@ void testInvalidAlgoParameters(const ParamListPtr &invalidParams, const Algo &al
 }
 void testImportInvalidBuffLen(const Algo &algo,
                        int buffLen,
-                       const Alias &wrappingKeyAlias){
+                       const Alias &wrappingKeyAlias,
+                       Alias unwrappingKeyAlias = ""){
        RawBufferPtr plainData = create_raw_buffer(createRandomBufferCAPI(buffLen));
 
        ckmc_raw_buffer_s *encrypted = nullptr;
        ckmc_key_s *aesKey = nullptr;
+       if (unwrappingKeyAlias.empty())
+               unwrappingKeyAlias = wrappingKeyAlias;
 
        ParamListPtr params = getDefaultParams(algo);
 
@@ -263,7 +285,7 @@ void testImportInvalidBuffLen(const Algo &algo,
 
        assert_invalid_param(ckmc_import_wrapped_key,
                                params.get(),
-                               wrappingKeyAlias.c_str(),
+                               unwrappingKeyAlias.c_str(),
                                nullptr,
                                IMPORTED_ALIAS.c_str(),
                                aesKey,
@@ -272,16 +294,24 @@ void testImportInvalidBuffLen(const Algo &algo,
        ckmc_key_free(aesKey);
 }
 
-void testImportValidArgs(const Algo &algo, int buffLen, const Alias &wrappingKeyAlias){
+void testImportValidArgs(const Algo &algo,
+                                                int buffLen,
+                                                const Alias &wrappingKeyAlias,
+                                                Alias unwrappingKeyAlias = ""){
        ckmc_key_s *ppKey = nullptr;
        ckmc_raw_buffer_s *finalData = nullptr;
 
+       if (unwrappingKeyAlias.empty())
+               unwrappingKeyAlias = wrappingKeyAlias;
+
        ParamListPtr params = getDefaultParams(algo);
 
        RawBufferPtr plainData = encryptAndImport(params,
                                buffLen,
                                wrappingKeyAlias,
                                nullptr,
+                               unwrappingKeyAlias,
+                               nullptr,
                                IMPORTED_ALIAS.c_str(),
                                EXPORTABLE);
 
@@ -436,6 +466,8 @@ template <typename T>
 void testImportExportCustomParameters(const Algo &algo,
                        const Alias &wrappingKeyAlias,
                        const char* wrappingKeyPass,
+                       const Alias &unwrappingKeyAlias,
+                       const char* unwrappingKeyPass,
                        ckmc_raw_buffer_s* initVec,
                        ckmc_param_name_e name,
                        const T& parameter){
@@ -453,6 +485,8 @@ void testImportExportCustomParameters(const Algo &algo,
                                32,
                                wrappingKeyAlias.c_str(),
                                wrappingKeyPass,
+                               unwrappingKeyAlias.c_str(),
+                               unwrappingKeyPass,
                                IMPORTED_ALIAS,
                                EXPORTABLE);
 
@@ -471,8 +505,8 @@ void testImportExportCustomParameters(const Algo &algo,
 
        assert_positive(ckmc_decrypt_data,
                                params.get(),
-                               wrappingKeyAlias.c_str(),
-                               wrappingKeyPass,
+                               unwrappingKeyAlias.c_str(),
+                               unwrappingKeyPass,
                                *finalData,
                                &decrypted);
 
@@ -484,10 +518,29 @@ void testImportExportCustomParameters(const Algo &algo,
        ckmc_remove_key(IMPORTED_ALIAS.c_str());
 }
 
+template <typename T>
+void testImportExportCustomParameters(const Algo &algo,
+                       const Alias &wrappingKeyAlias,
+                       const char* wrappingKeyPass,
+                       ckmc_raw_buffer_s* initVec,
+                       ckmc_param_name_e name,
+                       const T& parameter){
+       testImportExportCustomParameters(algo,
+                               wrappingKeyAlias,
+                               wrappingKeyPass,
+                               wrappingKeyAlias,
+                               wrappingKeyPass,
+                               initVec,
+                               name,
+                               parameter);
+}
+
 void testImportExportValidArgs(const Algo &algo,
                        int buffLen,
                        const Alias &wrappingKeyAlias,
                        const char* wrappingKeyPass,
+                       const Alias &unwrappingKeyAlias,
+                       const char* unwrappingKeyPass,
                        const ckmc_policy_s &importedKeyPolicy,
                        const char* importedKeyPass){
        ckmc_key_s *ppKey = nullptr;
@@ -500,6 +553,8 @@ void testImportExportValidArgs(const Algo &algo,
                                buffLen,
                                wrappingKeyAlias.c_str(),
                                wrappingKeyPass,
+                               unwrappingKeyAlias.c_str(),
+                               unwrappingKeyPass,
                                IMPORTED_ALIAS,
                                importedKeyPolicy);
 
@@ -518,8 +573,8 @@ void testImportExportValidArgs(const Algo &algo,
 
        assert_positive(ckmc_decrypt_data,
                                params.get(),
-                               wrappingKeyAlias.c_str(),
-                               wrappingKeyPass,
+                               unwrappingKeyAlias.c_str(),
+                               unwrappingKeyPass,
                                *finalData,
                                &decrypted);
 
@@ -531,6 +586,21 @@ void testImportExportValidArgs(const Algo &algo,
        ckmc_remove_key(IMPORTED_ALIAS.c_str());
 }
 
+void testImportExportValidArgs(const Algo &algo,
+                       int buffLen,
+                       const Alias &wrappingKeyAlias,
+                       const char* wrappingKeyPass,
+                       const ckmc_policy_s &importedKeyPolicy,
+                       const char* importedKeyPass){
+       testImportExportValidArgs(algo,
+                               buffLen,
+                               wrappingKeyAlias,
+                               wrappingKeyPass,
+                               wrappingKeyAlias,
+                               wrappingKeyPass,
+                               importedKeyPolicy,
+                               importedKeyPass);
+}
 }      //END OF THE NAMESPACE
 
 RUNNER_TEST_GROUP_INIT_ENV(CKM_KEY_WRAPPING, GroupFixture);
@@ -915,45 +985,45 @@ RUNNER_TEST(TKW_AES_CFB_INVALID_BUFF_LENGTH){
 }
 
 RUNNER_TEST(TKW_VALID_ARGS_RSA_OAEP_1024){
-       testImportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PRV_ALIAS);
-       testImportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PRV_ALIAS);
-       testImportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PRV_ALIAS);
+       testImportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PUB_ALIAS, RSA_KEY_1024_PRV_ALIAS);
+       testImportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PUB_ALIAS, RSA_KEY_1024_PRV_ALIAS);
+       testImportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PUB_ALIAS, RSA_KEY_1024_PRV_ALIAS);
 }
 
 RUNNER_TEST(TKW_VALID_ARGS_RSA_OAEP_2048){
-       testImportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PRV_ALIAS);
-       testImportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PRV_ALIAS);
-       testImportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PRV_ALIAS);
+       testImportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PUB_ALIAS, RSA_KEY_2048_PRV_ALIAS);
+       testImportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PUB_ALIAS, RSA_KEY_2048_PRV_ALIAS);
+       testImportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PUB_ALIAS, RSA_KEY_2048_PRV_ALIAS);
 }
 
 RUNNER_TEST(TKW_VALID_ARGS_RSA_OAEP_4096){
-       testImportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PRV_ALIAS);
-       testImportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PRV_ALIAS);
-       testImportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PRV_ALIAS);
+       testImportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PUB_ALIAS, RSA_KEY_4096_PRV_ALIAS);
+       testImportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PUB_ALIAS, RSA_KEY_4096_PRV_ALIAS);
+       testImportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PUB_ALIAS, RSA_KEY_4096_PRV_ALIAS);
 }
 
 RUNNER_TEST(TKW_RSAOAEP_INVALID_BUFF_LENGTH){
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 8, RSA_KEY_1024_PRV_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 12, RSA_KEY_1024_PRV_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 82, RSA_KEY_1024_PRV_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 8, RSA_KEY_2048_PRV_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 12, RSA_KEY_2048_PRV_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 82, RSA_KEY_2048_PRV_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 8, RSA_KEY_4096_PRV_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 12, RSA_KEY_4096_PRV_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 82, RSA_KEY_4096_PRV_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 8, RSA_KEY_1024_PUB_ALIAS, RSA_KEY_1024_PRV_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 12, RSA_KEY_1024_PUB_ALIAS, RSA_KEY_1024_PRV_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 82, RSA_KEY_1024_PUB_ALIAS, RSA_KEY_1024_PRV_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 8, RSA_KEY_2048_PUB_ALIAS, RSA_KEY_2048_PRV_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 12, RSA_KEY_2048_PUB_ALIAS, RSA_KEY_2048_PRV_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 82, RSA_KEY_2048_PUB_ALIAS, RSA_KEY_2048_PRV_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 8, RSA_KEY_4096_PUB_ALIAS, RSA_KEY_4096_PRV_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 12, RSA_KEY_4096_PUB_ALIAS, RSA_KEY_4096_PRV_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 82, RSA_KEY_4096_PUB_ALIAS, RSA_KEY_4096_PRV_ALIAS);
 }
 
 RUNNER_TEST(TKW_WRONG_TYPE_WRAPPING_KEY){
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PUB_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PUB_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PUB_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PUB_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PUB_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PUB_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PUB_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PUB_ALIAS);
-       testImportInvalidBuffLen(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PUB_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PUB_ALIAS, RSA_KEY_1024_PUB_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PUB_ALIAS, RSA_KEY_1024_PUB_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PUB_ALIAS, RSA_KEY_1024_PUB_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PUB_ALIAS, RSA_KEY_2048_PUB_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PUB_ALIAS, RSA_KEY_2048_PUB_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PUB_ALIAS, RSA_KEY_2048_PUB_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PUB_ALIAS, RSA_KEY_4096_PUB_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PUB_ALIAS, RSA_KEY_4096_PUB_ALIAS);
+       testImportInvalidBuffLen(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PUB_ALIAS, RSA_KEY_4096_PUB_ALIAS);
 }
 
 RUNNER_TEST(TKW_DIF_POLICIES_EXPORTABLE_IMPORTED){
@@ -1227,9 +1297,9 @@ RUNNER_TEST(TKW_AES_GCM_WITH_TAG_LEN){
 
 RUNNER_TEST(TKW_IMPORT_EXPORT_RSA_LABEL){
        RUNNER_IGNORED_MSG("RSA-OAEP labels are not supported in openssl");
-       testImportExportCustomParameters(RSA_OAEP_ALGO, RSA_KEY_1024_PRV_ALIAS, nullptr, DEFAULT_IV, CKMC_PARAM_ED_LABEL, AAD64);
-       testImportExportCustomParameters(RSA_OAEP_ALGO, RSA_KEY_2048_PRV_ALIAS, nullptr, DEFAULT_IV, CKMC_PARAM_ED_LABEL, AAD64);
-       testImportExportCustomParameters(RSA_OAEP_ALGO, RSA_KEY_4096_PRV_ALIAS, nullptr, DEFAULT_IV, CKMC_PARAM_ED_LABEL, AAD64);
+       testImportExportCustomParameters(RSA_OAEP_ALGO, RSA_KEY_1024_PUB_ALIAS, nullptr, RSA_KEY_1024_PRV_ALIAS, nullptr, DEFAULT_IV, CKMC_PARAM_ED_LABEL, AAD64);
+       testImportExportCustomParameters(RSA_OAEP_ALGO, RSA_KEY_2048_PUB_ALIAS, nullptr, RSA_KEY_2048_PRV_ALIAS, nullptr, DEFAULT_IV, CKMC_PARAM_ED_LABEL, AAD64);
+       testImportExportCustomParameters(RSA_OAEP_ALGO, RSA_KEY_4096_PUB_ALIAS, nullptr, RSA_KEY_4096_PRV_ALIAS, nullptr, DEFAULT_IV, CKMC_PARAM_ED_LABEL, AAD64);
 }
 
 RUNNER_TEST(TKW_RSA_WRAPPED_KEY){
@@ -1433,23 +1503,23 @@ RUNNER_TEST(TKW_IMPORT_EXPORT_AES_CFB_PASS){
 }
 
 RUNNER_TEST(TKW_IMPORT_EXPORT_RSA_OAEP){
-       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
-
-       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
-       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PUB_ALIAS, nullptr, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PUB_ALIAS, nullptr, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PUB_ALIAS, nullptr, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PUB_ALIAS, nullptr, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PUB_ALIAS, nullptr, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PUB_ALIAS, nullptr, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PUB_ALIAS, nullptr, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PUB_ALIAS, nullptr, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PUB_ALIAS, nullptr, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE, nullptr);
+
+       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_1024_PUB_ALIAS, nullptr, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_1024_PUB_ALIAS, nullptr, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_1024_PUB_ALIAS, nullptr, RSA_KEY_1024_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_2048_PUB_ALIAS, nullptr, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_2048_PUB_ALIAS, nullptr, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_2048_PUB_ALIAS, nullptr, RSA_KEY_2048_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 16, RSA_KEY_4096_PUB_ALIAS, nullptr, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 24, RSA_KEY_4096_PUB_ALIAS, nullptr, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
+       testImportExportValidArgs(RSA_OAEP_ALGO, 32, RSA_KEY_4096_PUB_ALIAS, nullptr, RSA_KEY_4096_PRV_ALIAS, nullptr, EXPORTABLE_PASS, KEY_PASSWORD);
 }