Certificate chain tests moved to separate file
[platform/core/test/security-tests.git] / tests / ckm / capi-testcases.cpp
index cf6cc70..d1aa73c 100644 (file)
@@ -14,6 +14,8 @@
 #include <ckmc/ckmc-type.h>
 #include <ckmc/ckmc-error.h>
 
+#include <ckm-common.h>
+
 #include <string>
 #include <string.h>
 #include <stdio.h>
@@ -23,8 +25,7 @@
 static const int USER_APP = 5000;
 static const int GROUP_APP = 5000;
 
-namespace
-{
+namespace {
 
 typedef enum {
        ALIAS_KEY,
@@ -91,7 +92,8 @@ ckmc_raw_buffer_s prepare_message_buffer(const char * input)
        retval.size = strlen(input);
        return retval;
 }
-}
+
+} // namespace anonymous
 
 
 RUNNER_TEST_GROUP_INIT (T301_CKMC_CONTROL_C_API);
@@ -101,10 +103,10 @@ RUNNER_TEST(T3011_Control_C_API)
        int temp;
 
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3012_Control_C_API)
@@ -112,9 +114,9 @@ RUNNER_TEST(T3012_Control_C_API)
        int temp;
 
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "simple-password")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3013_Control_C_API)
@@ -122,7 +124,7 @@ RUNNER_TEST(T3013_Control_C_API)
        int temp;
 
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "simple-password")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3014_Control_C_API)
@@ -130,27 +132,27 @@ RUNNER_TEST(T3014_Control_C_API)
        int temp;
        const uid_t UNIQUE_USER = 15;
 
-       // clean up environment
-       RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(UNIQUE_USER)),
-                       "Error=" << temp);
-       // unlock with default password
-       RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(UNIQUE_USER, NULL)),
-                       "Error=" << temp);
+    // clean up environment
+    RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(UNIQUE_USER)),
+            CKMCReadableError(temp));
+    // unlock with default password
+    RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(UNIQUE_USER, NULL)),
+            CKMCReadableError(temp));
        // reset password (NULL, "simple-password")
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_reset_user_password(UNIQUE_USER, "simple-password")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        // get rid of NULL DKEK
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(UNIQUE_USER, "simple-password")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        // lock db
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(UNIQUE_USER)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        // try to reset password when db locked
        RUNNER_ASSERT_MSG( CKMC_ERROR_BAD_REQUEST == (temp = ckmc_reset_user_password(UNIQUE_USER, "simple-password")),
-                       "Error=" << temp);
-       // clean up environment
-       RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(UNIQUE_USER)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
+    // clean up environment
+    RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(UNIQUE_USER)),
+            CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3015_Control_C_API)
@@ -159,14 +161,14 @@ RUNNER_TEST(T3015_Control_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(20, "test-pass")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_change_user_password(20, "test-pass", "new-pass")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(20)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(20)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3016_Control_C_API)
@@ -175,16 +177,16 @@ RUNNER_TEST(T3016_Control_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(20)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(20)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST_GROUP_INIT (T302_CKMC_QUICK_SET_GET_TESTS_C_API);
@@ -195,10 +197,10 @@ RUNNER_TEST(T3021_init_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "test-pass")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(USER_APP, USER_PASS)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3022_key_C_API)
@@ -236,11 +238,11 @@ RUNNER_TEST(T3022_key_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(alias, test_key, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key(alias, password, &test_key2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3023_certificate_C_API)
@@ -293,11 +295,11 @@ RUNNER_TEST(T3023_certificate_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_cert(alias, cert, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_cert(alias, password, &cert2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        ckmc_cert_free(cert2);
 }
@@ -312,16 +314,16 @@ RUNNER_TEST(T3024_certificate_remove_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_cert(alias, password, &cert2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        ckmc_cert_free(cert2);
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_cert(alias)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE != (temp = ckmc_get_cert(alias, password, &cert2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3025_certificate_list_C_API)
@@ -373,15 +375,15 @@ RUNNER_TEST(T3025_certificate_list_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_cert("cert_test1", cert, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_cert("cert_test2", cert, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_cert("cert_test3", cert, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        (current_aliases_num+3) == (temp = count_aliases(ALIAS_CERT)),
@@ -429,10 +431,10 @@ RUNNER_CHILD_TEST(T3026_user_app_save_key_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(alias, test_key, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key(alias, passwordPolicy, &test_key2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        //       RUNNER_ASSERT_MSG(
        //                       key.getDER() == key2.getDER(), "Key value has been changed by service");
@@ -473,11 +475,11 @@ RUNNER_CHILD_TEST(T3027_app_user_save_keys_exportable_flag)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key("appkey1", test_key, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NOT_EXPORTABLE == (temp = ckmc_get_key("appkey1", password, &test_key2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 
@@ -530,11 +532,11 @@ RUNNER_TEST(T3028_certificate_with_DSA_key_C_API)
        const char *alias = "test-cert-1-DSA";
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_cert(alias, cert, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_cert(alias, password, &cert2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        ckmc_cert_free(cert2);
 }
@@ -544,15 +546,15 @@ RUNNER_TEST(T3029_deinit_C_API)
        int temp;
 
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 
@@ -564,10 +566,10 @@ RUNNER_TEST(T3031_init_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "simple-password")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(USER_APP, "simple-password")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3032_save_keys_get_alias_C_API)
@@ -609,15 +611,15 @@ RUNNER_TEST(T3032_save_keys_get_alias_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key("rootkey1", test_key, test_policy1)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key("rootkey2", test_key, test_policy2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key("rootkey3", test_key, test_policy3)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        (current_aliases_num+3) == (temp = count_aliases(ALIAS_KEY)),
@@ -634,15 +636,15 @@ RUNNER_TEST(T3033_remove_key_C_API)
        ckmc_key_s *test_key2;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key("rootkey1", password, &test_key2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_key("rootkey1")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE != (temp = ckmc_get_key("rootkey1", password, &test_key2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3034_deinit_C_API)
@@ -650,15 +652,15 @@ RUNNER_TEST(T3034_deinit_C_API)
        int temp;
 
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST_GROUP_INIT (T3040_CKMC_QUICK_REMOVE_BIN_DATA_TEST_C_API);
@@ -668,10 +670,10 @@ RUNNER_TEST(T3041_init_C_API)
        int temp;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "simple-password")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(USER_APP, "simple-password")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3042_save_get_bin_data_C_API)
@@ -680,7 +682,7 @@ RUNNER_TEST(T3042_save_get_bin_data_C_API)
 
        ckmc_raw_buffer_s testData1, testData2, testData3;
        char* password = NULL;
-       
+
        std::string binData1 = "My bin data1";
        std::string binData2 = "My bin data2";
        std::string binData3 = "My bin data3";
@@ -698,7 +700,7 @@ RUNNER_TEST(T3042_save_get_bin_data_C_API)
        testData3.size = binData3.length()+1;
 
        ckmc_policy_s test_policy1, test_policy2, test_policy3;
-       
+
        test_policy1.password = password;
        test_policy1.extractable = 1;
        test_policy2.password = password;
@@ -710,20 +712,20 @@ RUNNER_TEST(T3042_save_get_bin_data_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_data("data1", testData1, test_policy1)), // should change it as null value
-                       "Error=" << temp);
-       
+                       CKMCReadableError(temp));
+
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_data("data2", testData2, test_policy1)), // should change it as null value
-                       "Error=" << temp);
-       
+                       CKMCReadableError(temp));
+
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_data("data3", testData3, test_policy2)),
-                       "Error=" << temp);
-       
+                       CKMCReadableError(temp));
+
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_INVALID_PARAMETER == (temp = ckmc_save_data("data4", testData3, test_policy3)),
-                       "Error=" << temp);
-       
+                       CKMCReadableError(temp));
+
        RUNNER_ASSERT_MSG(
                        (current_aliases_num+3) == (temp = count_aliases(ALIAS_DATA)),
                        "Error: expecting " << (current_aliases_num+3) << " aliases, while found " << temp);
@@ -731,8 +733,8 @@ RUNNER_TEST(T3042_save_get_bin_data_C_API)
        ckmc_raw_buffer_s *testData4;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_data("data2", password, &testData4)),
-                       "Error=" << temp);
-       
+                       CKMCReadableError(temp));
+
        int compareResult;
        compareResult = (strcmp((const char *)testData2.data, (const char *)testData4->data));
        RUNNER_ASSERT_MSG( compareResult == 0,
@@ -768,13 +770,13 @@ RUNNER_CHILD_TEST(T3043_app_user_save_bin_data_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_data("appdata1", testData1, test_policy1)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_data("appdata2", testData1, test_policy1)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_data("appdata3", testData1, test_policy2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                                (current_aliases_num+3) == (temp = count_aliases(ALIAS_DATA)),
@@ -789,10 +791,10 @@ RUNNER_TEST(T3044_remove_bin_data_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_data("data1")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_data("data3")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                                (current_aliases_num-2) == (temp = count_aliases(ALIAS_DATA)),
@@ -811,7 +813,7 @@ RUNNER_TEST(T3044_remove_bin_data_C_API)
        CKM::RawBuffer buffer;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_data("data2", password, &testData1)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        int compareResult;
        compareResult = (strcmp((const char *)testData2.data, (const char *)testData1->data));
@@ -820,7 +822,7 @@ RUNNER_TEST(T3044_remove_bin_data_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_DB_ALIAS_UNKNOWN == (temp = ckmc_get_data("data3", password, &testData1)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3045_deinit_C_API)
@@ -829,16 +831,16 @@ RUNNER_TEST(T3045_deinit_C_API)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST_GROUP_INIT(T305_CKMC_QUICK_CREATE_PAIR_CAPI);
@@ -849,11 +851,11 @@ RUNNER_TEST(T3051_CAPI_init)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(USER_APP, USER_PASS)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_CHILD_TEST(T3052_CAPI_create_rsa_key)
@@ -881,7 +883,7 @@ RUNNER_CHILD_TEST(T3052_CAPI_create_rsa_key)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_key_pair_rsa(size, private_key_alias, public_key_alias, policy_private_key, policy_public_key)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        (current_aliases_num+2) == (temp = count_aliases(ALIAS_KEY)),
@@ -890,29 +892,29 @@ RUNNER_CHILD_TEST(T3052_CAPI_create_rsa_key)
        ckmc_key_s *privateKey;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key(private_key_alias, policy_private_key.password,&privateKey)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        privateKey->key_type == CKMC_KEY_RSA_PRIVATE,
                        "Key Type Error: expected =" << static_cast<int>(CKMC_KEY_RSA_PRIVATE) << ", actual=" << static_cast<int>(privateKey->key_type));
        RUNNER_ASSERT_MSG(
                        privateKey != NULL && privateKey->key_size > 0 && privateKey->raw_key != NULL,
-                       "Error=" << temp);
+                       "Private key is broken.");
 
        ckmc_key_s *publicKey;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key(public_key_alias, policy_public_key.password, &publicKey)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        publicKey->key_type == CKMC_KEY_RSA_PUBLIC,
                        "Key Type Error: expected =" << static_cast<int>(CKMC_KEY_RSA_PUBLIC) << ", actual=" << static_cast<int>(publicKey->key_type));
        RUNNER_ASSERT_MSG(
                        publicKey != NULL && publicKey->key_size > 0 && publicKey->raw_key != NULL,
-                       "Error=" << temp);
+                       "Public key is broken.");
 
        // on next attempt to generate keys with the same alias, expect fail (alias exists)
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_DB_ALIAS_EXISTS == (temp = ckmc_create_key_pair_rsa(size, private_key_alias, public_key_alias, policy_private_key, policy_public_key)),
-                       "Error=" << temp << ", ret=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_CHILD_TEST(T3053_CAPI_create_dsa_key)
@@ -934,7 +936,7 @@ RUNNER_CHILD_TEST(T3053_CAPI_create_dsa_key)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_key_pair_dsa(size, private_key_alias, public_key_alias, policy_private_key, policy_public_key)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        (current_aliases_num+2) == (temp = count_aliases(ALIAS_KEY)),
@@ -943,10 +945,10 @@ RUNNER_CHILD_TEST(T3053_CAPI_create_dsa_key)
        ckmc_key_s *privateKey = 0;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key(private_key_alias, policy_private_key.password,&privateKey)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        privateKey != NULL && privateKey->key_size > 0 && privateKey->raw_key != NULL,
-                       "Error=" << temp);
+                       "Private key is broken.");
        RUNNER_ASSERT_MSG(
                        privateKey->key_type == CKMC_KEY_DSA_PRIVATE,
                        "Key Type Error: expected =" << static_cast<int>(CKMC_KEY_DSA_PRIVATE) << ", actual=" << static_cast<int>(privateKey->key_type));
@@ -955,10 +957,10 @@ RUNNER_CHILD_TEST(T3053_CAPI_create_dsa_key)
        ckmc_key_s *pubKey = 0;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key(public_key_alias, policy_public_key.password, &pubKey)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        pubKey != NULL && pubKey->key_size > 0 && pubKey->raw_key != NULL,
-                       "Error=" << temp);
+                       "Public key is broken.");
        RUNNER_ASSERT_MSG(
                        pubKey->key_type == CKMC_KEY_DSA_PUBLIC,
                        "Key Type Error: expected =" << static_cast<int>(CKMC_KEY_DSA_PUBLIC) << ", actual=" << static_cast<int>(pubKey->key_type));
@@ -967,7 +969,7 @@ RUNNER_CHILD_TEST(T3053_CAPI_create_dsa_key)
        // on next attempt to generate keys with the same alias, expect fail (alias exists)
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_DB_ALIAS_EXISTS == (temp = ckmc_create_key_pair_dsa(size, private_key_alias, public_key_alias, policy_private_key, policy_public_key)),
-                       "Error=" << temp << ", ret=" << temp);
+                       CKMCReadableError(temp));
 }
 
 
