CKM: Saving unexportable data is now allowed
[platform/core/test/security-tests.git] / src / ckm / unprivileged / main.cpp
index 2f11f2e..883a4fe 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2016-2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *  Copyright (c) 2016-2020 Samsung Electronics Co., Ltd. All rights reserved
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -26,6 +26,7 @@
 
 #include <tests_common.h>
 #include <test-certs.h>
+#include <ckm_helpers.h>
 
 #include <ckm-common.h>
 #include <ckm/ckm-manager.h>
@@ -83,7 +84,7 @@ RUNNER_TEST(T0011_Control)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "simple-password")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T0012_Control)
@@ -92,10 +93,10 @@ RUNNER_TEST(T0012_Control)
     auto control = CKM::Control::create();
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "simple-password")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T0013_Control)
@@ -104,7 +105,7 @@ RUNNER_TEST(T0013_Control)
     auto control = CKM::Control::create();
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "simple-password")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T0014_Control)
@@ -113,31 +114,31 @@ RUNNER_TEST(T0014_Control)
     auto control = CKM::Control::create();
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP_3)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->resetUserPassword(USER_APP_3, "simple-password")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->resetUserPassword(USER_APP_3, "something")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP_3, "test-pass")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP_3)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_BAD_REQUEST == (temp = control->resetUserPassword(USER_APP_3, "something")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP_3)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T0015_Control)
@@ -146,16 +147,16 @@ RUNNER_TEST(T0015_Control)
     auto control = CKM::Control::create();
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP_2, "test-pass")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->changeUserPassword(USER_APP_2, "test-pass", "new-pass")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP_2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP_2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T0016_Control_negative_wrong_password)
@@ -164,19 +165,19 @@ RUNNER_TEST(T0016_Control_negative_wrong_password)
     auto control = CKM::Control::create();
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP_2, "test-pass")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->changeUserPassword(USER_APP_2, "test-pass", "new-pass")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP_2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = control->unlockUserKey(USER_APP_2, "incorrect-password")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->removeUserData(USER_APP_2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST_GROUP_INIT(T101_CKM_QUICK_SET_GET_TESTS);
@@ -208,10 +209,10 @@ RUNNER_TEST(T1011_key)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         key->getDER() == key2->getDER(),
         "Key value has been changed by service");
@@ -222,16 +223,16 @@ RUNNER_TEST(T1012_certificate)
     int temp;
     auto manager = CKM::Manager::create();
 
-    auto cert = TestData::getTestCertificate(TestData::THIRD_PARTY_LEAF);
+    auto cert = TestData::getTestCertificate(TestData::TEST_LEAF);
     CKM::CertificateShPtr cert2;
     CKM::Alias alias = "myCert";
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getCertificate(alias, CKM::Password(), cert2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         cert->getDER() == cert2->getDER(),
         "Data has been modified in key manager");
@@ -261,12 +262,12 @@ RUNNER_TEST(T1014_save_with_label)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(full_address, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     // lookup by name
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getKey(alias, CKM::Password(), key_name)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         key->getDER() == key_name->getDER(),
         "Key value has been changed by service");
@@ -274,12 +275,48 @@ RUNNER_TEST(T1014_save_with_label)
     // lookup by full address
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getKey(full_address, CKM::Password(), key_full_addr)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         key->getDER() == key_full_addr->getDER(),
         "Key value has been changed by service");
 }
 
+RUNNER_TEST(T1020_save_big_data)
+{
+#ifdef TZ_BACKEND
+    const size_t BIG_SIZE = 100000;
+    CKM::PolicyBackend backend = CKM::PolicyBackend::FORCE_HARDWARE;
+#else
+    const size_t BIG_SIZE = 5000000;
+    CKM::PolicyBackend backend = CKM::PolicyBackend::FORCE_SOFTWARE;
+#endif
+
+    int temp;
+    std::vector<char> big_data(BIG_SIZE);
+    std::ifstream is("/dev/urandom", std::ifstream::binary);
+    if(is)
+        is.read(big_data.data(), BIG_SIZE);
+
+    RUNNER_ASSERT_MSG(is,
+            "Only " << is.gcount() << "/" << BIG_SIZE << " bytes read from /dev/urandom");
+
+    CKM::RawBuffer buffer(big_data.begin(), big_data.end());
+    CKM::Policy policy(CKM::Password(), true, backend);
+    CKM::RawBuffer returned;
+
+    auto manager = CKM::Manager::create();
+
+    RUNNER_ASSERT_MSG(
+        CKM_API_SUCCESS == (temp = manager->saveData("big_data", buffer, policy)),
+        "Error=" << CKM::APICodeToString(temp));
+
+    RUNNER_ASSERT_MSG(
+        CKM_API_SUCCESS == (temp = manager->getData("big_data", CKM::Password(), returned)),
+        "Error=" << CKM::APICodeToString(temp));
+
+    RUNNER_ASSERT_MSG(buffer == returned, "Returned data doesn't match the original");
+}
+
 RUNNER_TEST(T1015_deinit)
 {
     remove_user_data(USER_APP);
@@ -293,7 +330,7 @@ RUNNER_TEST(T1020_init)
     auto control = CKM::Control::create();
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1021_save_keys_get_alias)
@@ -318,16 +355,16 @@ RUNNER_TEST(T1021_save_keys_get_alias)
     size_t current_aliases_num = count_aliases(ALIAS_KEY);
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey("rootkey1", key, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey("rootkey2", key, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey("rootkey3", key, CKM::Policy(CKM::Password(), false))),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(labelAliasVector)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         labelAliasVector.size() == (current_aliases_num+3),
         "Wrong size of list: " << labelAliasVector.size() << " Expected: " << (current_aliases_num+3));
@@ -355,16 +392,16 @@ RUNNER_TEST(T1022_app_user_save_keys_get_alias)
     size_t current_aliases_num = count_aliases(ALIAS_KEY);
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey("appkey1", key, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey("appkey2", key, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey("appkey3", key, CKM::Policy(CKM::Password(), false))),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(labelAliasVector)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         labelAliasVector.size() == (current_aliases_num+3),
         "Wrong size of list: " << labelAliasVector.size() << " Expected: " << (current_aliases_num+3));
