changed to tizen compatible error type
authorDong Sun Lee <ds73.lee@samsung.com>
Thu, 24 Jul 2014 02:47:49 +0000 (11:47 +0900)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Fri, 12 Sep 2014 12:59:17 +0000 (14:59 +0200)
Change-Id: I10c23ffc36f97824dc5062709711d1ca70ee1c14
Signed-off-by: Dong Sun Lee <ds73.lee@samsung.com>
src/CMakeLists.txt
src/include/ckmc/ckmc-error.h
src/manager/client-capi/ckmc-control.cpp
src/manager/client-capi/ckmc-manager.cpp
src/manager/client-capi/ckmc-type-converter.h [new file with mode: 0644]
src/manager/client-capi/ckmc-type.cpp

index a2b67e1..625481e 100644 (file)
@@ -68,6 +68,7 @@ SET(KEY_MANAGER_CLIENT_CAPI_SRC_PATH ${KEY_MANAGER_PATH}/client-capi)
 
 INCLUDE_DIRECTORIES(
     ${KEY_MANAGER_PATH}/client
+    ${KEY_MANAGER_PATH}/client-capi
     ${KEY_MANAGER_PATH}/common
     ${KEY_MANAGER_PATH}/dpl/core/include
     ${KEY_MANAGER_PATH}/dpl/log/include
index e93cca0..601bc62 100644 (file)
@@ -20,6 +20,8 @@
 #ifndef __TIZEN_CORE_CKMC_ERROR_H_
 #define __TIZEN_CORE_CKMC_ERROR_H_
 
+#include <tizen.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -29,125 +31,37 @@ extern "C" {
  * @{
  */
 
-/**
- * @brief Indicates the result of the one specific API is successful
- * @since_tizen 2.3
- */
-#define CKMC_SUCCESS 0
 
-/**
- * @brief Indicates the socket between client and Central Key Manager failed
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_SOCKET -1
+#define KEY_MANAGER_ERROR_CLASS          0x0FFF0000
 
-/**
- * @brief Indicates the request from client is malformed
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_BAD_REQUEST -2
 
 /**
- * @brief Indicates the response from Central Key Manager is malformed
+ * @brief Enumeration for Key Manager Errors.
  * @since_tizen 2.3
  */
-#define CKMC_ERROR_BAD_RESPONSE -3
+typedef enum{
+       CKMC_SUCCESS                        = TIZEN_ERROR_NONE,               /**< Successful */
+       CKMC_ERROR_INPUT_PARAM              = TIZEN_ERROR_INVALID_PARAMETER,  /**< Invalid function parameter */
+       CKMC_ERROR_OUT_OF_MEMORY            = TIZEN_ERROR_OUT_OF_MEMORY,      /**< Out of memory */
+       CKMC_ERROR_ACCESS_DENIED            = TIZEN_ERROR_PERMISSION_DENIED,  /**< Permission denied */
+       CKMC_ERROR_BAD_REQUEST              = TIZEN_ERROR_INVALID_OPERATION,  /**< Invalid request from client */
 
-/**
- * @brief Indicates the transmitting request failed.
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_SEND_FAILED -4
-
-/**
- * @brief Indicates the receiving response failed.
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_RECV_FAILED -5
-
-/**
- * @brief Indicates the authentication between client and manager failed.
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_AUTHENTICATION_FAILED -6
-
-/**
- * @brief Indicates the API's input parameter is malformed
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_INPUT_PARAM -7
-
-/**
- * @brief Indicates the output buffer size which is passed as parameter is too small
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_BUFFER_TOO_SMALL -8
-
-/**
- * @brief Indicates system is running out of memory state
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_OUT_OF_MEMORY -9
-
-/**
- * @brief Indicates the access has been denied by Central Key Manager
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_ACCESS_DENIED -10
-
-/**
- * @brief Indicates Central Key Manager has been failed for some reason
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_SERVER_ERROR -11
-
-/**
- * @brief Indicates the database was not unlocked - user did not login
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_DB_LOCKED -12
-
-/**
- * @brief Indicates an internal error inside the database
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_DB_ERROR -13
-
-/**
- * @brief Indicates that provided alias already exists in the database
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_DB_ALIAS_EXISTS -14
-
-/**
- * @brief Indicates that request given to database returned no result
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_DB_ALIAS_UNKNOWN -15
-
-/**
- * @brief Indicates that CA certificate(s) were unknown and chain could not be created
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_VERIFICATION_FAILED -16
-
-/**
- * @brief Indicates that a provided file or binary has not a valid format
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_INVALID_FORMAT -17
-
-/**
- * @brief Indicates that provided file doesn't exists or cannot be accessed in the file system
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_FILE_ACCESS_DENIED -18
-
-/**
- * @brief Indicates the error with unknown reason
- * @since_tizen 2.3
- */
-#define CKMC_ERROR_UNKNOWN -255
+       CKMC_ERROR_SOCKET                   = KEY_MANAGER_ERROR_CLASS | 0x01, /**< Socket error between client and Central Key Manager */
+       CKMC_ERROR_BAD_RESPONSE             = KEY_MANAGER_ERROR_CLASS | 0x02, /**< Invalid response from Central Key Manager */
+       CKMC_ERROR_SEND_FAILED              = KEY_MANAGER_ERROR_CLASS | 0x03, /**< Transmitting request failed */
+       CKMC_ERROR_RECV_FAILED              = KEY_MANAGER_ERROR_CLASS | 0x04, /**< Receiving response failed */
+       CKMC_ERROR_AUTHENTICATION_FAILED    = KEY_MANAGER_ERROR_CLASS | 0x05, /**< Authentication between client and manager failed */
+       CKMC_ERROR_BUFFER_TOO_SMALL         = KEY_MANAGER_ERROR_CLASS | 0x06, /**< The output buffer size which is passed as parameter is too small */
+       CKMC_ERROR_SERVER_ERROR             = KEY_MANAGER_ERROR_CLASS | 0x07, /**< Central Key Manager has been failed for some reason */
+       CKMC_ERROR_DB_LOCKED                = KEY_MANAGER_ERROR_CLASS | 0x08, /**< The database was not unlocked - user did not login */
+       CKMC_ERROR_DB_ERROR                 = KEY_MANAGER_ERROR_CLASS | 0x09, /**< An internal error inside the database */
+       CKMC_ERROR_DB_ALIAS_EXISTS          = KEY_MANAGER_ERROR_CLASS | 0x0A, /**< Provided alias already exists in the database */
+       CKMC_ERROR_DB_ALIAS_UNKNOWN         = KEY_MANAGER_ERROR_CLASS | 0x0B, /**< No data for given alias */
+       CKMC_ERROR_VERIFICATION_FAILED      = KEY_MANAGER_ERROR_CLASS | 0x0C, /**< CA certificate(s) were unknown and chain could not be created */
+       CKMC_ERROR_INVALID_FORMAT           = KEY_MANAGER_ERROR_CLASS | 0x11, /**< A provided file or binary has not a valid format */
+       CKMC_ERROR_FILE_ACCESS_DENIED       = KEY_MANAGER_ERROR_CLASS | 0x12, /**< A provided file or binary has not a valid format */
+       CKMC_ERROR_UNKNOWN                  = KEY_MANAGER_ERROR_CLASS | 0x13, /**< A provided file or binary has not a valid format */
+} key_manager_error_e;
 
 
 /**
index a87f45e..9e5af13 100644 (file)
 #include <ckm/ckm-control.h>
 #include <ckmc/ckmc-control.h>
 #include <ckmc/ckmc-error.h>
+#include <ckmc-type-converter.h>
 
 KEY_MANAGER_CAPI
 int ckmc_unlock_user_key(uid_t user, const char *password)
 {
        auto control = CKM::Control::create();
-       return control->unlockUserKey(user, std::string(password));
+       int ret = control->unlockUserKey(user, std::string(password));
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
 int ckmc_lock_user_key(uid_t user)
 {
        auto control = CKM::Control::create();
-       return control->lockUserKey(user);
+       int ret =  control->lockUserKey(user);
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
 int ckmc_remove_user_data(uid_t user)
 {
        auto control = CKM::Control::create();
-       return control->removeUserData(user);
+       int ret =  control->removeUserData(user);
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
 int ckmc_change_user_password(uid_t user, const char *oldPassword, const char *newPassword)
 {
        auto control = CKM::Control::create();
-       return control->changeUserPassword(user, std::string(oldPassword), std::string(newPassword));
+       int ret =  control->changeUserPassword(user, std::string(oldPassword), std::string(newPassword));
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
 int ckmc_reset_user_password(uid_t user, const char *newPassword)
 {
        auto control = CKM::Control::create();
-       return control->resetUserPassword(user, std::string(newPassword));
+       int ret =  control->resetUserPassword(user, std::string(newPassword));
+       return to_ckmc_error(ret);
 }
 
 
index b942178..ce4cb63 100644 (file)
@@ -25,6 +25,7 @@
 #include <ckmc/ckmc-type.h>
 #include <ckmc/ckmc-manager.h>
 #include <ckmc/ckmc-error.h>
+#include <ckmc-type-converter.h>
 #include <iostream>
 #include <string.h>
 
@@ -93,7 +94,8 @@ int ckmc_save_key(const char *alias, const ckmc_key_s key, const ckmc_policy_s p
 
        CKM::Policy storePolicy(_tostring(policy.password), policy.extractable, policy.restricted);
 
-       return mgr->saveKey(ckmAlias, ckmKey, storePolicy);
+       int ret =  mgr->saveKey(ckmAlias, ckmKey, storePolicy);
+       return to_ckmc_error(ret);
 }
 
 
@@ -107,7 +109,8 @@ int ckmc_remove_key(const char *alias)
        }
        CKM::Alias ckmAlias(alias);
 
-       return mgr->removeKey(ckmAlias);
+       int ret =  mgr->removeKey(ckmAlias);
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
@@ -122,8 +125,8 @@ int ckmc_get_key(const char *alias, const char *password, ckmc_key_s **key)
        CKM::Alias ckmAlias(alias);
 
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       if( (ret = mgr->getKey(ckmAlias, _tostring(password), ckmKey)) != CKMC_SUCCESS) {
-               return ret;
+       if( (ret = mgr->getKey(ckmAlias, _tostring(password), ckmKey)) != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        unsigned char *rawKey = reinterpret_cast<unsigned char*>(ckmKey->getDER().data());
@@ -131,7 +134,7 @@ int ckmc_get_key(const char *alias, const char *password, ckmc_key_s **key)
 
        ret = ckmc_key_new( rawKey, ckmKey->getDER().size(), keyType, NULL, key);
 
-       return ret;
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
@@ -145,8 +148,8 @@ int ckmc_get_key_alias_list(ckmc_alias_list_s** alias_list)
 
        CKM::AliasVector aliasVector;
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       if( (ret = mgr->getKeyAliasVector(aliasVector)) != CKMC_SUCCESS) {
-               return ret;
+       if( (ret = mgr->getKeyAliasVector(aliasVector)) != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        ckmc_alias_list_s *plist = NULL;
@@ -189,7 +192,9 @@ int ckmc_save_cert(const char *alias, const ckmc_cert_s cert, const ckmc_policy_
        CKM::Policy storePolicy(_tostring(policy.password), policy.extractable, policy.restricted);
 
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       return mgr->saveCertificate(ckmAlias, ckmCert, storePolicy);
+       int ret = mgr->saveCertificate(ckmAlias, ckmCert, storePolicy);
+
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
@@ -201,7 +206,9 @@ int ckmc_remove_cert(const char *alias)
        CKM::Alias ckmAlias(alias);
 
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       return mgr->removeCertificate(ckmAlias);
+       int ret = mgr->removeCertificate(ckmAlias);
+
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
@@ -216,8 +223,8 @@ int ckmc_get_cert(const char *alias, const char *password, ckmc_cert_s **cert)
        CKM::Alias ckmAlias(alias);
 
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       if( (ret = mgr->getCertificate(ckmAlias, _tostring(password), ckmCert)) != CKMC_SUCCESS) {
-               return ret;
+       if( (ret = mgr->getCertificate(ckmAlias, _tostring(password), ckmCert)) != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        unsigned char *rawCert = reinterpret_cast<unsigned char*>(ckmCert->getDER().data());
@@ -236,8 +243,8 @@ int ckmc_get_cert_alias_list(ckmc_alias_list_s** alias_list) {
 
        CKM::AliasVector aliasVector;
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       if( (ret = mgr->getCertificateAliasVector(aliasVector)) != CKMC_SUCCESS) {
-               return ret;
+       if( (ret = mgr->getCertificateAliasVector(aliasVector)) != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        ckmc_alias_list_s *plist = NULL;
@@ -279,7 +286,9 @@ int ckmc_save_data(const char *alias, ckmc_raw_buffer_s data, const ckmc_policy_
        CKM::Policy storePolicy(_tostring(policy.password), policy.extractable, policy.restricted);
 
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       return mgr->saveData(ckmAlias, buffer, storePolicy);
+       int ret = mgr->saveData(ckmAlias, buffer, storePolicy);
+
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
@@ -291,7 +300,8 @@ int ckmc_remove_data(const char *alias)
        CKM::Alias ckmAlias(alias);
 
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       return mgr->removeData(ckmAlias);
+       int ret = mgr->removeData(ckmAlias);
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
@@ -306,8 +316,8 @@ int ckmc_get_data(const char *alias, const char *password, ckmc_raw_buffer_s **d
        CKM::Alias ckmAlias(alias);
 
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       if( (ret = mgr->getData(ckmAlias, _tostring(password), ckmBuff)) != CKMC_SUCCESS) {
-               return ret;
+       if( (ret = mgr->getData(ckmAlias, _tostring(password), ckmBuff)) != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        unsigned char *rawBuff = reinterpret_cast<unsigned char*>(ckmBuff.data());
@@ -326,8 +336,8 @@ int ckmc_get_data_alias_list(ckmc_alias_list_s** alias_list){
 
        CKM::AliasVector aliasVector;
        CKM::ManagerShPtr mgr = CKM::Manager::create();
-       if( (ret = mgr->getDataAliasVector(aliasVector)) != CKMC_SUCCESS) {
-               return ret;
+       if( (ret = mgr->getDataAliasVector(aliasVector)) != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        ckmc_alias_list_s *plist = NULL;
@@ -370,12 +380,8 @@ int ckmc_create_key_pair_rsa(const size_t size,
        CKM::Policy ckmPrivateKeyPolicy(_tostring(policy_private_key.password), policy_private_key.extractable, policy_private_key.restricted);
        CKM::Policy ckmPublicKeyPolicy(_tostring(policy_public_key.password), policy_public_key.extractable, policy_public_key.restricted);
 
-       if( (ret = mgr->createKeyPairRSA(size, ckmPrivakeKeyAlias, ckmPublicKeyAlias, ckmPrivateKeyPolicy, ckmPublicKeyPolicy))
-                       != CKMC_SUCCESS) {
-               return ret;
-       }
-
-       return CKMC_SUCCESS;
+       ret = mgr->createKeyPairRSA(size, ckmPrivakeKeyAlias, ckmPublicKeyAlias, ckmPrivateKeyPolicy, ckmPublicKeyPolicy);
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
@@ -397,7 +403,8 @@ int ckmc_create_key_pair_ecdsa(const ckmc_ec_type_e type,
        CKM::Policy ckmPrivateKeyPolicy(_tostring(policy_private_key.password), policy_private_key.extractable, policy_private_key.restricted);
        CKM::Policy ckmPublicKeyPolicy(_tostring(policy_public_key.password), policy_public_key.extractable, policy_public_key.restricted);
 
-       return mgr->createKeyPairECDSA(ckmType, ckmPrivakeKeyAlias, ckmPublicKeyAlias, ckmPrivateKeyPolicy, ckmPublicKeyPolicy);
+       int ret = mgr->createKeyPairECDSA(ckmType, ckmPrivakeKeyAlias, ckmPublicKeyAlias, ckmPrivateKeyPolicy, ckmPublicKeyPolicy);
+       return to_ckmc_error(ret);
 }
 
 KEY_MANAGER_CAPI
@@ -427,8 +434,8 @@ int ckmc_create_signature(const char *private_key_alias,
                        ckmMessage,
                        ckmHashAlgo,
                        ckmPadding,
-                       ckmSignature)) != CKMC_SUCCESS) {
-               return ret;
+                       ckmSignature)) != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        unsigned char *rawBuff = reinterpret_cast<unsigned char*>(ckmSignature.data());
@@ -464,8 +471,8 @@ int ckmc_verify_signature(const char *public_key_alias,
                        ckmMessage,
                        ckmSignature,
                        ckmHashAlgo,
-                       ckmPadding)) != CKMC_SUCCESS) {
-               return ret;
+                       ckmPadding)) != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        return CKMC_SUCCESS;
@@ -502,8 +509,8 @@ int ckmc_get_cert_chain(const ckmc_cert_s *cert, const ckmc_cert_list_s *untrust
        }
 
        ret = mgr->getCertificateChain(ckmCert, ckmUntrustedCerts, ckmCertChain);
-       if( ret != CKMC_SUCCESS) {
-               return ret;
+       if( ret != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        *cert_chain_list = _toNewCkmCertList(ckmCertChain);
@@ -544,8 +551,8 @@ int ckmc_get_cert_chain_with_alias(const ckmc_cert_s *cert, const ckmc_alias_lis
                }while(next != NULL);
        }
 
-       if( (ret = mgr->getCertificateChain(ckmCert, ckmUntrustedAliases, ckmCertChain)) != CKMC_SUCCESS) {
-               return ret;
+       if( (ret = mgr->getCertificateChain(ckmCert, ckmUntrustedAliases, ckmCertChain)) != CKM_API_SUCCESS) {
+               return to_ckmc_error(ret);
        }
 
        *cert_chain_list = _toNewCkmCertList(ckmCertChain);
diff --git a/src/manager/client-capi/ckmc-type-converter.h b/src/manager/client-capi/ckmc-type-converter.h
new file mode 100644 (file)
index 0000000..435a0df
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ *  Copyright (c) 2000 - 2014 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.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License
+ *
+ *
+ * @file        ckmc-type-converter.h
+ * @author      Dongsun Lee(ds73.lee@samsung.com)
+ * @version     1.0
+ * @brief       new and free methods for the struct of CAPI
+ */
+
+#ifndef CKMC_TYPE_CONVERTER_H_
+#define CKMC_TYPE_CONVERTER_H_
+
+#include <ckm/ckm-error.h>
+#include <ckmc/ckmc-error.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int to_ckmc_error(int ckm_error);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CKMC_TYPE_CONVERTER_H_ */
index 280d8bd..ad8c1a2 100644 (file)
@@ -27,6 +27,7 @@
 #include <ckm/ckm-type.h>
 #include <ckmc/ckmc-type.h>
 #include <ckmc/ckmc-error.h>
+#include <ckmc-type-converter.h>
 #include <openssl/x509v3.h>
 #include <openssl/pkcs12.h>
 #include <openssl/evp.h>
@@ -506,3 +507,29 @@ int _ckmc_load_cert_from_x509(X509 *xCert, ckmc_cert_s **cert)
 
        return ckmc_cert_new(output.data(), output.size(), CKMC_FORM_DER, cert);
 }
+
+int to_ckmc_error(int ckm_error) {
+       switch(ckm_error) {
+       case CKM_API_SUCCESS:                     return CKMC_SUCCESS;
+       case CKM_API_ERROR_SOCKET:                return CKMC_ERROR_SOCKET;
+       case CKM_API_ERROR_BAD_REQUEST:           return CKMC_ERROR_BAD_REQUEST;
+       case CKM_API_ERROR_BAD_RESPONSE:          return CKMC_ERROR_BAD_RESPONSE;
+       case CKM_API_ERROR_SEND_FAILED:           return CKMC_ERROR_SEND_FAILED;
+       case CKM_API_ERROR_RECV_FAILED:           return CKMC_ERROR_RECV_FAILED;
+       case CKM_API_ERROR_AUTHENTICATION_FAILED: return CKMC_ERROR_AUTHENTICATION_FAILED;
+       case CKM_API_ERROR_INPUT_PARAM:           return CKMC_ERROR_INPUT_PARAM;
+       case CKM_API_ERROR_BUFFER_TOO_SMALL:      return CKMC_ERROR_BUFFER_TOO_SMALL;
+       case CKM_API_ERROR_OUT_OF_MEMORY:         return CKMC_ERROR_OUT_OF_MEMORY;
+       case CKM_API_ERROR_ACCESS_DENIED:         return CKMC_ERROR_ACCESS_DENIED;
+       case CKM_API_ERROR_SERVER_ERROR:          return CKMC_ERROR_SERVER_ERROR;
+       case CKM_API_ERROR_DB_LOCKED:             return CKMC_ERROR_DB_LOCKED;
+       case CKM_API_ERROR_DB_ERROR:              return CKMC_ERROR_DB_ERROR;
+       case CKM_API_ERROR_DB_ALIAS_EXISTS:       return CKMC_ERROR_DB_ALIAS_EXISTS;
+       case CKM_API_ERROR_DB_ALIAS_UNKNOWN:      return CKMC_ERROR_DB_ALIAS_UNKNOWN;
+       case CKM_API_ERROR_VERIFICATION_FAILED:   return CKMC_ERROR_VERIFICATION_FAILED;
+       case CKM_API_ERROR_INVALID_FORMAT:        return CKMC_ERROR_INVALID_FORMAT;
+       case CKM_API_ERROR_FILE_ACCESS_DENIED:    return CKMC_ERROR_FILE_ACCESS_DENIED;
+       case CKM_API_ERROR_UNKNOWN:               return CKMC_ERROR_UNKNOWN;
+       }
+       return CKMC_ERROR_UNKNOWN;
+}