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));
assert_positive(ckmc_import_wrapped_key,
params.get(),
- wrappingKeyAlias.c_str(),
- wrappingKeyPass,
+ unwrappingKeyAlias.c_str(),
+ unwrappingKeyPass,
importedKeyAlias.c_str(),
aesKey,
importedKeyPolicy);
ckmc_key_free(aesKey);
return plainData;
}
+
+RawBufferPtr encryptAndImport(const ParamListPtr ¶ms,
+ 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));
}
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);
assert_invalid_param(ckmc_import_wrapped_key,
params.get(),
- wrappingKeyAlias.c_str(),
+ unwrappingKeyAlias.c_str(),
nullptr,
IMPORTED_ALIAS.c_str(),
aesKey,
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);
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){
32,
wrappingKeyAlias.c_str(),
wrappingKeyPass,
+ unwrappingKeyAlias.c_str(),
+ unwrappingKeyPass,
IMPORTED_ALIAS,
EXPORTABLE);
assert_positive(ckmc_decrypt_data,
params.get(),
- wrappingKeyAlias.c_str(),
- wrappingKeyPass,
+ unwrappingKeyAlias.c_str(),
+ unwrappingKeyPass,
*finalData,
&decrypted);
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;
buffLen,
wrappingKeyAlias.c_str(),
wrappingKeyPass,
+ unwrappingKeyAlias.c_str(),
+ unwrappingKeyPass,
IMPORTED_ALIAS,
importedKeyPolicy);
assert_positive(ckmc_decrypt_data,
params.get(),
- wrappingKeyAlias.c_str(),
- wrappingKeyPass,
+ unwrappingKeyAlias.c_str(),
+ unwrappingKeyPass,
*finalData,
&decrypted);
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);
}
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){
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){
}
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);
}