@@ -392,13 +429,13 @@ RUNNER_TEST(T1023_app_user_save_keys_exportable_flag)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey("appkey4", key, notExportable)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_NOT_EXPORTABLE == (temp = manager->getKey("appkey4", CKM::Password(), key)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
-        CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData("data3", buffer, notExportable)),
-        "Error=" << CKMErrorToString(temp));
+        CKM_API_SUCCESS == (temp = manager->saveData("data3", buffer, notExportable)),
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1024_app_user_save_keys_get_alias_pwd)
@@ -423,14 +460,14 @@ RUNNER_TEST(T1024_app_user_save_keys_get_alias_pwd)
         expected.push_back(std::make_pair(currentAlias, !policy.password.empty()));
         RUNNER_ASSERT_MSG(
             CKM_API_SUCCESS == (exitCode = manager->saveKey(currentAlias, key, policy)),
-            "Error=" << CKMErrorToString(exitCode));
+            "Error=" << CKM::APICodeToString(exitCode));
     }
 
     CKM::AliasPwdVector actual;
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (exitCode = manager->getKeyAliasPwdVector(actual)),
-        "Error=" << CKMErrorToString(exitCode));
+        "Error=" << CKM::APICodeToString(exitCode));
     RUNNER_ASSERT_MSG(
         actual.size() == (beforeSaveAliasCount + aliasNameCount),
         "Wrong aliases count: " << actual.size() << " Expected: "
@@ -449,7 +486,7 @@ RUNNER_TEST(T1025_app_user_save_certificates_get_alias_pwd)
     auto manager = CKM::Manager::create();
 
     CKM::AliasPwdVector expected;
-    auto cert = TestData::getTestCertificate(TestData::THIRD_PARTY_LEAF);
+    auto cert = TestData::getTestCertificate(TestData::TEST_LEAF);
     std::string currentAlias;
 
     size_t beforeSaveAliasCount = count_aliases(ALIAS_CERT);
@@ -460,13 +497,13 @@ RUNNER_TEST(T1025_app_user_save_certificates_get_alias_pwd)
         expected.push_back(std::make_pair(currentAlias, !policy.password.empty()));
         RUNNER_ASSERT_MSG(
                 CKM_API_SUCCESS == (exitCode = manager->saveCertificate(currentAlias, cert, policy)),
-                    "Error=" << CKMErrorToString(exitCode));
+                    "Error=" << CKM::APICodeToString(exitCode));
     }
 
     CKM::AliasPwdVector actual;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (exitCode = manager->getCertificateAliasPwdVector(actual)),
-        "Error=" << CKMErrorToString(exitCode));
+        "Error=" << CKM::APICodeToString(exitCode));
     RUNNER_ASSERT_MSG(
         actual.size() == (beforeSaveAliasCount + aliasNameCount),
         "Wrong aliases count: " << actual.size() << " Expected: "
@@ -497,13 +534,13 @@ RUNNER_TEST(T1026_app_user_save_data_get_alias_pwd)
         expected.push_back(std::make_pair(currentAlias, !policy.password.empty()));
         RUNNER_ASSERT_MSG(
             CKM_API_SUCCESS == (exitCode = manager->saveData(currentAlias, buffer, policy)),
-                "Error=" << CKMErrorToString(exitCode));
+                "Error=" << CKM::APICodeToString(exitCode));
     }
 
     CKM::AliasPwdVector actual;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (exitCode = manager->getDataAliasPwdVector(actual)),
-        "Error=" << CKMErrorToString(exitCode));
+        "Error=" << CKM::APICodeToString(exitCode));
     RUNNER_ASSERT_MSG(
         actual.size() == (beforeSaveAliasCount + aliasNameCount),
         "Wrong aliases count: " << actual.size() << " Expected: "
@@ -540,16 +577,16 @@ RUNNER_TEST(T1032_app_user_save_bin_data)
     size_t current_aliases_num = count_aliases(ALIAS_DATA);
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveData("appdata1", buffer, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveData("appdata2", buffer, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveData("appdata3", buffer, CKM::Policy(CKM::Password(), true))),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         labelAliasVector.size() == (current_aliases_num+3),
         "Wrong size of list: " << labelAliasVector.size() << " Expected: " << (current_aliases_num+3));
@@ -571,16 +608,16 @@ RUNNER_TEST(T1034_app_remove_bin_data)
     std::string invalid_address = aliasWithLabel("i-do-not-exist", "appdata1");
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->removeAlias(invalid_address.c_str())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->removeAlias("appdata1")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->removeAlias("appdata3")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getDataAliasVector(labelAliasVector)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         labelAliasVector.size() == (current_aliases_num-2),
         "Wrong size of list: " << labelAliasVector.size() << " Expected: " << (current_aliases_num-2));
@@ -588,13 +625,13 @@ RUNNER_TEST(T1034_app_remove_bin_data)
     CKM::RawBuffer buffer;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getData("appdata2", CKM::Password(), buffer)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         buffer == buffer2,
         "Data corrupted");
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData("appdata3", CKM::Password(), buffer)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1035_getData_wrong_password)
@@ -610,19 +647,19 @@ RUNNER_TEST(T1035_getData_wrong_password)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveData("data4", buffer1, CKM::Policy("CorrectPassword"))),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     CKM::RawBuffer buffer;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getData("data4", CKM::Password("CorrectPassword"), buffer)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         buffer == buffer1,
         "Data corrupted");
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getData("data4", CKM::Password("WrongPassword"), buffer)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1036_deinit)
@@ -639,7 +676,7 @@ RUNNER_TEST(T1040_init)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->unlockUserKey(USER_APP, "user-pass")),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1041_create_RSA_key)
@@ -651,10 +688,10 @@ RUNNER_TEST(T1041_create_RSA_key)
     size_t current_aliases_num = count_aliases(ALIAS_KEY);
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(2048, CKM::Alias("PRV_KEY1_RSA"), CKM::Alias("PUB_KEY1_RSA"), CKM::Policy(), CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         (current_aliases_num+2) == static_cast<size_t>(temp = av.size()),
         "Vector size: " << temp << ". Expected: " << (current_aliases_num+2));