@@ -977,10 +979,10 @@ RUNNER_TEST(T3054_CAPI_deinit)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 
@@ -991,16 +993,16 @@ RUNNER_TEST(T3061_CAPI_init)
        int temp;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "test-pass")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(USER_APP, USER_PASS)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3062_CAPI_CreateKeyPairRSA)
@@ -1021,12 +1023,12 @@ RUNNER_TEST(T3062_CAPI_CreateKeyPairRSA)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_key_pair_rsa(size, private_key_alias, public_key_alias, policy_private_key, policy_public_key)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        // on next attempt to generate keys with the same alias, expect fail (alias exists)
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_DB_ALIAS_EXISTS == (temp = ckmc_create_key_pair_rsa(size, private_key_alias, public_key_alias, policy_private_key, policy_public_key)),
-                       "Error=" << temp << ", ret=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3063_CAPI_CreateKeyPairDSA)
@@ -1047,7 +1049,7 @@ RUNNER_TEST(T3063_CAPI_CreateKeyPairDSA)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_key_pair_dsa(size, private_key_alias, public_key_alias, policy_private_key, policy_public_key)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3064_CAPI_CreateKeyPairECDSA)
@@ -1068,7 +1070,7 @@ RUNNER_TEST(T3064_CAPI_CreateKeyPairECDSA)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_key_pair_ecdsa(ectype, private_key_alias, public_key_alias, policy_private_key, policy_public_key)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3065_CAPI_deinit)
@@ -1077,10 +1079,10 @@ RUNNER_TEST(T3065_CAPI_deinit)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 // TODO
@@ -1088,17 +1090,17 @@ RUNNER_TEST(T3065_CAPI_deinit)
 
 
 
-RUNNER_TEST_GROUP_INIT(T307_CKMC_CAPI_QUICK_SET_GET_TESTS);
+RUNNER_TEST_GROUP_INIT(T307_CKMC_CAPI_OCSP_TESTS);
 
 RUNNER_TEST(T3071_CAPI_init)
 {
        int temp;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "test-pass")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
-RUNNER_TEST(T3072_CAPI_get_chain)
+RUNNER_TEST(T3074_CAPI_ckmc_ocsp_check)
 {
        std::string ee =
                "-----BEGIN CERTIFICATE-----\n"
@@ -1188,180 +1190,27 @@ RUNNER_TEST(T3072_CAPI_get_chain)
 
        ckmc_cert_list_s *cert_chain_list;
 
-       int tmp;
-
-       tmp = ckmc_get_cert_chain(&c_cert, &untrustedcerts, &cert_chain_list);
+    int        tmp = ckmc_get_cert_chain(&c_cert, &untrustedcerts, &cert_chain_list);
        RUNNER_ASSERT_MSG(
-                       CKMC_ERROR_NONE == tmp, "Error=" << tmp << "/" << CKM::ErrorToString(tmp));
+                       CKMC_ERROR_NONE == tmp, CKMCReadableError(tmp));
 
