From: Bartlomiej Grzelewski Date: Mon, 4 Aug 2014 12:29:28 +0000 (+0200) Subject: Fix implementation of exportable flag. X-Git-Tag: accepted/tizen/common/20140925.172038~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b9a144d24ec4f1b1583e1cee7004f81a7923ef7e;p=platform%2Fcore%2Fsecurity%2Fkey-manager.git Fix implementation of exportable flag. Change-Id: I08337d7e1e0bfd5194748d824b0bebe598bb6edc --- diff --git a/src/include/ckm/ckm-error.h b/src/include/ckm/ckm-error.h index 457906e..7688a65 100644 --- a/src/include/ckm/ckm-error.h +++ b/src/include/ckm/ckm-error.h @@ -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) diff --git a/src/include/ckmc/ckmc-error.h b/src/include/ckmc/ckmc-error.h index 31a3e9d..8a65d61 100644 --- a/src/include/ckmc/ckmc-error.h +++ b/src/include/ckmc/ckmc-error.h @@ -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; diff --git a/src/manager/client-capi/ckmc-type.cpp b/src/manager/client-capi/ckmc-type.cpp index 32ccf0d..c02bf7f 100644 --- a/src/manager/client-capi/ckmc-type.cpp +++ b/src/manager/client-capi/ckmc-type.cpp @@ -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; diff --git a/src/manager/service/ckm-logic.cpp b/src/manager/service/ckm-logic.cpp index 6612e74..69434f7 100755 --- a/src/manager/service/ckm-logic.cpp +++ b/src/manager/service/ckm-logic.cpp @@ -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(LogicCommand::GET)); Serialization::Serialize(response, commandId);