* @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
* @version 1.0
*/
+#include <string>
#include <sys/smack.h>
+#include <ckmc/ckmc-type.h>
#include <ckm-common.h>
#include <tests_common.h>
-#include <access_provider.h>
+#include <access_provider2.h>
#include <ckm/ckm-manager.h>
+#include <dbus_access.h>
-void switch_to_app(const char* label)
+const char* SERVICE[] = {
+ "/org/freedesktop/systemd1/unit/central_2dkey_2dmanager_2dlistener_2eservice",
+ "/org/freedesktop/systemd1/unit/central_2dkey_2dmanager_2eservice" };
+
+void start_service(ServiceIdx idx)
+{
+ DBusAccess dbus(SERVICE[idx]);
+ dbus.start();
+}
+
+void stop_service(ServiceIdx idx)
{
- SecurityServer::AccessProvider ap(label);
+ DBusAccess dbus(SERVICE[idx]);
+ dbus.stop();
+}
+
+
+void switch_to_storage_user(const char* label)
+{
+ AccessProvider ap(label);
ap.allowAPI("key-manager::api-storage", "rw");
ap.applyAndSwithToUser(APP_UID, APP_GID);
}
+void switch_to_storage_ocsp_user(const char* label)
+{
+ AccessProvider ap(label);
+ ap.allowAPI("key-manager::api-storage", "rw");
+ ap.allowAPI("key-manager::api-ocsp", "rw");
+ ap.applyAndSwithToUser(APP_UID, APP_GID);
+}
+
DBCleanup::~DBCleanup()
{
// Let it throw. If db can't be cleared further tests are unreliable
CKM::ManagerShPtr mgr = CKM::Manager::create();
- for(const auto& it:m_keys)
- mgr->removeKey(it);
- m_keys.clear();
- for(const auto& it:m_certs)
- mgr->removeCertificate(it);
- m_certs.clear();
- for(const auto& it:m_data)
- mgr->removeData(it);
- m_data.clear();
+ for(const auto& it:m_aliases)
+ mgr->removeAlias(it);
+ m_aliases.clear();
}
// returns process label
{
int ret;
char* my_label = NULL;
- RUNNER_ASSERT_MSG(0 == (ret = smack_new_label_from_self(&my_label)),
+ RUNNER_ASSERT_MSG(0 <= (ret = smack_new_label_from_self(&my_label)),
"Failed to get smack label for self. Error: " << ret);
return CharPtr(my_label, free);
}
+std::string aliasWithLabel(const char *label, const char *alias)
+{
+ if(label)
+ {
+ std::stringstream ss;
+ ss << label << std::string(ckmc_label_name_separator) << alias;
+ return ss.str();
+ }
+ return std::string(alias);
+}
+
// changes process label
void change_label(const char* label)
{
*/
change_label(m_original_label.get());
}
+
+const char * CKMCErrorToString(int error) {
+#define ERRORDESCRIBE(name) case name: return #name
+ switch(error) {
+ ERRORDESCRIBE(CKMC_ERROR_NONE);
+ ERRORDESCRIBE(CKMC_ERROR_INVALID_PARAMETER);
+ ERRORDESCRIBE(CKMC_ERROR_OUT_OF_MEMORY);
+ ERRORDESCRIBE(CKMC_ERROR_PERMISSION_DENIED);
+ ERRORDESCRIBE(CKMC_ERROR_SOCKET);
+ ERRORDESCRIBE(CKMC_ERROR_BAD_REQUEST);
+ ERRORDESCRIBE(CKMC_ERROR_BAD_RESPONSE);
+ ERRORDESCRIBE(CKMC_ERROR_SEND_FAILED);
+ ERRORDESCRIBE(CKMC_ERROR_RECV_FAILED);
+ ERRORDESCRIBE(CKMC_ERROR_AUTHENTICATION_FAILED);
+ ERRORDESCRIBE(CKMC_ERROR_BUFFER_TOO_SMALL);
+ ERRORDESCRIBE(CKMC_ERROR_SERVER_ERROR);
+ ERRORDESCRIBE(CKMC_ERROR_DB_LOCKED);
+ ERRORDESCRIBE(CKMC_ERROR_DB_ERROR);
+ ERRORDESCRIBE(CKMC_ERROR_DB_ALIAS_EXISTS);
+ ERRORDESCRIBE(CKMC_ERROR_DB_ALIAS_UNKNOWN);
+ ERRORDESCRIBE(CKMC_ERROR_VERIFICATION_FAILED);
+ ERRORDESCRIBE(CKMC_ERROR_INVALID_FORMAT);
+ ERRORDESCRIBE(CKMC_ERROR_FILE_ACCESS_DENIED);
+ ERRORDESCRIBE(CKMC_ERROR_NOT_EXPORTABLE);
+ ERRORDESCRIBE(CKMC_ERROR_UNKNOWN);
+ default: return "Error not defined";
+ }
+#undef ERRORDESCRIBE
+}
+
+std::string CKMCReadableError(int error) {
+ std::string output("Error: ");
+ output += std::to_string(error);
+ output += " Description: ";
+ output += CKMCErrorToString(error);
+ return output;
+}
+