-       int cnt = 0;
-       ckmc_cert_list_s *current;
-       ckmc_cert_list_s *next =cert_chain_list;
-       do{
-               current = next;
-               next = current->next;
-               cnt ++;
-       }while(next != NULL);
-       RUNNER_ASSERT_MSG(cnt == 3, "Wrong size of certificate chain.");
+       RUNNER_ASSERT_MSG(cert_chain_list != NULL, "Wrong size of certificate chain.");
 
-       ckmc_cert_list_s *cert_chain_list2 = NULL;
-       ckmc_cert_list_s *untrustedcerts2 = NULL;
-       RUNNER_ASSERT_MSG(
-                       CKMC_ERROR_VERIFICATION_FAILED == (tmp = ckmc_get_cert_chain(&c_cert, untrustedcerts2, &cert_chain_list2)),
-                       "Error=" << tmp << "/" << CKM::ErrorToString(tmp));
-
-       RUNNER_ASSERT_MSG(
-                       cert_chain_list2 == NULL,
-                       "Wrong size of certificate chain.");
+    ckmc_ocsp_status_e ocsp_status;
+    RUNNER_ASSERT_MSG(CKMC_ERROR_NONE == (tmp = ckmc_ocsp_check(cert_chain_list, &ocsp_status)), CKMCReadableError(tmp));
+    RUNNER_ASSERT_MSG(ocsp_status == CKMC_OCSP_STATUS_GOOD, "Wrong status: " << static_cast<int>(ocsp_status));
 }
 
-RUNNER_TEST(T3073_CAPI_get_chain_with_alias)
-{
-       std::string ee =
-               "-----BEGIN CERTIFICATE-----\n"
-               "MIIF0TCCBLmgAwIBAgIQaPGTP4aS7Ut/WDNaBzdQrDANBgkqhkiG9w0BAQUFADCB\n"
-               "ujELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
-               "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\n"
-               "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMr\n"
-               "VmVyaVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTAeFw0x\n"
-               "NDAyMjAwMDAwMDBaFw0xNTAyMjAyMzU5NTlaMIHmMRMwEQYLKwYBBAGCNzwCAQMT\n"
-               "AlBMMR0wGwYDVQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjETMBEGA1UEBRMKMDAw\n"
-               "MDAyNTIzNzELMAkGA1UEBhMCUEwxDzANBgNVBBEUBjAwLTk1MDEUMBIGA1UECBML\n"
-               "bWF6b3dpZWNraWUxETAPBgNVBAcUCFdhcnN6YXdhMRYwFAYDVQQJFA1TZW5hdG9y\n"
-               "c2thIDE4MRMwEQYDVQQKFAptQmFuayBTLkEuMQwwCgYDVQQLFANESU4xGTAXBgNV\n"
-               "BAMUEHd3dy5tYmFuay5jb20ucGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n"
-               "AoIBAQDph6x8V6xUW/+651+qHF+UmorH9uaz2ZrX2bIWiMKIJFmpDDHlxcapKkqE\n"
-               "BV04is83aiCpqKtc2ZHy2g4Hpj1eSF5BP2+OAlo0YUQZPIeRRdiMjmeAxw/ncBDx\n"
-               "9rQBuCJ4XTD6cqQox5SI0TASOZ+wyAEjbDRXzL73XqRAFZ1LOpb2ONkolS+RutMB\n"
-               "vshvCsWPeNe7eGLuOh6DyC6r1vX9xhw3xnjM2mTSvmtimgzSLacNGKqRrsucUgcb\n"
-               "0+O5C2jZAtAMLyZksL92cxmWbtVzUYzem4chjHu5cRxUlPNzUJWrrczueB7Ip4A8\n"
-               "aQuFMfNXYc0x+WLWjy//urypMKjhAgMBAAGjggGjMIIBnzAbBgNVHREEFDASghB3\n"
-               "d3cubWJhbmsuY29tLnBsMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud\n"
-               "JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBEBgNVHSAEPTA7MDkGC2CGSAGG+EUB\n"
-               "BxcGMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9jcHMw\n"
-               "HQYDVR0OBBYEFN37iGaS7mZnENxZ9FGqNLR+QgoMMB8GA1UdIwQYMBaAFPyKULqe\n"
-               "uSVae1WFT5UAY4/pWGtDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9FVlNlY3Vy\n"
-               "ZS1jcmwudmVyaXNpZ24uY29tL0VWU2VjdXJlMjAwNi5jcmwwfAYIKwYBBQUHAQEE\n"
-               "cDBuMC0GCCsGAQUFBzABhiFodHRwOi8vRVZTZWN1cmUtb2NzcC52ZXJpc2lnbi5j\n"
-               "b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9FVlNlY3VyZS1haWEudmVyaXNpZ24uY29t\n"
-               "L0VWU2VjdXJlMjAwNi5jZXIwDQYJKoZIhvcNAQEFBQADggEBAD0wO+rooUrIM4qp\n"
-               "PHhp+hkXK6WMQ2qzGOmbMcZjw0govg5vkzkefPDryIXXbrF8mRagiJNMSfNaWWeh\n"
-               "Cj41OV24EdUl0OLbFxNzcvub599zRs/apfaRLTfsmlmOgi0/YP305i+3tJ2ll946\n"
-               "P+qV1wXnXqTqEdIl4Ys3+1HmDCdTB1hoDwAAzqRVUXZ5+iiwPAU7R/LTHfMjV1ke\n"
-               "8jtNFfrorlZMCfVH/7eEnHJvVjOJt+YFe4aFMzE+DfuYIK7MH+olC2v79kBwbnEQ\n"
-               "fvHMA9gFwOYLUBBdSfcocp8EKZ+mRlNPGR/3LBrPeaQQ0GZEkxzRK+v/aNTuiYfr\n"
-               "oFXtrg0=\n"
-               "-----END CERTIFICATE-----\n";
-
-       std::string im =
-               "-----BEGIN CERTIFICATE-----\n"
-               "MIIF5DCCBMygAwIBAgIQW3dZxheE4V7HJ8AylSkoazANBgkqhkiG9w0BAQUFADCB\n"
-               "yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\n"
-               "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\n"
-               "U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\n"
-               "ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\n"
-               "aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMTYxMTA3MjM1OTU5WjCBujEL\n"
-               "MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\n"
-               "ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg\n"
-               "aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNjE0MDIGA1UEAxMrVmVy\n"
-               "aVNpZ24gQ2xhc3MgMyBFeHRlbmRlZCBWYWxpZGF0aW9uIFNTTCBDQTCCASIwDQYJ\n"
-               "KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjboFXrnP0XeeOabhQdsVuYI4cWbod2\n"
-               "nLU4O7WgerQHYwkZ5iqISKnnnbYwWgiXDOyq5BZpcmIjmvt6VCiYxQwtt9citsj5\n"
-               "OBfH3doxRpqUFI6e7nigtyLUSVSXTeV0W5K87Gws3+fBthsaVWtmCAN/Ra+aM/EQ\n"
-               "wGyZSpIkMQht3QI+YXZ4eLbtfjeubPOJ4bfh3BXMt1afgKCxBX9ONxX/ty8ejwY4\n"
-               "P1C3aSijtWZfNhpSSENmUt+ikk/TGGC+4+peGXEFv54cbGhyJW+ze3PJbb0S/5tB\n"
-               "Ml706H7FC6NMZNFOvCYIZfsZl1h44TO/7Wg+sSdFb8Di7Jdp91zT91ECAwEAAaOC\n"
-               "AdIwggHOMB0GA1UdDgQWBBT8ilC6nrklWntVhU+VAGOP6VhrQzASBgNVHRMBAf8E\n"
-               "CDAGAQH/AgEAMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRw\n"
-               "czovL3d3dy52ZXJpc2lnbi5jb20vY3BzMD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6\n"
-               "Ly9FVlNlY3VyZS1jcmwudmVyaXNpZ24uY29tL3BjYTMtZzUuY3JsMA4GA1UdDwEB\n"
-               "/wQEAwIBBjARBglghkgBhvhCAQEEBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZ\n"
-               "MFcwVRYJaW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7\n"
-               "GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwKQYDVR0R\n"
-               "BCIwIKQeMBwxGjAYBgNVBAMTEUNsYXNzM0NBMjA0OC0xLTQ3MD0GCCsGAQUFBwEB\n"
-               "BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL0VWU2VjdXJlLW9jc3AudmVyaXNpZ24u\n"
-               "Y29tMB8GA1UdIwQYMBaAFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqGSIb3DQEB\n"
-               "BQUAA4IBAQCWovp/5j3t1CvOtxU/wHIDX4u6FpAl98KD2Md1NGNoElMMU4l7yVYJ\n"
-               "p8M2RE4O0GJis4b66KGbNGeNUyIXPv2s7mcuQ+JdfzOE8qJwwG6Cl8A0/SXGI3/t\n"
-               "5rDFV0OEst4t8dD2SB8UcVeyrDHhlyQjyRNddOVG7wl8nuGZMQoIeRuPcZ8XZsg4\n"
-               "z+6Ml7YGuXNG5NOUweVgtSV1LdlpMezNlsOjdv3odESsErlNv1HoudRETifLriDR\n"
-               "fip8tmNHnna6l9AW5wtsbfdDbzMLKTB3+p359U64drPNGLT5IO892+bKrZvQTtKH\n"
-               "qQ2mRHNQ3XBb7a1+Srwi1agm5MKFIA3Z\n"
-               "-----END CERTIFICATE-----\n";
-
-       ckmc_cert_s c_cert;
-       c_cert.raw_cert = reinterpret_cast<unsigned char *>(const_cast<char *>(ee.c_str()));
-       c_cert.cert_size = ee.size();
-       c_cert.data_format = CKMC_FORM_PEM;
-
-       // save untrusted certificate
-       ckmc_cert_s c_cert1;
-       c_cert1.raw_cert = reinterpret_cast<unsigned char *>(const_cast<char *>(im.c_str()));
-       c_cert1.cert_size = im.size();
-       c_cert1.data_format = CKMC_FORM_PEM;
-       ckmc_policy_s test_policy;
-       test_policy.password = NULL;
-       test_policy.extractable = 1;
-
-       const char *untrusted_alias = "untrusted_certificate";
-       int tmp;
-       RUNNER_ASSERT_MSG(
-                       CKMC_ERROR_NONE == (tmp = ckmc_save_cert(untrusted_alias, c_cert1, test_policy)),
-                       "Error=" << tmp);
-
-       CharPtr top_label = get_label();
-       std::string full_address = aliasWithLabel(top_label.get(), untrusted_alias);
-
-       // check if exists (access with full path)
-       ckmc_cert_s *c_cert_tmp;
-       RUNNER_ASSERT_MSG(
-                       CKMC_ERROR_NONE == (tmp = ckmc_get_cert(full_address.c_str(), NULL, &c_cert_tmp)),
-                       "Error=" << tmp);
-       ckmc_cert_free(c_cert_tmp);
-
-       // get cert chain using alias in full "label alias" form
-       ckmc_alias_list_s *untrustedcerts = (ckmc_alias_list_s *)malloc(sizeof(ckmc_alias_list_s));
-       untrustedcerts->alias = strdup(full_address.c_str());
-       untrustedcerts->next = NULL;
-       ckmc_cert_list_s *cert_chain_list;
-
-       tmp = ckmc_get_cert_chain_with_alias(&c_cert, untrustedcerts, &cert_chain_list);
-       RUNNER_ASSERT_MSG(
-                       CKMC_ERROR_NONE == tmp, "Error=" << tmp << "/" << CKM::ErrorToString(tmp));
-       ckmc_alias_list_free(untrustedcerts);
-
-
-       int cnt = 0;
-       ckmc_cert_list_s *current;
-       ckmc_cert_list_s *next = cert_chain_list;
-       do{
-               current = next;
-               next = current->next;
-               cnt ++;
-       }while(next != NULL);
-       RUNNER_ASSERT_MSG(cnt == 3, "Wrong size of certificate chain.");
-
-       ckmc_cert_list_s *cert_chain_list2 = NULL;
-       ckmc_alias_list_s *untrustedcerts2 = NULL;
-       RUNNER_ASSERT_MSG(
-                       CKMC_ERROR_VERIFICATION_FAILED == (tmp = ckmc_get_cert_chain_with_alias(&c_cert, untrustedcerts2, &cert_chain_list2)),
-                       "Error=" << tmp << "/" << CKM::ErrorToString(tmp));
-
-       RUNNER_ASSERT_MSG(
-                       cert_chain_list2 == NULL,
-                       "Wrong size of certificate chain.");
-}
-
-RUNNER_TEST(T3074_CAPI_deinit)
+RUNNER_TEST(T3075_CAPI_deinit)
 {
        int temp;
 
        RUNNER_ASSERT_MSG(
                CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-               "Error=" << temp);
+               CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-               "Error=" << temp);
+               CKMCReadableError(temp));
 }
 
 