@@ -668,10 +705,10 @@ RUNNER_TEST(T1042_create_RSA_key_foreign_label)
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_ACCESS_DENIED == (temp = manager->createKeyPairRSA(2048, CKM::Alias("iamsomebodyelse PRV_KEY2_RSA"), CKM::Alias("PUB_KEY2_RSA"), CKM::Policy(), CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_ACCESS_DENIED == (temp = manager->createKeyPairRSA(2048, CKM::Alias("PRV_KEY2_RSA"), CKM::Alias("iamsomebodyelse PUB_KEY2_RSA"), CKM::Policy(), CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1043_create_DSA_key)
@@ -683,10 +720,10 @@ RUNNER_TEST(T1043_create_DSA_key)
     size_t current_aliases_num = count_aliases(ALIAS_KEY);
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, CKM::Alias("PRV_KEY1_DSA"), CKM::Alias("PUB_KEY1_DSA"), CKM::Policy(), CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         (current_aliases_num+2) == static_cast<size_t>(temp = av.size()),
         "Vector size: " << temp << ". Expected: " << (current_aliases_num+2));
@@ -701,10 +738,10 @@ RUNNER_TEST(T1044_create_AES_key)
     int current_aliases_num = count_aliases(ALIAS_KEY);
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createKeyAES(128, CKM::Alias("KEY1_AES"), CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getKeyAliasVector(av)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         (current_aliases_num+1) == (temp = av.size()),
         "Vector size: " << temp << ". Expected: " << (current_aliases_num+1));
@@ -733,10 +770,10 @@ RUNNER_TEST(T1111_CreateKeyPairRSA)
     CKM::Policy p2;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairRSA(1024, a1, a2, p1, p2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1112_CreateKeyPairDSA)
@@ -749,10 +786,10 @@ RUNNER_TEST(T1112_CreateKeyPairDSA)
     CKM::Policy p2;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->createKeyPairDSA(1024, a1, a2, p1, p2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1113_CreateKeyPairECDSA)
@@ -765,7 +802,7 @@ RUNNER_TEST(T1113_CreateKeyPairECDSA)
     CKM::Policy p2;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createKeyPairECDSA(CKM::ElipticCurve::prime192v1, a1, a2, p1, p2)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1114_deinit)
@@ -803,10 +840,10 @@ RUNNER_TEST(T12101_key_exist)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_EXISTS == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
 }
 
 /*
@@ -836,7 +873,7 @@ RUNNER_TEST(T12102_saveKey_empty_alias)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
 }
 
 RUNNER_TEST(T12103_saveKey_foreign_label)
@@ -861,7 +898,7 @@ RUNNER_TEST(T12103_saveKey_foreign_label)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_ACCESS_DENIED == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
 }
 
 RUNNER_TEST(T12104_saveKey_empty_key)
@@ -875,35 +912,35 @@ RUNNER_TEST(T12104_saveKey_empty_key)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
 }
 
 RUNNER_TEST(T12105_saveCertificate_empty_alias)
 {
     ScopedDBUnlock unlock(USER_APP, APP_PASS);
 
-    auto cert = TestData::getTestCertificate(TestData::THIRD_PARTY_LEAF);
+    auto cert = TestData::getTestCertificate(TestData::TEST_LEAF);
     CKM::Alias alias; //alias is not initialized
 
     int temp;
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T12106_saveCertificate_foreign_label)
 {
     ScopedDBUnlock unlock(USER_APP, APP_PASS);
 
-    auto cert = TestData::getTestCertificate(TestData::THIRD_PARTY_LEAF);
+    auto cert = TestData::getTestCertificate(TestData::TEST_LEAF);
     CKM::Alias alias = "iamsomebodyelse alias";
 
     int temp;
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_ACCESS_DENIED == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T12107_saveCertificate_empty_cert)
@@ -917,7 +954,7 @@ RUNNER_TEST(T12107_saveCertificate_empty_cert)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T12108_saveData_empty_alias)
@@ -932,7 +969,7 @@ RUNNER_TEST(T12108_saveData_empty_alias)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T12109_saveData_foreign_label)
@@ -947,7 +984,7 @@ RUNNER_TEST(T12109_saveData_foreign_label)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_ACCESS_DENIED == (temp = manager->saveData(alias, buffer, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T12110_saveData_empty_data)
@@ -961,7 +998,7 @@ RUNNER_TEST(T12110_saveData_empty_data)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveData(alias, buffer, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 /*
@@ -979,7 +1016,7 @@ RUNNER_TEST(T12111_getKey_alias_not_exist)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getKey(alias, "", key)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T12112_getCertificate_alias_not_exist)
@@ -993,7 +1030,7 @@ RUNNER_TEST(T12112_getCertificate_alias_not_exist)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getCertificate(alias, CKM::Password(), certificate)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T12113_getData_alias_not_exist)
@@ -1006,7 +1043,7 @@ RUNNER_TEST(T12113_getData_alias_not_exist)
     CKM::Alias alias("some alias");
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getData(alias, "", buffer)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 /*
@@ -1038,7 +1075,7 @@ RUNNER_TEST(T12114_RSA_key_damaged)
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
 }
 
 RUNNER_TEST(T12115_RSA_key_too_short)
@@ -1064,7 +1101,7 @@ RUNNER_TEST(T12115_RSA_key_too_short)
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
 }
 
 RUNNER_TEST(T12116_DSA_key_too_short)
@@ -1093,7 +1130,7 @@ RUNNER_TEST(T12116_DSA_key_too_short)
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
 }
 
 RUNNER_TEST(T12117_AES_key_too_short)
@@ -1109,7 +1146,7 @@ RUNNER_TEST(T12117_AES_key_too_short)
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
 }
 
 /*
@@ -1157,7 +1194,7 @@ RUNNER_TEST(T12118_RSA_key_damaged_serviceTest)
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (ret = manager->saveKey(alias, key, CKM::Policy())),
-        "Error=" << CKMErrorToString(ret));
+        "Error=" << CKM::APICodeToString(ret));
 }
 
 RUNNER_TEST(T12119_saveCertificate_damaged_serviceTest)
@@ -1200,7 +1237,7 @@ RUNNER_TEST(T12119_saveCertificate_damaged_serviceTest)
     auto manager = CKM::Manager::create();
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_INPUT_PARAM == (temp = manager->saveCertificate(alias, cert, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T12120_deinit)
@@ -1257,32 +1294,34 @@ RUNNER_TEST(T13122_get_chain_empty_cert)
 
 RUNNER_TEST(T13129_get_chain)
 {
-    auto cert = TestData::getTestCertificate(TestData::OCSP_AVAILABLE_LEAF);
-    auto cert1 = TestData::getTestCertificate(TestData::OCSP_AVAILABLE_IM);
+    auto cert = TestData::getTestCertificate(TestData::TEST_LEAF);
+    auto cert1 = TestData::getTestCertificate(TestData::TEST_IM_CA);
+    auto root = TestData::getTestCertificate(TestData::TEST_ROOT_CA);
 
     CKM::CertificateShPtrVector certVector = {cert1};
     CKM::CertificateShPtrVector certChain;
+    CKM::CertificateShPtrVector trusted = {root};
 
     int tmp;
     auto manager = CKM::Manager::create();
 
     RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
-    RUNNER_ASSERT_MSG(false != cert1.get(), "Certificate should not be empty");
+    RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
 
     tmp = manager->getCertificateChain(cert,
                                        EMPTY_CERT_VECTOR,
-                                       EMPTY_CERT_VECTOR,
+                                       trusted,
                                        true,
                                        certChain);
     RUNNER_ASSERT_MSG(CKM_API_ERROR_VERIFICATION_FAILED == tmp,
-                         "Error=" << CKMErrorToString(tmp));
+                         "Error=" << CKM::APICodeToString(tmp));
 
     RUNNER_ASSERT_MSG(
         0 == certChain.size(),
         "Wrong size of certificate chain.");
 
-    tmp = manager->getCertificateChain(cert, certVector, EMPTY_CERT_VECTOR, true, certChain);
-    RUNNER_ASSERT_MSG(CKM_API_SUCCESS == tmp, "Error=" << CKMErrorToString(tmp));
+    tmp = manager->getCertificateChain(cert, certVector, trusted, true, certChain);
+    RUNNER_ASSERT_MSG(CKM_API_SUCCESS == tmp, "Error=" << CKM::APICodeToString(tmp));
 
     RUNNER_ASSERT_MSG(
         3 == certChain.size(),
@@ -1291,12 +1330,11 @@ RUNNER_TEST(T13129_get_chain)
 
 RUNNER_TEST(T1313_get_chain_with_alias)
 {
-    auto cert = TestData::getTestCertificate(TestData::OCSP_AVAILABLE_LEAF);
-    auto cert1 = TestData::getTestCertificate(TestData::OCSP_AVAILABLE_IM);
+    auto cert = TestData::getTestCertificate(TestData::TEST_LEAF);
+    auto cert1 = TestData::getTestCertificate(TestData::TEST_IM_CA);
+    auto root = TestData::getTestCertificate(TestData::TEST_ROOT_CA);
 
     CKM::CertificateShPtrVector certChain;
-    CKM::AliasVector aliasVector;
-    CKM::Alias alias = "imcert";
 
     int tmp;
     auto manager = CKM::Manager::create();
@@ -1304,22 +1342,26 @@ RUNNER_TEST(T1313_get_chain_with_alias)
     RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
     RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
 
-    tmp = manager->getCertificateChain(cert, aliasVector, EMPTY_ALIAS_VECTOR, true, certChain);
+    tmp = manager->getCertificateChain(cert, EMPTY_ALIAS_VECTOR, EMPTY_ALIAS_VECTOR, true, certChain);
     RUNNER_ASSERT_MSG(CKM_API_ERROR_VERIFICATION_FAILED == tmp,
-                         "Error=" << CKMErrorToString(tmp));
+                         "Error=" << CKM::APICodeToString(tmp));
 
     RUNNER_ASSERT_MSG(
         0 == certChain.size(),
         "Wrong size of certificate chain.");
 
+    CKM::AliasVector aliasVector = { "imcert" };
     RUNNER_ASSERT_MSG(
-        CKM_API_SUCCESS == (tmp = manager->saveCertificate(alias, cert1, CKM::Policy())),
-        "Error=" << CKMErrorToString(tmp));
+        CKM_API_SUCCESS == (tmp = manager->saveCertificate(aliasVector[0], cert1, CKM::Policy())),
+        "Error=" << CKM::APICodeToString(tmp));
 
-    aliasVector.push_back(alias);
+    CKM::AliasVector trustedAliasVector = { "rootcert" };
+    RUNNER_ASSERT_MSG(
+        CKM_API_SUCCESS == (tmp = manager->saveCertificate(trustedAliasVector[0], root, CKM::Policy())),
+        "Error=" << CKM::APICodeToString(tmp));
 
-    tmp = manager->getCertificateChain(cert, aliasVector, EMPTY_ALIAS_VECTOR, true, certChain);
-    RUNNER_ASSERT_MSG(CKM_API_SUCCESS == tmp, "Error=" << CKMErrorToString(tmp));
+    tmp = manager->getCertificateChain(cert, aliasVector, trustedAliasVector, true, certChain);
+    RUNNER_ASSERT_MSG(CKM_API_SUCCESS == tmp, "Error=" << CKM::APICodeToString(tmp));
 
     RUNNER_ASSERT_MSG(
         3 == certChain.size(),
@@ -1328,36 +1370,26 @@ RUNNER_TEST(T1313_get_chain_with_alias)
 
 RUNNER_TEST(T13141_ocsp_check_valid_chain)
 {
-    auto cert = TestData::getTestCertificate(TestData::OCSP_AVAILABLE_LEAF);
-    auto cert1 = TestData::getTestCertificate(TestData::OCSP_AVAILABLE_IM);
-    CKM::CertificateShPtrVector certVector = {cert1};
+    auto cert = TestData::getTestCertificate(TestData::OCSP_AVAILABLE_IM);
+
     CKM::CertificateShPtrVector certChain;
 
     int tmp;
     auto manager = CKM::Manager::create();
 
     RUNNER_ASSERT_MSG(NULL != cert.get(), "Certificate should not be empty");
-    RUNNER_ASSERT_MSG(NULL != cert1.get(), "Certificate should not be empty");
 
     tmp = manager->getCertificateChain(cert, EMPTY_CERT_VECTOR, EMPTY_CERT_VECTOR, true, certChain);
-    RUNNER_ASSERT_MSG(CKM_API_ERROR_VERIFICATION_FAILED == tmp,
-                         "Error=" << CKMErrorToString(tmp));
-
-    RUNNER_ASSERT_MSG(
-        0 == certChain.size(),
-        "Wrong size of certificate chain.");
-
-    tmp = manager->getCertificateChain(cert, certVector, EMPTY_CERT_VECTOR, true, certChain);
-    RUNNER_ASSERT_MSG(CKM_API_SUCCESS == tmp, "Error=" << CKMErrorToString(tmp));
+    RUNNER_ASSERT_MSG(CKM_API_SUCCESS == tmp, "Error=" << CKM::APICodeToString(tmp));
 
     RUNNER_ASSERT_MSG(
-        3 == certChain.size(),
+        2 == certChain.size(),
         "Wrong size of certificate chain.");
 
     int status;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (tmp = manager->ocspCheck(certChain, status)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
 
     RUNNER_ASSERT_MSG(CKM_API_OCSP_STATUS_GOOD == status, "Verfication failed");
 }
@@ -1393,7 +1425,7 @@ RUNNER_TEST(T13143_ocsp_check_empty_ptrs)
 
 RUNNER_TEST(T13144_ocsp_check_root)
 {
-    auto root = TestData::getTestCertificate(TestData::THIRD_PARTY_ROOT_CA);
+    auto root = TestData::getTestCertificate(TestData::OCSP_ROOT_CA);
     CKM::CertificateShPtrVector certVector = {root};
 
     auto manager = CKM::Manager::create();
@@ -1423,7 +1455,7 @@ RUNNER_TEST(T13145_ocsp_check_no_ocsp)
     int status;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (tmp = manager->ocspCheck(certVector, status)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
 
     RUNNER_ASSERT_MSG(CKM_API_OCSP_STATUS_UNSUPPORTED == status, "Verfication failed");
 }
@@ -1505,10 +1537,10 @@ RUNNER_TEST(T1412_RSA_key_create_verify)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createSignature(
@@ -1518,7 +1550,7 @@ RUNNER_TEST(T1412_RSA_key_create_verify)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -1528,7 +1560,7 @@ RUNNER_TEST(T1412_RSA_key_create_verify)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1413_DSA_key_create_verify)
@@ -1580,10 +1612,10 @@ RUNNER_TEST(T1413_DSA_key_create_verify)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createSignature(
@@ -1593,7 +1625,7 @@ RUNNER_TEST(T1413_DSA_key_create_verify)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -1603,7 +1635,7 @@ RUNNER_TEST(T1413_DSA_key_create_verify)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 
@@ -1641,10 +1673,10 @@ RUNNER_TEST(T1414_ECDSA_key_create_verify)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createSignature(
@@ -1654,7 +1686,7 @@ RUNNER_TEST(T1414_ECDSA_key_create_verify)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -1664,7 +1696,7 @@ RUNNER_TEST(T1414_ECDSA_key_create_verify)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
 
@@ -1678,7 +1710,7 @@ RUNNER_TEST(T1414_ECDSA_key_create_verify)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1415_RSA_key_create_verify_negative)
@@ -1702,7 +1734,7 @@ RUNNER_TEST(T1415_RSA_key_create_verify_negative)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -1712,7 +1744,7 @@ RUNNER_TEST(T1415_RSA_key_create_verify_negative)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
     memcpy((void*)signature.data(), "BROKEN", 6);
@@ -1725,7 +1757,7 @@ RUNNER_TEST(T1415_RSA_key_create_verify_negative)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1416_DSA_key_create_verify_negative)
@@ -1749,7 +1781,7 @@ RUNNER_TEST(T1416_DSA_key_create_verify_negative)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -1759,7 +1791,7 @@ RUNNER_TEST(T1416_DSA_key_create_verify_negative)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
     memcpy((void*)signature.data(), "BROKEN", 6);
@@ -1772,7 +1804,7 @@ RUNNER_TEST(T1416_DSA_key_create_verify_negative)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1417_RSA_cert_create_verify_signature)
@@ -1833,10 +1865,10 @@ RUNNER_TEST(T1417_RSA_cert_create_verify_signature)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createSignature(
@@ -1846,7 +1878,7 @@ RUNNER_TEST(T1417_RSA_cert_create_verify_signature)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -1856,7 +1888,7 @@ RUNNER_TEST(T1417_RSA_cert_create_verify_signature)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
 
@@ -1870,7 +1902,7 @@ RUNNER_TEST(T1417_RSA_cert_create_verify_signature)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1418_DSA_cert_create_verify_signature)
@@ -1930,10 +1962,10 @@ RUNNER_TEST(T1418_DSA_cert_create_verify_signature)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createSignature(
@@ -1943,7 +1975,7 @@ RUNNER_TEST(T1418_DSA_cert_create_verify_signature)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -1953,7 +1985,7 @@ RUNNER_TEST(T1418_DSA_cert_create_verify_signature)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
 
@@ -1967,7 +1999,7 @@ RUNNER_TEST(T1418_DSA_cert_create_verify_signature)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1419_ECDSA_cert_create_verify_signature)
@@ -2021,10 +2053,10 @@ RUNNER_TEST(T1419_ECDSA_cert_create_verify_signature)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveCertificate(aliasPub, cert, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->createSignature(
@@ -2034,7 +2066,7 @@ RUNNER_TEST(T1419_ECDSA_cert_create_verify_signature)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -2044,7 +2076,7 @@ RUNNER_TEST(T1419_ECDSA_cert_create_verify_signature)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
 
@@ -2058,7 +2090,7 @@ RUNNER_TEST(T1419_ECDSA_cert_create_verify_signature)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1420_deinit)
@@ -2131,10 +2163,10 @@ RUNNER_TEST(T14180_init)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPub, keyPub, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasPrv, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     // Prepare ECDSA Key Pair
     std::string ecprv = "-----BEGIN EC PRIVATE KEY-----\n"
@@ -2161,10 +2193,10 @@ RUNNER_TEST(T14180_init)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPub, ecKeyPub, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(aliasEcPrv, ecKeyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 
@@ -2189,7 +2221,7 @@ RUNNER_TEST(T14181_RSA_create_signatue_nohash)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -2199,7 +2231,7 @@ RUNNER_TEST(T14181_RSA_create_signatue_nohash)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
     memcpy((void*)signature.data(), "BROKEN", 6);
@@ -2212,7 +2244,7 @@ RUNNER_TEST(T14181_RSA_create_signatue_nohash)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T14182_RSA_create_signatue_nohash_nopad)
@@ -2236,7 +2268,7 @@ RUNNER_TEST(T14182_RSA_create_signatue_nohash_nopad)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T14183_RSA_create_signatue_nohash_bigmsg)
@@ -2279,7 +2311,7 @@ RUNNER_TEST(T14183_RSA_create_signatue_nohash_bigmsg)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 
@@ -2290,78 +2322,22 @@ RUNNER_TEST(T14184_ECDSA_create_signatue_nohash)
 
     std::string message = "message test";
 
-    CKM::Alias aliasPub = "ecpub_nohash1";
     CKM::Alias aliasPrv = "ecprv_nohash1";
     CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
     CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
     CKM::RawBuffer signature;
 
     RUNNER_ASSERT_MSG(
-        CKM_API_SUCCESS == (temp = manager->createSignature(
-                                        aliasPrv,
-                                        CKM::Password(),
-                                        CKM::RawBuffer(message.begin(), message.end()),
-                                        hash,
-                                        padd,
-                                        signature)),
-        "Error=" << CKMErrorToString(temp));
-
-    RUNNER_ASSERT_MSG(
-        CKM_API_SUCCESS == (temp = manager->verifySignature(
-                                        aliasPub,
-                                        CKM::Password(),
-                                        CKM::RawBuffer(message.begin(), message.end()),
-                                        signature,
-                                        hash,
-                                        padd)),
-        "Error=" << CKMErrorToString(temp));
-
-    RUNNER_ASSERT_MSG(signature.size() > 6, "Signature is too small");
-
-    memcpy((void*)signature.data(), "BROKEN", 6);
-
-    RUNNER_ASSERT_MSG(
-        CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
-                                        aliasPub,
-                                        CKM::Password(),
-                                        CKM::RawBuffer(message.begin(), message.end()),
-                                        signature,
-                                        hash,
-                                        padd)),
-        "Error=" << CKMErrorToString(temp));
-}
-
-RUNNER_TEST(T14185_ECDSA_create_signatue_nohash_bigmsg)
-{
-    int temp;
-    auto manager = CKM::Manager::create();
-
-    int msgSize = 1024*1024;
-    char big_msg[msgSize];
-    for(int i =0; i<msgSize-1; i++) {
-        big_msg[i] = 'a';
-    }
-    big_msg[msgSize-1]=0x00;
-    std::string message(big_msg);
-
-    CKM::Alias aliasPub = "ecpub_nohash1";
-    CKM::Alias aliasPrv = "ecprv_nohash1";
-    CKM::HashAlgorithm hash = CKM::HashAlgorithm::NONE;
-    CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::NONE;
-    CKM::RawBuffer signature;
-
-    RUNNER_ASSERT_MSG(
-            CKM_API_SUCCESS == (temp = manager->createSignature(
+        CKM_API_ERROR_INPUT_PARAM == (temp = manager->createSignature(
                                         aliasPrv,
                                         CKM::Password(),
                                         CKM::RawBuffer(message.begin(), message.end()),
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
-
 RUNNER_TEST(T14189_deinit)
 {
     remove_user_data(USER_APP);
@@ -2485,11 +2461,11 @@ RUNNER_TEST(T1804_add_PKCS_collision_with_existing_alias)
     int temp;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(alias_PKCS_collision, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_EXISTS == (temp = manager->savePKCS12(alias_PKCS_collision, pkcs, CKM::Policy(), CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1805_add_bundle_with_chain_certificates)
@@ -2529,34 +2505,34 @@ RUNNER_TEST(T1805_add_bundle_with_chain_certificates)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (tmp = manager->savePKCS12(alias_PKCS_exportable, pkcs, exportable, exportable)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_EXISTS == (tmp = manager->savePKCS12(alias_PKCS_exportable, pkcs, exportable, exportable)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (tmp = manager->savePKCS12(alias_PKCS_not_exportable, pkcs, notExportable, notExportable)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_EXISTS == (tmp = manager->savePKCS12(alias_PKCS_not_exportable, pkcs, notExportable, notExportable)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
 
     // try to lookup key
     CKM::KeyShPtr key_lookup;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (tmp = manager->getKey(alias_PKCS_exportable, CKM::Password(), key_lookup)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_NOT_EXPORTABLE == (tmp = manager->getKey(alias_PKCS_not_exportable, CKM::Password(), key_lookup)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
 
     // try to lookup certificate
     CKM::CertificateShPtr cert_lookup;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (tmp = manager->getCertificate(alias_PKCS_exportable, CKM::Password(), cert_lookup)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_NOT_EXPORTABLE == (tmp = manager->getCertificate(alias_PKCS_not_exportable, CKM::Password(), cert_lookup)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
 }
 
 RUNNER_TEST(T1806_get_PKCS)
@@ -2569,17 +2545,17 @@ RUNNER_TEST(T1806_get_PKCS)
     // fail - no entry
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (temp = manager->getPKCS12("i-do-not-exist", pkcs)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     // fail - not exportable
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_NOT_EXPORTABLE == (temp = manager->getPKCS12(alias_PKCS_not_exportable, pkcs)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     // success - exportable
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getPKCS12(alias_PKCS_exportable, pkcs)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     auto cert = pkcs->getCertificate();
     RUNNER_ASSERT_MSG(
@@ -2616,7 +2592,7 @@ RUNNER_TEST(T1807_create_and_verify_signature)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -2626,7 +2602,7 @@ RUNNER_TEST(T1807_create_and_verify_signature)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1808_create_signature_on_raw_key_and_verify_on_PKCS)
@@ -2634,21 +2610,23 @@ RUNNER_TEST(T1808_create_signature_on_raw_key_and_verify_on_PKCS)
     int temp;
     auto manager = CKM::Manager::create();
 
-    std::string prv = "-----BEGIN RSA PRIVATE KEY-----\n"
-        "MIICXQIBAAKBgQD1W9neUbXL1rnq9SvyzprjhWBKXyYKQirG3V2zyUnUaE24Sq2I\n"
-        "v7ISrwMN/G6WcjrGmeZDEWwrL4zXh002N8BD1waJPRonxwtVkhFy3emGatSmx7eI\n"
-        "ely5H+PBNImRvBh2u4GWga6OEXcUNdfaBUcxn+P6548/zpDhyNLzQKk5FwIDAQAB\n"
-        "AoGAR+4WkBuqTUj1FlGsAbHaLKt0UDlWwJknS0eoacWwFEpDxqx19WolfV67aYVA\n"
-        "snBolMKXg7/+0yZMhv8Ofr+XaHkPQplVVn9BwT0rmtEovJXwx+poRP9Bm3emglj/\n"
-        "iYd8EkaXDlIXCtewtQW9JEIctWppntHj3TvA/h7FCXPN6SkCQQD/N7sn5S1gBkVh\n"
-        "dyXQKoyKsZDb7hMIS1q6cKwYCMf2UrsD1/lnr7xXkvORdL213MfueO8g0WkuKfRY\n"
-        "bDD6WGX1AkEA9hxiOlsgvermqLJkOlJffbSaM8n/6wtnM0HV+Vd9NfSBOmxFDXPO\n"
-        "vrvdgiDPENhbqTJSQVDsfzHilTpK7lEvWwJBAJLxHoOg0tg3pBiyxgWtic+M3q+R\n"
-        "ykl7QViY6KzJ2X98MIrM/Z7yMollZXE4+sVLwZ0O6fdGOr3GkBWc7TImVUUCQQC7\n"
-        "pf6bQfof9Ce0fnf/I+ldHkPost7nJsWkBlGQkM2OQwP5OK4ZyK/dK76DxmI7FMwm\n"
-        "oJCo7nuzq6R4ZX7WYJ47AkBavxBDo/e9/0Vk5yrloGKW3f8RQXBJLcCkVUGyyJ3D\n"
-        "3gu/nafW4hzjSJniTjC1fOj0eb0OSg1JAvqHTYAnUsI7\n"
-        "-----END RSA PRIVATE KEY-----";
+    std::string prv =
+        "-----BEGIN RSA PRIVATE KEY-----\n"
+        "MIICWwIBAAKBgQDDgmPurTQa3wbnlM+9nCEQvhDviYRvSC9TL5lAMBCmBSl93v0U\n"
+        "BXWsqO+fmAINm5QJa89hF5N7Q4xtvfSJUPIeyzowTOEGM4U3FnJtlsNQsoNbFlNy\n"
+        "QLoZZmmY4ljG6/YqX+JGBgS9/J8uvaDWkvs+ktkORygfNz4Gi5DERT7eeQIDAQAB\n"
+        "AoGAARIqx/js6yTDnesjxC8hwzy3TQic0Bs+Hx+IoGBjBvXKR2U8T6rD/UEjpuUn\n"
+        "RbnPcsnDZg3CAg/ZqhQ7TbFC0kPo+S6+wKsZGDWUUvnpMkdcZUqXel8GFhdnmeIh\n"
+        "22vYthP4TCbolxwXlwvuhu0PLZWhRO/Z+g37T3QENexqGv0CQQDmqJ9PDoUj5eUR\n"
+        "wWEqEPraoU6ARBUUX5EhmTT9g9/BXnhwumIOksDHcBqNUwNOlKCUlWfBOelO93Ys\n"
+        "PRW3QyejAkEA2P0tW/8iU4j+0a6DV+TUYFDTjD29y8KPw0Aj59591xD5eIPK3IgU\n"
+        "91vnmtvU/QR26PnMOx4OAPk9a7BtN62zMwJAIFV0950edtjMUr/cAgydTbadDYf9\n"
+        "uHxpGN+kOQGahT3b/llyU36o/YwufK8tYH+fPxTulXyrwwEXlL3/ZFBKpwJAeLGS\n"
+        "Wlp2WGqZ+j2MdwYkDxLGKHprKHwnBN6XWjCKZGbfrGX6H2Jd7xyinaNrO/UQwxO2\n"
+        "wqc7+NSpkk3G4jJuuwJAODYlk2Q+djE4jkjDc4xiqsQGBQlI2dlgzjRjIF4HWiLx\n"
+        "bIrI0uCCbGItx++hlvmDx7G8anBmIFfBWIaKdX0aWw==\n"
+        "-----END RSA PRIVATE KEY-----\n";
+
     std::string message = "message test";
 
     auto keyPrv = CKM::Key::create(CKM::RawBuffer(prv.begin(), prv.end()), CKM::Password());
@@ -2657,7 +2635,7 @@ RUNNER_TEST(T1808_create_signature_on_raw_key_and_verify_on_PKCS)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(alias_PKCS_priv_key_copy, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
     CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
@@ -2671,7 +2649,7 @@ RUNNER_TEST(T1808_create_signature_on_raw_key_and_verify_on_PKCS)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->verifySignature(
@@ -2681,7 +2659,7 @@ RUNNER_TEST(T1808_create_signature_on_raw_key_and_verify_on_PKCS)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1809_create_signature_on_wrong_key_and_verify_on_PKCS)
@@ -2713,7 +2691,7 @@ RUNNER_TEST(T1809_create_signature_on_wrong_key_and_verify_on_PKCS)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->saveKey(alias_PKCS_priv_key_wrong, keyPrv, CKM::Policy())),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     CKM::HashAlgorithm hash = CKM::HashAlgorithm::SHA256;
     CKM::RSAPaddingAlgorithm padd = CKM::RSAPaddingAlgorithm::PKCS1;
@@ -2727,7 +2705,7 @@ RUNNER_TEST(T1809_create_signature_on_wrong_key_and_verify_on_PKCS)
                                         hash,
                                         padd,
                                         signature)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_VERIFICATION_FAILED == (temp = manager->verifySignature(
@@ -2737,7 +2715,7 @@ RUNNER_TEST(T1809_create_signature_on_wrong_key_and_verify_on_PKCS)
                                         signature,
                                         hash,
                                         padd)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1810_verify_get_certificate_chain)
@@ -2745,15 +2723,21 @@ RUNNER_TEST(T1810_verify_get_certificate_chain)
     // this certificate has been signed using PKCS chain
     std::string im =
         "-----BEGIN CERTIFICATE-----\n"
-        "MIIBozCCAQwCAQEwDQYJKoZIhvcNAQEFBQAwHDEaMBgGA1UEAwwRc2VydmVyQHRl\n"
-        "c3RtZS5jb20wHhcNMTUxMjA5MTA0NjU0WhcNMjUxMjA2MTA0NjU0WjAYMRYwFAYD\n"
-        "VQQDDA1lZUB0ZXN0bWUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP\n"
-        "+fNsZB1Vlmhnk0IwYDs7Pw9E38KQfTt/egqqRFN6IvIt0CCDBXqnPTujuvlO2OyL\n"
-        "XVuALnIBmTDm5Oz+oz+qiY6/XrVS/CoACNZyMo6ihG9OeocvDbU3jXEaPGL6ib/x\n"
-        "jlms0aA9d5L9TO2lEzEP7bFKgHCB8FWINcxSP5zl1QIDAQABMA0GCSqGSIb3DQEB\n"
-        "BQUAA4GBAKBpVJMkdK6/qnAz7d7Bul/BhhSLEYbNPdxRiUj3U2dt0GJgswMu2SNT\n"
-        "/3NXB8V8mnnXR6cWn5bmjyA7ZpQEKAatS/KEQ9wfLXyCgYDRebX71mVKAI3XcyxB\n"
-        "p2qsOWWaJhuHmC1GVjx3foL+RDrmRo6BiucNHMIuvrd1W36eKdhj\n"
+        "MIICxDCCAi0CFGHuCEUksqn0Rr3SXdhn+TlnL804MA0GCSqGSIb3DQEBCwUAMGEx\n"
+        "CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl\n"
+        "cm5ldCBXaWRnaXRzIFB0eSBMdGQxGjAYBgNVBAMMEXNlcnZlckB0ZXN0bWUuY29t\n"
+        "MB4XDTE5MDYxMzEyMTkyNloXDTI5MDYxMDEyMTkyNlowXTELMAkGA1UEBhMCQVUx\n"
+        "EzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMg\n"
+        "UHR5IEx0ZDEWMBQGA1UEAwwNZWVAdGVzdG1lLmNvbTCCASIwDQYJKoZIhvcNAQEB\n"
+        "BQADggEPADCCAQoCggEBAK3/XvE3uc2EhzwmsAfq6KEw52J8kCAB9Rma/qjkw6ZT\n"
+        "yUYmSQvmcK8wSDt015Y/ekYLereCeWNLNkFlQeZC7LHT6T1mGnxNIgL3oUS2c+15\n"
+        "FEYX9QJIN/CoJYQ/tmiQPa1OJz4prUFwqAzM1kRtHGfcAGmQHfgu77P3ljAJzfsW\n"
+        "2beVHM+MTNSybkGHql28Z93bp382k5FQXegkxbozsKBMk37QjKiqes29J/ET0Huy\n"
+        "yzOkf+XvbizIPRvMt/2guw9sgRb7YrM2M+igmHIHxfzxuqzpPr+bmcqQdyFdVkAK\n"
+        "Qcx930HbfjHJ5k5vcovPLQ3LvSnYVCTe7aCAAmMzKXsCAwEAATANBgkqhkiG9w0B\n"
+        "AQsFAAOBgQBfFMim/9zLd+EeZyeYA0vy3C9YuNJI+KsZlKAfrFDQNeIT/qg/GQM4\n"
+        "o7I3TIHQ62tdEx6nBJs0DKSAmhRh4yc+P1KHMzIQIgSjftqS3Z+AKbJn6vOpWNTq\n"
+        "cexnpexaNn69dbqJZsjr0fHsGAkh5n96icAB4VZyFncEknZKbTdd0g==\n"
         "-----END CERTIFICATE-----\n";
 
     auto cert = CKM::Certificate::create(CKM::RawBuffer(im.begin(), im.end()), CKM::DataFormat::FORM_PEM);
@@ -2771,7 +2755,7 @@ RUNNER_TEST(T1810_verify_get_certificate_chain)
                                        true,
                                        certChain);
     RUNNER_ASSERT_MSG(CKM_API_ERROR_VERIFICATION_FAILED == tmp,
-                         "Error=" << CKMErrorToString(tmp));
+                         "Error=" << CKM::APICodeToString(tmp));
 
     RUNNER_ASSERT_MSG(
         0 == certChain.size(),
@@ -2780,7 +2764,7 @@ RUNNER_TEST(T1810_verify_get_certificate_chain)
     aliasVector.push_back(alias_PKCS_exportable);
 
     tmp = manager->getCertificateChain(cert, EMPTY_ALIAS_VECTOR, aliasVector, false, certChain);
-    RUNNER_ASSERT_MSG(CKM_API_SUCCESS == tmp, "Error=" << CKMErrorToString(tmp));
+    RUNNER_ASSERT_MSG(CKM_API_SUCCESS == tmp, "Error=" << CKM::APICodeToString(tmp));
 
     // 1(cert) + 1(pkcs12 cert) + 2(pkcs12 chain cert) = 4
     RUNNER_ASSERT_MSG(
@@ -2797,29 +2781,29 @@ RUNNER_TEST(T1811_remove_bundle_with_chain_certificates)
     // remove the whole PKCS12 bundles
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (tmp = manager->removeAlias(alias_PKCS_exportable)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (tmp = manager->removeAlias(alias_PKCS_not_exportable)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
 
     // expect lookup fails due to unknown alias
     // try to lookup key
     CKM::KeyShPtr key_lookup;
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (tmp = manager->getKey(alias_PKCS_exportable, CKM::Password(), key_lookup)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (tmp = manager->getKey(alias_PKCS_not_exportable, CKM::Password(), key_lookup)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
 
     // try to lookup certificate
     CKM::CertificateShPtr cert_lookup;
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (tmp = manager->getCertificate(alias_PKCS_exportable, CKM::Password(), cert_lookup)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == (tmp = manager->getCertificate(alias_PKCS_not_exportable, CKM::Password(), cert_lookup)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
 }
 
 RUNNER_TEST(T1812_get_pkcs12_password_tests)
@@ -2846,32 +2830,32 @@ RUNNER_TEST(T1812_get_pkcs12_password_tests)
     int temp;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->savePKCS12(alias, pkcs, CKM::Policy(pass1), CKM::Policy(pass2))),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getPKCS12(alias, pkcs)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getPKCS12(alias, CKM::Password(), CKM::Password(), pkcs)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getPKCS12(alias, pass1, CKM::Password(), pkcs)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getPKCS12(alias, CKM::Password(), pass2, pkcs)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getPKCS12(alias, pass1, pass2, pkcs)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     CKM::CertificateShPtr cert;
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = manager->getCertificate(alias, pass2, cert)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 
     CKM::CertificateShPtrVector certChain;
     CKM::AliasVector certVect;
@@ -2879,7 +2863,7 @@ RUNNER_TEST(T1812_get_pkcs12_password_tests)
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_AUTHENTICATION_FAILED == (temp = manager->getCertificateChain(cert, certVect, certVect, true, certChain)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST(T1813_deinit)
@@ -2889,7 +2873,7 @@ RUNNER_TEST(T1813_deinit)
 
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (temp = control->lockUserKey(USER_APP)),
-        "Error=" << CKMErrorToString(temp));
+        "Error=" << CKM::APICodeToString(temp));
 }
 
 RUNNER_TEST_GROUP_INIT(T190_CKM_EMPTY_STORAGE_TESTS);
@@ -2912,7 +2896,7 @@ RUNNER_TEST(T1902_get_data)
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_ALIAS_UNKNOWN == status1,
-        "Could not put certificate in datbase. Error=" << CKMErrorToString(status1));
+        "Could not put certificate in datbase. Error=" << CKM::APICodeToString(status1));
 }
 
 RUNNER_TEST(T1903_lock_database)
@@ -2921,7 +2905,7 @@ RUNNER_TEST(T1903_lock_database)
     auto control = CKM::Control::create();
     RUNNER_ASSERT_MSG(
         CKM_API_SUCCESS == (tmp = control->lockUserKey(USER_APP)),
-        "Error=" << CKMErrorToString(tmp));
+        "Error=" << CKM::APICodeToString(tmp));
 }
 
 RUNNER_TEST(T1904_get_data_from_locked_database)
@@ -2933,7 +2917,7 @@ RUNNER_TEST(T1904_get_data_from_locked_database)
 
     RUNNER_ASSERT_MSG(
         CKM_API_ERROR_DB_LOCKED == status1,
-        "Could not get key from locked database. Error=" << CKMErrorToString(status1));
+        "Could not get key from locked database. Error=" << CKM::APICodeToString(status1));
 }
 
 RUNNER_TEST(T1905_deinit)
@@ -2954,5 +2938,9 @@ int main(int argc, char *argv[])
         return -1;
     }
 
-    return DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);
+    int exitCode = DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);
+
+    detectCkmBugTrustzoneLeak();
+
+    return exitCode;
 }