Fix implementation of exportable flag.
authorBartlomiej Grzelewski <b.grzelewski@samsung.com>
Mon, 4 Aug 2014 12:29:28 +0000 (14:29 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Fri, 12 Sep 2014 12:59:27 +0000 (14:59 +0200)
Change-Id: I08337d7e1e0bfd5194748d824b0bebe598bb6edc

src/include/ckm/ckm-error.h
src/include/ckmc/ckmc-error.h
src/manager/client-capi/ckmc-type.cpp
src/manager/service/ckm-logic.cpp

index 457906e..7688a65 100644 (file)
@@ -87,6 +87,9 @@ extern "C" {
 /*! \brief   indicating that provided file doesn't exists or cannot be accessed in the file system */
 #define CKM_API_ERROR_FILE_ACCESS_DENIED -18
 
+/*! \brief   indicating that keys are not exportable and could not be returned to client */
+#define CKM_API_ERROR_NOT_EXPORTABLE -19
+
 #define CKM_API_OCSP_STATUS_GOOD                (1<<0)
 #define CKM_API_OCSP_STATUS_UNSUPPORTED         (1<<1)
 #define CKM_API_OCSP_STATUS_UNKNOWN             (1<<2)
index 31a3e9d..8a65d61 100644 (file)
@@ -60,7 +60,8 @@ typedef enum{
        CKMC_ERROR_VERIFICATION_FAILED      = KEY_MANAGER_ERROR_CLASS | 0x0D, /**< CA certificate(s) were unknown and chain could not be created */
        CKMC_ERROR_INVALID_FORMAT           = KEY_MANAGER_ERROR_CLASS | 0x0E, /**< A provided file or binary has not a valid format */
        CKMC_ERROR_FILE_ACCESS_DENIED       = KEY_MANAGER_ERROR_CLASS | 0x0F, /**< A provided file or binary has not a valid format */
-       CKMC_ERROR_UNKNOWN                  = KEY_MANAGER_ERROR_CLASS | 0x10, /**< A provided file or binary has not a valid format */
+    CKMC_ERROR_NOT_EXPORTABLE           = KEY_MANAGER_ERROR_CLASS | 0x10, /**< Key is not exportable. It could not be returned to client */
+       CKMC_ERROR_UNKNOWN                  = KEY_MANAGER_ERROR_CLASS | 0x11, /**< A provided file or binary has not a valid format */
 } key_manager_error_e;
 
 
index 32ccf0d..c02bf7f 100644 (file)
@@ -531,6 +531,7 @@ int to_ckmc_error(int ckm_error) {
        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_NOT_EXPORTABLE:        return CKMC_ERROR_NOT_EXPORTABLE;
        case CKM_API_ERROR_UNKNOWN:               return CKMC_ERROR_UNKNOWN;
        }
        return CKMC_ERROR_UNKNOWN;
index 6612e74..69434f7 100755 (executable)
@@ -348,6 +348,11 @@ RawBuffer CKMLogic::getData(
         row.dataType = dataType;
     }
 
+    if ((CKM_API_SUCCESS == retCode) && (row.exportable == 0)) {
+        row.data.clear();
+        retCode = CKM_API_ERROR_NOT_EXPORTABLE;
+    }
+
     MessageBuffer response;
     Serialization::Serialize(response, static_cast<int>(LogicCommand::GET));
     Serialization::Serialize(response, commandId);