@@ -1373,19 +1222,19 @@ RUNNER_TEST(T3081_CAPI__init)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(USER_APP, USER_PASS)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "test-pass")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3082_CAPI__rsa_key_create_verify)
@@ -1467,11 +1316,11 @@ RUNNER_TEST(T3082_CAPI__rsa_key_create_verify)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(pri_alias, prikey, pripolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(pub_alias, pubkey, pubpolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_signature(
@@ -1481,7 +1330,7 @@ RUNNER_TEST(T3082_CAPI__rsa_key_create_verify)
                                        hash_algo,
                                        pad_algo,
                                        &signature)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_verify_signature(
@@ -1491,7 +1340,7 @@ RUNNER_TEST(T3082_CAPI__rsa_key_create_verify)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3083_CAPI__rsa_key_create_verify_negative)
@@ -1515,7 +1364,7 @@ RUNNER_TEST(T3083_CAPI__rsa_key_create_verify_negative)
                                        hash_algo,
                                        pad_algo,
                                        &signature)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_verify_signature(
@@ -1525,7 +1374,7 @@ RUNNER_TEST(T3083_CAPI__rsa_key_create_verify_negative)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(signature->size > 6, "Signature is too small");
        memcpy((void*)signature->data, "BROKEN", 6);
@@ -1538,7 +1387,7 @@ RUNNER_TEST(T3083_CAPI__rsa_key_create_verify_negative)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3084_CAPI__ec_key_create_verify)
@@ -1588,10 +1437,10 @@ RUNNER_TEST(T3084_CAPI__ec_key_create_verify)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(pub_alias, pubkey, pubpolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(pri_alias, prikey, pripolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_signature(
@@ -1601,7 +1450,7 @@ RUNNER_TEST(T3084_CAPI__ec_key_create_verify)
                                        hash_algo,
                                        pad_algo,
                                        &signature)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_verify_signature(
@@ -1611,7 +1460,7 @@ RUNNER_TEST(T3084_CAPI__ec_key_create_verify)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(signature->size > 6, "Signature is too small");
        memcpy((void*)signature->data, "BROKEN", 6);
@@ -1624,7 +1473,7 @@ RUNNER_TEST(T3084_CAPI__ec_key_create_verify)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3085_CAPI__rsa_cert_create_verify_signature)
@@ -1698,10 +1547,10 @@ RUNNER_TEST(T3085_CAPI__rsa_cert_create_verify_signature)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_cert(pub_alias, cert, certpolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(pri_alias, prikey, pripolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
 
        RUNNER_ASSERT_MSG(
@@ -1712,7 +1561,7 @@ RUNNER_TEST(T3085_CAPI__rsa_cert_create_verify_signature)
                                        hash_algo,
                                        pad_algo,
                                        &signature)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_verify_signature(
@@ -1722,7 +1571,7 @@ RUNNER_TEST(T3085_CAPI__rsa_cert_create_verify_signature)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(signature->size > 6, "Signature is too small");
        memcpy((void*)signature->data, "BROKEN", 6);
@@ -1735,7 +1584,7 @@ RUNNER_TEST(T3085_CAPI__rsa_cert_create_verify_signature)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3086_CAPI__dsa_ext_key_create_verify_with_negative)
@@ -1801,11 +1650,11 @@ RUNNER_TEST(T3086_CAPI__dsa_ext_key_create_verify_with_negative)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(pri_alias, prikey, pripolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(pub_alias, pubkey, pubpolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_signature(
@@ -1815,7 +1664,7 @@ RUNNER_TEST(T3086_CAPI__dsa_ext_key_create_verify_with_negative)
                                        hash_algo,
                                        pad_algo,
                                        &signature)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        // positive test
        RUNNER_ASSERT_MSG(
@@ -1826,7 +1675,7 @@ RUNNER_TEST(T3086_CAPI__dsa_ext_key_create_verify_with_negative)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        // negative test
        ckmc_raw_buffer_s invalid_msg_buff = prepare_message_buffer("invalid message test");
@@ -1838,7 +1687,7 @@ RUNNER_TEST(T3086_CAPI__dsa_ext_key_create_verify_with_negative)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        ckmc_buffer_free(signature);
 }
@@ -1876,11 +1725,11 @@ RUNNER_TEST(T3087_CAPI__dsa_int_key_create_verify_with_negative)
        ckmc_key_s *prikey = NULL;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key(pri_alias, 0, &prikey)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key(pub_alias, 0, &pubkey)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_signature(
@@ -1890,7 +1739,7 @@ RUNNER_TEST(T3087_CAPI__dsa_int_key_create_verify_with_negative)
                                        hash_algo,
                                        pad_algo,
                                        &signature)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        // positive test
        RUNNER_ASSERT_MSG(
@@ -1901,7 +1750,7 @@ RUNNER_TEST(T3087_CAPI__dsa_int_key_create_verify_with_negative)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        // negative test
        ckmc_raw_buffer_s invalid_msg_buff = prepare_message_buffer("invalid message test");
@@ -1913,7 +1762,7 @@ RUNNER_TEST(T3087_CAPI__dsa_int_key_create_verify_with_negative)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        ckmc_key_free(prikey);
        ckmc_key_free(pubkey);
@@ -1985,10 +1834,10 @@ RUNNER_TEST(T3088_CAPI__ecdsa_cert_create_verify_signature)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_cert(pub_alias, cert, certpolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(pri_alias, prikey, pripolicy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_create_signature(
@@ -1998,7 +1847,7 @@ RUNNER_TEST(T3088_CAPI__ecdsa_cert_create_verify_signature)
                                        hash_algo,
                                        pad_algo,
                                        &signature)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_verify_signature(
@@ -2008,7 +1857,7 @@ RUNNER_TEST(T3088_CAPI__ecdsa_cert_create_verify_signature)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(signature->size > 6, "Signature is too small");
        memcpy((void*)signature->data, "BROKEN", 6);
@@ -2021,7 +1870,7 @@ RUNNER_TEST(T3088_CAPI__ecdsa_cert_create_verify_signature)
                                        *signature,
                                        hash_algo,
                                        pad_algo)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3089_CAPI__deinit)
@@ -2030,10 +1879,10 @@ RUNNER_TEST(T3089_CAPI__deinit)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 
@@ -2070,16 +1919,16 @@ RUNNER_TEST(T3091_CAPI_TYPE_init)
        int temp;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "test-pass")),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(USER_APP, USER_PASS)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3092_CAPI_TYPE_KEY)
@@ -2252,7 +2101,7 @@ RUNNER_TEST(T3095_CAPI_TYPE_load_cert_file)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (ret = ckmc_load_cert_from_file(file_name, &pcert)),
-                       "Error=" << CKM::ErrorToString(ret));
+            CKMCReadableError(ret));
 
        RUNNER_ASSERT_MSG(
                        pcert != NULL && pcert->cert_size > 0,"Fail to load cert from file.");
@@ -2264,105 +2113,15 @@ RUNNER_TEST(T3095_CAPI_TYPE_load_cert_file)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (ret = ckmc_save_cert(lcert_alias, *pcert, policy)),
-                       "Error=" << CKM::ErrorToString(ret));
+                       CKMCReadableError(ret));
 
        remove(file_name);
 }
 
 RUNNER_TEST(T3096_CAPI_TYPE_load_p12_file) {
-       std::string p12Base64 =
-               "MIINaQIBAzCCDS8GCSqGSIb3DQEHAaCCDSAEgg0cMIINGDCCChcGCSqGSIb3DQEH\n"
-               "BqCCCggwggoEAgEAMIIJ/QYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIvO01\n"
-               "D2ODdkYCAggAgIIJ0NscvWq3hmXai5DQcleOgELPbu2c97d+KJnRGCK7K3eRb0/v\n"
-               "4F3f3LFSFFT9OAK0/OS1ZYCiO+IuZ6Rpc8Baqe89xVcOHrQ0dQ7sIvbq10dnp5nY\n"
-               "fEcrt7qPXcRa3IdOX4PFo4aCOFq5bHv5M3quHldKRh4itosjsAGuF/xtnVnO6lU5\n"
-               "UlPhtAdr2Mpr4SHh+oBbJknLvyd6n/4xZ2elEA8ui4Qt5GfiHwWs2J7KO3Z8M1vW\n"
-               "yukuyVTaZ6RNkj8dkq/RttvVinlgATYLoosjCsH7VVcd+/z9JqD37QQ89pzdjvJg\n"
-               "CtXFVbqsOIbjPMkQMYtMdaPsLDDzw6l+q7BJreGIoJmTHbhTtNOJo03XPEnlVXUq\n"
-               "Q+224ibNKzLAvpSWOo8BUHK7ZDc1oaLODDZ+WAA6jfgHkuhhWYr9dxce6UdhMghJ\n"
-               "M7ixWwa350psdACREdGxNQzxmucmueprbDumVPAnnJfnKfgRXdKpTDFWS4TaYRc/\n"
-               "TE4lKSBZpFFduy/gdpLGCHdklTs33aWZ/mEVZJnk2PggKyvSKH9oL3DxkZIFkGdQ\n"
-               "wcy8gAuLBirdWB/q4JWqW7sH8kMfEwXACEm1z4SzCik8afamQNJEbovA3Pvrhw/P\n"
-               "1HE5KPNvKMaIr9kk5rTnGGTSNrSMqUCnBl4MjVS4HacrZvvt60y0D3RFB8IqlFMt\n"
-               "od2FagxojPyO/wP8jDERnySo2Irz0x0WUjWARtcLLH2FOK7ROkX1/WjRZmDV0jtv\n"
-               "yL8r97XZf/NddVU13Jt13dBJCjxZRvfJZgNI8RybkPQ3Y9J5LIOLVFPU3ZKIi7W7\n"
-               "KtCw/FCUfEdNarLQMWG0Z9bux7vu/eK1+KpF9pfzD3Q1V0sj2M158Q5W2gy9q/u0\n"
-               "gOOuybiZB2AL9kxBv0rqb8h7SF5ZIRoy85PrwtnX7w4Xq+4I7RA68bcEGyqgTWWb\n"
-               "XZxcY65F2slqekXddKeDSTizQk/APgWva/TwgaUeXR9YBCO4o71pla//FNqJ6pRm\n"
-               "tZjEY9ALBCc083gsImc7+LAeubEcYzjhhgRPQwGJfJTMqgC/NOa9wFhvNO4QcFjf\n"
-               "XQxxIFxlQJ64qU316FyeuyxLYGd02uakrLLgYtAGG7nPZCYNkUKvCwICKJYI+wAg\n"
-               "CX0FVwXsR1f33kVuV6sd4YConz80Lk9ayvNJVeCzEOBvhthbMcP3mIn22X+GT3jU\n"
-               "O5Z0bkXAU0C8XTfLQMk2m6Ag3mctrn4iJBPwQ7j12GnlSLko+e7IssRd4Qj4vBZd\n"
-               "KXUIoRcOsXqWoQgXJAtdLJEHVo0SUyxVojXsXqUZ3yYOkVUykvXZUcBnS6xwtaUt\n"
-               "EzdFsEO3NQSLOju5Tpp12lKbrgIToV75zyA3CULEdimEUWD/wA+pDaIS39shNyeE\n"
-               "edtAp3WF3mDkHQFyKG52IVx7hJU8jXXunvY21tshTAx/Gda0X1CtgSU7Q00ROr+L\n"
-               "TaehRiKsSgxQa6/jyJY5KY1hIDzwaem5Y7gDnxotmQuPhIX8MeD5Qdv6AVovfScN\n"
-               "07QuWyUBgFsZzbp79AsnPRLzoiAMQljMn7TXDDLq+uF922OU47BQkzlPfKAuHbyu\n"
-               "R+uZwtDfMD71FqWjCAHMPyENinsnUehCwX2pVxa6KSs61IsTfb3oUPY1TRxfZnfd\n"
-               "8SAUfPjKVss9Eyahuv+kzenPUDZn5LV9E0G0DGNxIf493A5Z29scNkQcCBjTJJvx\n"
-               "4BBJCES6SgkTQl7eFoBGOIqqytpYP9QZW5jy7ramgz/gF2kMKjAfikhbd5vB4Fwd\n"
-               "QlExMlbW+wL/ffr4AGlwenlDzXBFKQM0mYZNKLuB9LrRzw35fVFZ9XY06VCxhbMa\n"
-               "wI9gN4rKA3bNG3DCWTsr1TZ6CvrqFJjlfK4KF/+eNfnkIY8uVYxnPlRRkmPw4dpE\n"
-               "KdaXUiu5WJvZupeYqqNsWdxs+v2KS1E/PcM9BgUFKFD4lW84WbWUHPxvxXoZhSCs\n"
-               "nQ0hsPd53NKBBdEOao5HAAf+T5yFnJzZ3rVkYBEC67gHyWgXB1Zy283yAIihvUXw\n"
-               "DOEVppNHnIqAjQpncQcDpV0/zYCvqOEfU+JPpmepgo737Tq2MlUKLTByhg1mQhKm\n"
-               "2pI63BFiw2/2igImFbmhzJjilWkaM4kwM1uGKOKgjacXI/VSVEajuYAfo37quBxF\n"
-               "ZWyWJoFXBvQ7jolTKXUVbCqnSSaItosZrS3vcDdGUegRm0rf6IzCRPdSIsfCDdZG\n"
-               "9UeChoznNezoLENgmqQJTV3wDo3uSZbztlctoERvZpn457MLZEn8hXEwMLPXx2Ur\n"
-               "HQ5fYAdTBzBpoLiy8ujzFxFJDzW9ytnb7aFF7YVivfj42eVGnCANvVcwkp2/E3MW\n"
-               "Img0OyqKRQHaGGI7iGNO5KYpTk0CdSyErQarH52ZRvr0t2CK6J6vDgrhJnzd5Ayr\n"
-               "6t+coAZBw8eIJqiM5WzAm4mlZRSHL+JcaKkrqoYOo+kewj7wgW2Kk/7S8re38RvP\n"
-               "+V9nqpfr18gIV72G2yZ60C21eRqOFPgl1CYbmWHqYKXatuT4o+kgBmJpez5uvIHz\n"
-               "LSd88An02ow+WQ+KP8YGV38ZtuA6D4FPA3fsMdhNOqjtwWiPei+ILaXD5PsOfDGH\n"
-               "2fZgOWXivFYqq9Cm3B3ffFX/oD/7sFMs+/AWeZOh8XqU8ro73L1HNRXx4HdyRUY/\n"
-               "pInwA0mWaFNGgBRPbNW0A6cZ2dY0Hn8sRRsF+5tIs0hOelpT1y/ZEVyGImTQgEbK\n"
-               "KeggQGT9h9rhrrUK+hE27MorcRi6tVteKlNyGQsCJko0ZoqqctM4o7wT5ce4nWtb\n"
-               "ixzp5xDkDmcP6eldHiVm8TsZn0hkmNDu0xpgIVtb4VDRmWP687EOaGHYhjOBw6X1\n"
-               "GD1d1yyg/VxlUr0lKmbsFVC2mDiWbnWd49+FGsrySc2RO8DlC9xkXLaG+ubjmLpK\n"
-               "lwagiI2P1MzkHuZiz7WlIjFefuYh0yrYvDA5UDiQTDdoZWFuR5r93QWdsUcHlvdF\n"
-               "rYmhQ93F6I4gaT9HSVEDJfisIjIUmIwhh20tdGnf3FC5VyqBYS5GQObq3VnC8stU\n"
-               "b7byCEMlKr5bWslEem6gRGTB9xektKgrsFgS7nb3Geegq9K+mWIBC/iBOInVqFYx\n"
-               "Uw8+s6ywApXPLPEIrVZumkwo7Rl8lJfCTDNni/68XHhhVHY70N0PSdfnCAvV9G41\n"
-               "3wuTZHqLOeQG3Sm8I1JJXkWSuuk0QI7DVKZpmz+x4aFBd+rncfvWOEbN9G0ZqbUT\n"
-               "lGkfxtUWY6pWX/XJpyBzOlv2+fCPi/Yd0csb45IEuFHNG1svgqGMJw5BmFu5v0Qs\n"
-               "0i1zKBrNA/Acd6+uL0UqDZStB6lyPn6+uifh3sMwggL5BgkqhkiG9w0BBwGgggLq\n"
-               "BIIC5jCCAuIwggLeBgsqhkiG9w0BDAoBAqCCAqYwggKiMBwGCiqGSIb3DQEMAQMw\n"
-               "DgQIBJuBj07uHGACAggABIICgJBfOlC99JJjEUBibYLXIJPe53Cy7eDXCtVaPbhX\n"
-               "VHPCsBrUd7+6Ul7Vh/JHMlJL1VA3WvGnX93f0p5FICgZZA3sIZjpxBoeVkZ0Zx6r\n"
-               "ZMnBPIN4GaHYufCGPyAlPXgEGjlBr3g6Sxr8j50vsWtfspwiILsyte+nQ3kE1nV4\n"
-               "TjNBnayXmCMnEkf4kKu+dlLFbd1OY/fQJbiT+f9YtMfcfp2IR+7bXb23UIv8Wt1I\n"
-               "XyqsYTcUjIvnByKSDrvVu941x1EN5DF1964qQbAZb/z5ueTl8tCpaCFlGbZcXz7X\n"
-               "7L3k0YWdymx1J+szd6heQJrzqMjcHK3XWC7YlDytWB59j0eNMx42XEFP0pAO+gt9\n"
-               "Iny2XL+sxJC/xzf6apYMmmGwEXrZkkudsSVMgLCtYyin4zM7PFzLAPK9ryEhsxaP\n"
-               "g077MJ/aIaZ7PLi7cABz/g+gQ1dSXakNOof6EjRUADHpav9UKeKwWdR8ycB/8AQV\n"
-               "XxQTpEsFJ7izdNZDNC/ZeOhc/ohnei169rfH0shVeeckjf++c8zlh/Y5UWIi3V6i\n"
-               "5c7RlIJLMtHrvpB5UxRpZgWSdXvCuTCBEzlZAeWJ11I4DAeioqJ1V3h2KcUjNKf1\n"
-               "z8mTJrzAycuhm8npaC0Gj6JU7jiYPZLvj+cK/e/gjadWggHFYsjAKhACDbAtG64N\n"
-               "Gu9PWJszvhSO8ga7TOVEzdbe2jm4oWtqPe3gb6eYl2Ma6GTfj/PUEDpNAOnr99qV\n"
-               "g3uKIXMBp2115bfUf5sbfPdMbnH12XILXR9Va+JjeQHexa64QWlsiRgtXEAXxoEb\n"
-               "D2aTlfdsJpgilyj31Y45xOdN7FI+Ltfhudxt1kABPdmKwRMxJTAjBgkqhkiG9w0B\n"
-               "CRUxFgQUMvxYuPi3XpEeXbzAkXaNbAw7P5gwMTAhMAkGBSsOAwIaBQAEFOBC4ppE\n"
-               "AXO+xdzSBKimvjBBTLbEBAjlaWiC5IVtmAICCAA=\n";
-
-       // write file
-       const char *p12base64file = "/tmp/ckmc_test_p12.p12.b64";
-       const char *p12file = "/tmp/ckmc_test_p12.p12";
+       const char *p12file = "/usr/share/ckm-test/capi-t3096.p12";
        const char *password = "password";
 
-       remove(p12base64file);
-       remove(p12file);
-
-       FILE* b64_file;
-       b64_file = fopen(p12base64file, "w");
-       fprintf(b64_file, "%s",p12Base64.c_str());
-       fclose(b64_file);
-
-       std::string cmd("openssl base64 -d -in ");
-       cmd.append(p12base64file);
-       cmd.append(" -out ");
-       cmd.append(p12file);
-       system(cmd.c_str());
-
        int temp;
 
        ckmc_key_s *private_key = NULL;
@@ -2385,12 +2144,12 @@ RUNNER_TEST(T3096_CAPI_TYPE_load_p12_file) {
        const char *pkey_alias = "pkey_alias";
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(pkey_alias, *private_key, policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        const char *cert_alias = "cert_alias";
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_cert(cert_alias, *cert, policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        std::string caCertAlias = "ca_cert_alias_";
        const char *idx = "0";
        int cnt = 0;
@@ -2399,7 +2158,7 @@ RUNNER_TEST(T3096_CAPI_TYPE_load_p12_file) {
                caCertAlias.append(idx);
                RUNNER_ASSERT_MSG(
                                CKMC_ERROR_NONE == (temp = ckmc_save_cert(caCertAlias.c_str(), *(tmpList->cert), policy)),
-                               "Error=" << temp);
+                               CKMCReadableError(temp));
                tmpList = tmpList->next;
                cnt ++;
        }
@@ -2409,112 +2168,19 @@ RUNNER_TEST(T3096_CAPI_TYPE_load_p12_file) {
        ckmc_key_free(private_key);
        ckmc_cert_free(cert);
        ckmc_cert_list_all_free(ca_cert_list);
-
-       remove(p12base64file);
-       remove(p12file);
 }
 
 RUNNER_TEST(T3097_CAPI_TYPE_load_p12_file2) {
-    std::string p12Base64 =
-        "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\n"
-        "AXO+xdzSBKimvjBBTLbEBAjlaWiC5IVtmAICCAA=\n";
-
-    // write file
-    const char *p12base64file = "/tmp/ckmc_test_p12.p12.b64";
-    const char *p12file = "/tmp/ckmc_test_p12.p12";
+    const char *p12file = "/usr/share/ckm-test/capi-t3096.p12";
     const char *password = "password";
 
-    remove(p12base64file);
-    remove(p12file);
-
-    FILE* b64_file;
-    b64_file = fopen(p12base64file, "w");
-    fprintf(b64_file, "%s",p12Base64.c_str());
-    fclose(b64_file);
-
-    std::string cmd("openssl base64 -d -in ");
-    cmd.append(p12base64file);
-    cmd.append(" -out ");
-    cmd.append(p12file);
-    system(cmd.c_str());
-
     int temp;
 
     ckmc_pkcs12_s *ppkcs12 = NULL;
 
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_load_from_pkcs12_file2(p12file, password, &ppkcs12)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     RUNNER_ASSERT_MSG(ppkcs12->priv_key != NULL, "Null private_key");
     RUNNER_ASSERT_MSG(ppkcs12->cert != NULL, "Null cert");
     RUNNER_ASSERT_MSG(ppkcs12->ca_chain != NULL, "Null ca_cert_list");
@@ -2527,12 +2193,12 @@ RUNNER_TEST(T3097_CAPI_TYPE_load_p12_file2) {
     const char *pkey_alias = "pkey_alias2";
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_save_key(pkey_alias, *(ppkcs12->priv_key), policy)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
 
     const char *cert_alias = "cert_alias2";
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_save_cert(cert_alias, *(ppkcs12->cert), policy)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     std::string caCertAlias = "ca_cert_alias_2_";
     const char *idx = "0";
     int cnt = 0;
@@ -2541,7 +2207,7 @@ RUNNER_TEST(T3097_CAPI_TYPE_load_p12_file2) {
         caCertAlias.append(idx);
         RUNNER_ASSERT_MSG(
                 CKMC_ERROR_NONE == (temp = ckmc_save_cert(caCertAlias.c_str(), *(tmpList->cert), policy)),
-                "Error=" << temp);
+                CKMCReadableError(temp));
         tmpList = tmpList->next;
         cnt ++;
     }
@@ -2549,9 +2215,6 @@ RUNNER_TEST(T3097_CAPI_TYPE_load_p12_file2) {
     RUNNER_ASSERT_MSG(cnt ==  2, "Invalid CA Cert Count");
 
     ckmc_pkcs12_free(ppkcs12);
-
-    remove(p12base64file);
-    remove(p12file);
 }
 
 RUNNER_TEST(T3098_CAPI_TYPE_deinit)
@@ -2559,16 +2222,16 @@ RUNNER_TEST(T3098_CAPI_TYPE_deinit)
        int temp;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST_GROUP_INIT(T310_CKMC_CAPI_PKCS12);
@@ -2587,10 +2250,10 @@ RUNNER_TEST(T3101_CAPI_PKCS12_init)
     int temp;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(USER_APP, "user-pass")),
-            "Error=" << temp);
+            CKMCReadableError(temp));
 
     ckmc_remove_pkcs12(alias_PKCS_collision);
     ckmc_remove_pkcs12(alias_PKCS_exportable);
@@ -2606,7 +2269,7 @@ RUNNER_TEST(T3102_CAPI_PKCS12_negative_wrong_password)
     int temp;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_INVALID_FORMAT == (temp = ckmc_load_from_pkcs12_file2("/usr/share/ckm-test/test1801.pkcs12", wrong_passwd, &ppkcs12)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3103_CAPI_PKCS12_add_bundle_with_chain_certs)
@@ -2615,7 +2278,7 @@ RUNNER_TEST(T3103_CAPI_PKCS12_add_bundle_with_chain_certs)
     int temp;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_load_from_pkcs12_file2("/usr/share/ckm-test/pkcs.p12", NULL, &ppkcs12)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
 
     RUNNER_ASSERT_MSG(NULL != ppkcs12->cert, "no certificate in PKCS12");
     RUNNER_ASSERT_MSG(NULL != ppkcs12->priv_key, "no private key in PKCS12");
@@ -2632,39 +2295,39 @@ RUNNER_TEST(T3103_CAPI_PKCS12_add_bundle_with_chain_certs)
 
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_save_pkcs12(alias_PKCS_exportable, ppkcs12, exportable, exportable)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_DB_ALIAS_EXISTS == (temp = ckmc_save_pkcs12(alias_PKCS_exportable, ppkcs12, exportable, exportable)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_save_pkcs12(alias_PKCS_not_exportable, ppkcs12, notExportable, notExportable)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_DB_ALIAS_EXISTS == (temp = ckmc_save_pkcs12(alias_PKCS_not_exportable, ppkcs12, notExportable, notExportable)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
 
     // try to lookup key
     ckmc_key_s *key_lookup = NULL;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_get_key(alias_PKCS_exportable, NULL, &key_lookup)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     ckmc_key_free(key_lookup);
     key_lookup = NULL;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NOT_EXPORTABLE == (temp = ckmc_get_key(alias_PKCS_not_exportable, "", &key_lookup)),
-            "Error=" << temp << "  CKMC_ERROR_NOT_EXPORTABLE=" << CKMC_ERROR_NOT_EXPORTABLE << "   CKMC_ERROR_DB_ERROR=" << CKMC_ERROR_DB_ERROR);
+            CKMCReadableError(temp));
     ckmc_key_free(key_lookup);
 
     // try to lookup certificate
     ckmc_cert_s *cert_lookup = NULL;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_get_cert(alias_PKCS_exportable, NULL, &cert_lookup)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     ckmc_cert_free(cert_lookup);
     cert_lookup = NULL;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NOT_EXPORTABLE == (temp = ckmc_get_cert(alias_PKCS_not_exportable, NULL, &cert_lookup)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     ckmc_cert_free(cert_lookup);
 }
 
@@ -2678,21 +2341,21 @@ RUNNER_TEST(T3103_CAPI_PKCS12_get_PKCS)
     // fail - no entry
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_DB_ALIAS_UNKNOWN == (temp = ckmc_get_pkcs12("i-do-not-exist", &pkcs)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     ckmc_pkcs12_free(pkcs);
     pkcs = NULL;
 
     // fail - not exportable
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NOT_EXPORTABLE == (temp = ckmc_get_pkcs12(alias_PKCS_not_exportable, &pkcs)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
     ckmc_pkcs12_free(pkcs);
     pkcs = NULL;
 
     // success - exportable
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_get_pkcs12(alias_PKCS_exportable, &pkcs)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
 
     RUNNER_ASSERT_MSG(NULL != pkcs->cert, "no certificate in PKCS12");
     RUNNER_ASSERT_MSG(NULL != pkcs->priv_key, "no private key in PKCS12");
@@ -2725,7 +2388,7 @@ RUNNER_TEST(T3104_CAPI_PKCS12_create_and_verify_signature)
                     hash_algo,
                     pad_algo,
                     &signature)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
 
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_verify_signature(
@@ -2735,7 +2398,7 @@ RUNNER_TEST(T3104_CAPI_PKCS12_create_and_verify_signature)
                     *signature,
                     hash_algo,
                     pad_algo)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
 }
 
 RUNNER_TEST(T3105_CAPI_PKCS12_remove_bundle_with_chain_certs)
@@ -2745,34 +2408,34 @@ RUNNER_TEST(T3105_CAPI_PKCS12_remove_bundle_with_chain_certs)
     // remove the whole PKCS12 bundles
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (tmp = ckmc_remove_pkcs12(alias_PKCS_exportable)),
-            "Error=" << tmp);
+            CKMCReadableError(tmp));
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (tmp = ckmc_remove_pkcs12(alias_PKCS_not_exportable)),
-            "Error=" << tmp);
+            CKMCReadableError(tmp));
 
     // expect lookup fails due to unknown alias
     // try to lookup key
     ckmc_key_s *key_lookup = NULL;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_DB_ALIAS_UNKNOWN == (tmp = ckmc_get_key(alias_PKCS_exportable, NULL, &key_lookup)),
