RUNNER_ASSERT_MSG(expected == actual, "Actual list of aliases differ from expected list.");
}
-void check_alias_info_list_helper(const PasswordInfoVector& expected,
- const std::unordered_map<std::string, bool>& actual,
+void check_alias_info_list_helper(const InfoVector& expected,
+ const InfoMap& actual,
const std::string &userSmackLabel)
{
std::string errorLogMsg;
RUNNER_ASSERT_MSG(expected.size() == actual.size(), "Aliases item count differs, expected: " <<
expected.size() << " actual: " << actual.size());
- for (const auto &it : expected)
+ for (const auto &expectedIt : expected)
{
- auto aliasPwd = actual.find(userSmackLabel + it.alias);
- if (aliasPwd != actual.end()) {
- if (aliasPwd->second != it.passwordProtected) {
- errorLogMsg += "Alias: " + it.alias + " has wrong encryption status: "
- + std::to_string(it.passwordProtected) + "\n";
+ auto actualIt = actual.find(userSmackLabel + expectedIt.alias);
+ if (actualIt != actual.end()) {
+ if (actualIt->second.passwordProtected != expectedIt.passwordProtected) {
+ errorLogMsg += "Alias: " + actualIt->second.alias + " has wrong encryption status: "
+ + std::to_string(actualIt->second.passwordProtected) + "\n";
+ }
+ if (actualIt->second.backend != expectedIt.backend) {
+ errorLogMsg += "Alias: " + actualIt->second.alias + " belongs to wrong backend: "
+ + std::to_string(static_cast<int>(actualIt->second.backend)) + "\n";
}
}
else {
- errorLogMsg += "Expected alias: " + it.alias + " not found.\n";
+ errorLogMsg += "Expected alias: " + actualIt->second.alias + " not found.\n";
}
}
if (!errorLogMsg.empty()) {
- for (const auto& [alias, passwordProtected] : actual)
+ for (const auto& [alias, info] : actual)
{
- errorLogMsg += "Actual alias: " + alias + " status: "
- + std::to_string(passwordProtected) + "\n";
+ errorLogMsg += "Actual alias: " + alias +
+ " status: " + std::to_string(info.passwordProtected) +
+ " backend: " + std::to_string(static_cast<int>(info.backend)) + "\n";
}
RUNNER_FAIL_MSG("Actual list of aliases differ from expected list.\n" + errorLogMsg);
}
}
-void check_alias_info_list(const PasswordInfoVector& expected)
+CKM::BackendId backend()
+{
+#ifdef TZ_BACKEND
+ return CKM::BackendId::TZ;
+#else
+ return CKM::BackendId::SW;
+#endif
+}
+
+void check_alias_info_list(const InfoVector& expected)
{
ckmc_alias_info_list_s *aliasInfoList = NULL;
int ret = ckmc_get_data_alias_info_list(&aliasInfoList);
RUNNER_ASSERT_MSG(ret == CKMC_ERROR_NONE, "Failed to get the list of data aliases. " << ret << " / "
<< CKMCErrorToString(ret));
- std::unordered_map<std::string, bool> actual;
+ InfoMap actual;
ckmc_alias_info_list_s *plist = aliasInfoList;
- char* alias;
+ char* alias = nullptr;
bool isPasswordProtected;
unsigned int it = 0;
while (plist)
ret = ckmc_alias_info_get_alias(plist->info, &alias);
RUNNER_ASSERT_MSG(ret == CKMC_ERROR_NONE, "Failed to get alias. " << ret << " / "
<< CKMCErrorToString(ret));
+ RUNNER_ASSERT_MSG(alias != nullptr, "Got null alias. Iterator: " << it);
+
ret = ckmc_alias_info_is_password_protected(plist->info, &isPasswordProtected);
RUNNER_ASSERT_MSG(ret == CKMC_ERROR_NONE, "Failed to get password protection status" << ret << " / "
<< CKMCErrorToString(ret));
- RUNNER_ASSERT_MSG(alias != nullptr, "Got null alias. Iterator: " << it);
- actual[alias] = isPasswordProtected;
+ ckmc_backend_id_e backend;
+ ret = ckmc_alias_info_get_backend(plist->info, &backend);
+ RUNNER_ASSERT_MSG(ret == CKMC_ERROR_NONE, "Failed to get backend" << ret << " / "
+ << CKMCErrorToString(ret));
+
+ actual.try_emplace(alias, alias, isPasswordProtected, static_cast<CKM::BackendId>(backend));
plist = plist->next;
it++;
}
ckmc_raw_buffer_s prepare_message_buffer(const char * input);
void check_alias_list(const CKM::AliasVector& expected);
-struct PasswordInfo {
- PasswordInfo(const CKM::Alias &alias, bool passwordProtected) : alias(alias), passwordProtected(passwordProtected) {}
+struct Info {
+ Info(const CKM::Alias &alias,
+ bool passwordProtected,
+ CKM::BackendId backend = CKM::BackendId::SW) :
+ alias(alias),
+ passwordProtected(passwordProtected),
+ backend(backend) {}
CKM::Alias alias;
bool passwordProtected;
+ CKM::BackendId backend;
};
-typedef std::vector<PasswordInfo> PasswordInfoVector;
+typedef std::vector<Info> InfoVector;
+typedef std::unordered_map<std::string, Info> InfoMap;
-void check_alias_info_list_helper(const PasswordInfoVector& expected,
- const std::unordered_map<std::string, bool>& actual,
+CKM::BackendId backend();
+
+void check_alias_info_list_helper(const InfoVector& expected,
+ const InfoMap& actual,
const std::string &userSmackLabel = {});
-void check_alias_info_list(const PasswordInfoVector& expected);
+void check_alias_info_list(const InfoVector& expected);
typedef enum {
ALIAS_KEY,
save_data(TEST_SYSTEM_ALIAS_2.c_str(), TEST_DATA);
// [test]
- PasswordInfoVector expected;
- expected.emplace_back(TEST_SYSTEM_ALIAS, false);
- expected.emplace_back(TEST_SYSTEM_ALIAS_2, false);
+ InfoVector expected;
+ expected.emplace_back(TEST_SYSTEM_ALIAS, false, backend());
+ expected.emplace_back(TEST_SYSTEM_ALIAS_2, false, backend());
check_alias_info_list(expected);
}
save_data((TEST_SYSTEM_ALIAS_2 + "1").c_str(), TEST_DATA, strlen(TEST_DATA), TEST_PASSWORD);
// [test]
- PasswordInfoVector expected;
- expected.emplace_back(TEST_SYSTEM_ALIAS, false);
- expected.emplace_back(TEST_SYSTEM_ALIAS_2, true);
- expected.emplace_back(TEST_SYSTEM_ALIAS_2 + "1", true);
+ InfoVector expected;
+ expected.emplace_back(TEST_SYSTEM_ALIAS, false, backend());
+ expected.emplace_back(TEST_SYSTEM_ALIAS_2, true, backend());
+ expected.emplace_back(TEST_SYSTEM_ALIAS_2 + "1", true, backend());
check_alias_info_list(expected);
}
const int aliasNameCount = 10;
auto manager = CKM::Manager::create();
- PasswordInfoVector expected;
+ InfoVector expected;
CKM::RawBuffer buffer(KEY_PEM.begin(), KEY_PEM.end());
auto key = CKM::Key::create(buffer, CKM::Password());
std::string currentAlias;
{
CKM::Policy policy = generate_ckm_policy(it);
currentAlias = "T1024_appkey" + std::to_string(it);
- expected.emplace_back(currentAlias, !policy.password.empty());
+ expected.emplace_back(currentAlias, !policy.password.empty(), backend());
RUNNER_ASSERT_MSG(
CKM_API_SUCCESS == (exitCode = manager->saveKey(currentAlias, key, policy)),
"Error=" << CKM::APICodeToString(exitCode));
}
CKM::AliasInfoVector aliasInfoVector;
- std::unordered_map<std::string, bool> actual;
+ InfoMap actual;
RUNNER_ASSERT_MSG(
CKM_API_SUCCESS == (exitCode = manager->getKeyAliasInfoVector(aliasInfoVector)),
exitCode = manager->getKeyEncryptionStatus(info.alias, status);
RUNNER_ASSERT_MSG(CKM_API_SUCCESS == exitCode, "Error=" << CKM::APICodeToString(exitCode));
- actual[info.alias] = status;
+ actual.try_emplace(info.alias, info.alias, status, info.backend);
}
check_alias_info_list_helper(expected, actual, "/User ");
const int aliasNameCount = 10;
auto manager = CKM::Manager::create();
- PasswordInfoVector expected;
+ InfoVector expected;
auto cert = TestData::getTestCertificate(TestData::TEST_LEAF);
std::string currentAlias;
{
CKM::Policy policy = generate_ckm_policy(it);
currentAlias = "T1025_appcert" + std::to_string(it);
- expected.emplace_back(currentAlias, !policy.password.empty());
+ expected.emplace_back(currentAlias, !policy.password.empty(), CKM::BackendId::SW);
RUNNER_ASSERT_MSG(
CKM_API_SUCCESS == (exitCode = manager->saveCertificate(currentAlias, cert, policy)),
"Error=" << CKM::APICodeToString(exitCode));
}
CKM::AliasInfoVector aliasInfoVector;
- std::unordered_map<std::string, bool> actual;
+ InfoMap actual;
RUNNER_ASSERT_MSG(
CKM_API_SUCCESS == (exitCode = manager->getCertificateAliasInfoVector(aliasInfoVector)),
exitCode = manager->getCertificateEncryptionStatus(info.alias, status);
RUNNER_ASSERT_MSG(CKM_API_SUCCESS == exitCode, "Error=" << CKM::APICodeToString(exitCode));
- actual[info.alias] = status;
+ actual.try_emplace(info.alias, info.alias, status, info.backend);
}
check_alias_info_list_helper(expected, actual, "/User ");
const int aliasNameCount = 10;
auto manager = CKM::Manager::create();
- PasswordInfoVector expected;
+ InfoVector expected;
std::string binData = "My bin data";
CKM::RawBuffer buffer(binData.begin(), binData.end());
std::string currentAlias;
{
CKM::Policy policy = generate_ckm_policy(it);
currentAlias = "T1026_appdata" + std::to_string(it);
- expected.emplace_back(currentAlias, !policy.password.empty());
+ expected.emplace_back(currentAlias, !policy.password.empty(), backend());
RUNNER_ASSERT_MSG(
CKM_API_SUCCESS == (exitCode = manager->saveData(currentAlias, buffer, policy)),
"Error=" << CKM::APICodeToString(exitCode));
}
CKM::AliasInfoVector aliasInfoVector;
- std::unordered_map<std::string, bool> actual;
+ InfoMap actual;
RUNNER_ASSERT_MSG(
CKM_API_SUCCESS == (exitCode = manager->getDataAliasInfoVector(aliasInfoVector)),
exitCode = manager->getDataEncryptionStatus(info.alias, status);
RUNNER_ASSERT_MSG(CKM_API_SUCCESS == exitCode, "Error=" << CKM::APICodeToString(exitCode));
- actual[info.alias] = status;
+ actual.try_emplace(info.alias, info.alias, status, info.backend);
}
check_alias_info_list_helper(expected, actual, "/User ");