-            "Error=" << tmp);
+            CKMCReadableError(tmp));
     ckmc_key_free(key_lookup);
     key_lookup = NULL;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_DB_ALIAS_UNKNOWN == (tmp = ckmc_get_key(alias_PKCS_not_exportable, NULL, &key_lookup)),
-            "Error=" << tmp);
+            CKMCReadableError(tmp));
     ckmc_key_free(key_lookup);
 
     // try to lookup certificate
     ckmc_cert_s *cert_lookup = NULL;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_DB_ALIAS_UNKNOWN == (tmp = ckmc_get_cert(alias_PKCS_exportable, NULL, &cert_lookup)),
-            "Error=" << tmp);
+            CKMCReadableError(tmp));
     ckmc_cert_free(cert_lookup);
     cert_lookup = NULL;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_DB_ALIAS_UNKNOWN == (tmp = ckmc_get_cert(alias_PKCS_not_exportable, NULL, &cert_lookup)),
-            "Error=" << tmp);
+            CKMCReadableError(tmp));
     ckmc_cert_free(cert_lookup);
 }
 
@@ -2781,7 +2444,7 @@ RUNNER_TEST(T3109_CAPI_PKCS12_deinit)
     int temp;
     RUNNER_ASSERT_MSG(
             CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(USER_APP)),
-            "Error=" << temp);
+            CKMCReadableError(temp));
 }
 
 RUNNER_TEST_GROUP_INIT(T3110_CAPI_LOCKTYPE_TESTS);
@@ -2796,10 +2459,8 @@ RUNNER_CHILD_TEST(T3111_CAPI_init_lock_key)
        char *null_password = NULL;
        RUNNER_ASSERT_MSG(
                CKMC_ERROR_NONE == (tmp = ckmc_change_user_password(USER_APP,USER_PASS,null_password)),
-               CKM::ErrorToString(tmp));
-       RUNNER_ASSERT_MSG(
-               CKMC_ERROR_NONE == (tmp = ckmc_lock_user_key(USER_APP)),
-               CKM::ErrorToString(tmp));
+               CKMCReadableError(tmp));
+       RUNNER_ASSERT_MSG(CKMC_ERROR_NONE == (tmp = ckmc_lock_user_key(USER_APP)), CKMCReadableError(tmp));
 }
 
 RUNNER_CHILD_TEST(T3112_CAPI_unlock_default_passwd)
@@ -2841,14 +2502,14 @@ RUNNER_CHILD_TEST(T3112_CAPI_unlock_default_passwd)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_save_key(alias, test_key, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_get_key(alias, password, &test_key2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_key(alias)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_CHILD_TEST(T3113_CAPI_init_change_user_password)
@@ -2863,17 +2524,17 @@ RUNNER_CHILD_TEST(T3113_CAPI_init_change_user_password)
        // database has been automatically unlocked with NULL pw in previous test. Lock it now
        RUNNER_ASSERT_MSG(
                CKMC_ERROR_NONE == (tmp = ckmc_lock_user_key(USER_APP)),
-               CKM::ErrorToString(tmp));
+               CKMCReadableError(tmp));
        RUNNER_ASSERT_MSG(
                CKMC_ERROR_NONE == (tmp = ckmc_change_user_password(USER_APP,null_password,USER_PASS)),
-               CKM::ErrorToString(tmp));
+               CKMCReadableError(tmp));
        // get rid of NULL DKEK
        RUNNER_ASSERT_MSG(
                CKMC_ERROR_NONE == (tmp = ckmc_unlock_user_key(USER_APP,USER_PASS)),
-               CKM::ErrorToString(tmp));
+               CKMCReadableError(tmp));
        RUNNER_ASSERT_MSG(
                CKMC_ERROR_NONE == (tmp = ckmc_lock_user_key(USER_APP)),
-               CKM::ErrorToString(tmp));
+               CKMCReadableError(tmp));
 }
 
 RUNNER_CHILD_TEST(T3114_CAPI_unlock_default_passwd_negative)
@@ -2915,11 +2576,11 @@ RUNNER_CHILD_TEST(T3114_CAPI_unlock_default_passwd_negative)
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_DB_LOCKED == (temp = ckmc_save_key(alias, test_key, test_policy)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_DB_LOCKED == (temp = ckmc_get_key(alias, password, &test_key2)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_CHILD_TEST(T3119_CAPI_deinit)
@@ -2927,10 +2588,10 @@ RUNNER_CHILD_TEST(T3119_CAPI_deinit)
        int temp;
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
        RUNNER_ASSERT_MSG(
                        CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(USER_APP)),
-                       "Error=" << temp);
+                       CKMCReadableError(temp));
 }
 
 RUNNER_TEST_GROUP_INIT(T320_CAPI_EMPTY_DATABASE);
@@ -2939,11 +2600,11 @@ RUNNER_TEST(T3201_CAPI_unlock_database)
 {
        int temp;
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-               "Error=" << temp);
+               CKMCReadableError(temp));
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-               "Error=" << temp);
+               CKMCReadableError(temp));
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_unlock_user_key(0, "simple-password")),
-               "Error=" << temp);
+               CKMCReadableError(temp));
 }
 
 RUNNER_CHILD_TEST(T3202_CAPI_get_data_from_empty_database)
@@ -2964,7 +2625,7 @@ RUNNER_CHILD_TEST(T3203_CAPI_lock_database)
 {
        int temp;
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_lock_user_key(0)),
-               "Error=" << temp);
+               CKMCReadableError(temp));
 }
 
 RUNNER_CHILD_TEST(T3204_CAPI_get_data_from_locked_database)
@@ -2976,7 +2637,7 @@ RUNNER_CHILD_TEST(T3204_CAPI_get_data_from_locked_database)
 
        RUNNER_ASSERT_MSG(
                CKMC_ERROR_DB_LOCKED == (temp = ckmc_get_key(alias, password, &test_key)),
-               "Error=" << temp);
+               CKMCReadableError(temp));
 
        RUNNER_ASSERT_MSG(NULL == test_key, "Key value should not be changed");
 }
@@ -2985,6 +2646,6 @@ RUNNER_TEST(T3204_deinit)
 {
        int temp;
        RUNNER_ASSERT_MSG( CKMC_ERROR_NONE == (temp = ckmc_remove_user_data(0)),
-               "Error=" << temp);
+               CKMCReadableError(temp));
 }