SET(INC_DIR include)
INCLUDE_DIRECTORIES(
- "${INC_DIR}"
+ "${INC_DIR}"
)
SET(pc_requires "capi-base-common cert-svc")
ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
ADD_DEFINITIONS("-DSLP_DEBUG")
MESSAGE("PROFILE_TYPE = ${PROFILE_TYPE}")
-IF("${PROFILE_TYPE}" STREQUAL "WEARABLE")
+IF("${PROFILE_TYPE}" STREQUAL "TV")
+ ADD_DEFINITIONS("-DPROFILE_TYPE_TV")
+ELSEIF("${PROFILE_TYPE}" STREQUAL "WEARABLE")
ADD_DEFINITIONS("-DPROFILE_TYPE_WEARABLE")
-ELSE()
+ELSEIF("${PROFILE_TYPE}" STREQUAL "MOBILE")
ADD_DEFINITIONS("-DPROFILE_TYPE_MOBILE")
+ELSE()
+ ADD_DEFINITIONS("-DPROFILE_TYPE_COMMON")
ENDIF()
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${LIBDIR}")
aux_source_directory(src SOURCES)
ADD_LIBRARY(${fw_name} SHARED ${SOURCES})
CLEAN_DIRECT_OUTPUT 1
)
-INSTALL(TARGETS ${fw_name} DESTINATION ../lib)
+INSTALL(TARGETS ${fw_name} DESTINATION ${LIBDIR})
INSTALL(
- DIRECTORY ${INC_DIR}/ DESTINATION ../include/privilegemgr
+ DIRECTORY ${INC_DIR}/ DESTINATION ${INCLUDEDIR}/privilegemgr
FILES_MATCHING
PATTERN "*_private.h" EXCLUDE
PATTERN "${INC_DIR}/*.h"
SET(PC_CFLAGS -I\${includedir}/privilegemgr)
CONFIGURE_FILE(${fw_name}.pc.in ${fw_name}.pc @ONLY)
-INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ../lib/pkgconfig)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ${LIBDIR}/pkgconfig)
IF(UNIX)
ADD_CUSTOM_TARGET(privilege-string ALL DEPENDS ${mo_files})
-INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/cmake_build_tmp/output/target/generic/root/usr/share/locale DESTINATION ../share)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/cmake_build_tmp/output/target/generic/root/usr/share/locale DESTINATION ${DATADIR})
# Package Information for pkg-config
prefix=@PREFIX@
-exec_prefix=/usr
-libdir=/usr/lib
-includedir=/usr/include/privilegemgr
+libdir=@LIBDIR@
+includedir=@INCLUDEDIR@/privilegemgr
Name: @PC_NAME@
Description: @PACKAGE_DESCRIPTION@
char* privilege_description;
int privilege_level_id;
char* privilege_level;
- char* version;
+ char* issued_version;
+ char* expired_version;
+ char* changed_to;
} privilege_info_db_row_s;
typedef enum
{
- PRIVILIEGE_DB_MANAGER_ERR_NONE = TIZEN_ERROR_NONE,
- PRIVILIEGE_DB_NO_EXIST_RESULT = TIZEN_ERROR_NO_DATA,
- PRIVILIEGE_DB_MANAGER_ERR_CONNECTION_FAIL = TIZEN_ERROR_UNKNOWN,
- PRIVILIEGE_DB_MANAGER_ERR_INVALID_QUERY = TIZEN_ERROR_INVALID_PARAMETER,
- PRIVILIEGE_DB_MANAGER_ERR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,
+ PRIVILEGE_DB_MANAGER_ERR_NONE = TIZEN_ERROR_NONE,
+ PRIVILEGE_DB_NO_EXIST_RESULT = TIZEN_ERROR_NO_DATA,
+ PRIVILEGE_DB_MANAGER_ERR_CONNECTION_FAIL = TIZEN_ERROR_UNKNOWN,
+ PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY = TIZEN_ERROR_INVALID_PARAMETER,
+ PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,
} privilege_db_manager_error_e;
typedef enum
{
- PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PUBLIC = 0,
- PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PARTNER = 1,
- PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM = 2
+ PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PUBLIC = 0,
+ PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PARTNER = 1,
+ PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM = 2
} privilege_db_manager_privilege_level_e;
typedef enum
{
- PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_WRT = 0,
- PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_CORE = 1
+ PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_WRT = 0,
+ PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE = 1
} privilege_db_manager_package_type_e;
#ifdef __cplusplus
extern "C" {
#endif
-int privilege_db_manager_get_privilege_list(GList** privilege_list);
+int privilege_db_manager_get_privilege_list(const char* api_version, privilege_db_manager_package_type_e package_type, GList** privilege_list);
int privilege_db_manager_get_privilege_display(privilege_db_manager_package_type_e package_type, const char* privilege_name, const char* api_version, char** privilege_display);
#define __TIZEN_SECURITY_PRIVILEGE_INFO_H
#include <tizen.h>
-#include "privilege_manager.h"
-
#ifdef __cplusplus
extern "C" {
#endif
/**
+ * @brief Enumerations of error code for Privilege Information.
+ */
+typedef enum
+{
+ PRVMGR_ERR_NONE = 0,
+ PRVMGR_ERR_INVALID_PARAMETER = 1,
+ PRVMGR_ERR_OUT_OF_MEMORY = 2,
+ PRVMGR_ERR_INTERNAL_ERROR = 3,
+ PRVMGR_ERR_NO_DATA = 4,
+ PRVMGR_ERR_NO_EXIST_PRIVILEGE = 5,
+ PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL = 6,
+ PRVMGR_ERR_INVALID_PRIVILEGE = 7,
+ PRVMGR_ERR_DEPRECATED_PRIVILEGE = 8,
+} privilege_manager_error_e;
+
+/**
* @brief Called to get a privilege group once for specific package.
* @param[in] privilege_group The privilege group
* @param[in] user_data The user data passed from the foreach function
#include <tizen.h>
#include <glib.h>
#include <cert-service.h>
-
+#include "privilege_info.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum
{
- PRVMGR_PACKAGE_TYPE_CORE = 0,
- PRVMGR_PACKAGE_TYPE_NATIVE = 1,
+ PRVMGR_PACKAGE_TYPE_WRT = 0,
+ PRVMGR_PACKAGE_TYPE_CORE = 1,
} privilege_manager_package_type_e;
-/**
- * @brief Enumerations of error code for Privilege Information.
- */
-typedef enum
-{
- PRVMGR_ERR_NONE = 0,
- PRVMGR_ERR_INVALID_PARAMETER = 1,
- PRVMGR_ERR_OUT_OF_MEMORY = 2,
- PRVMGR_ERR_INTERNAL_ERROR = 3,
- PRVMGR_ERR_NO_DATA = 4,
- PRVMGR_ERR_NO_EXIST_PRIVILEGE = 5,
- PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL = 6
-} privilege_manager_error_e;
+
/**
* @brief verify privilege name and level in the privilege list.
*/
EXPORT_API int privilege_manager_verify_privilege_list(privilege_manager_package_type_e package_type, GList* privilege_list, privilege_manager_visibility_e visibility, char **error_privilege_name);
-/**
- * @brief verify privilege name in the privilege list.
- * @remarks @a privilege_list must be released with free() by you.
- * @remarks @a error_privilege_name_list must be released with free() by you.
- * @param [in] privilege_manager_package_type_e The privilege_manager_package_type_e
- * @param [in] privilege_list The privilege_list
- * @param [out] error_privilege_name_list The error_privilege_name_list's value is assigned when PRVMGR_ERR_NO_EXIST_PRIVILEGE is returned, otherwise null is assigned.
- * @return 0 on success, otherwise a negative error value.
- * @retval #PRVMGR_ERR_NONE Successful
- * @retval #PRVMGR_ERR_NO_EXIST_PRIVILEGE privilege don't exist. Error_privilege_name'value is assigned.
- * @retval #PRVMGR_ERR_OUT_OF_MEMORY Out of memory
- * @retval #PRVMGR_ERR_INVALID_PARAMETER Invalid parameter
- * @retval #PRVMGR_ERR_INTERNAL_ERROR Internal error
- */
-EXPORT_API int privilege_manager_verify_privilege_name(privilege_manager_package_type_e package_type, GList* privilege_list, GList **error_privilege_name_list);
-
-/**
- * @brief verify privilege name and level in the privilege list.
- * @remarks @a privilege_list must be released with free() by you.
- * @remarks @a error_privilege_name_list must be released with free() by you.
- * @remarks @a error_privilege_level_list must be released with free() by you.
- * @param [in] privilege_manager_package_type_e The privilege_manager_package_type_e
- * @param [in] privilege_list The privilege_list
- * @param [in] privilege_manager_visibility_e The privilege_manager_visibility_e
- * @param [out] error_privilege_name_list The error_privilege_name_list's value is assigned when PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL is returned, otherwise null is assigned.
- * @param [out] error_privilege_level_list The error_privilege_level_list's value is assigned when PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL is returned, otherwise null is assigned.
- * @return 0 on success, otherwise a negative error value.
- * @retval #PRVMGR_ERR_NONE Successful
- * @retval #PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL privilege level is higher than visibility. Error_privilege_name_list and error_privilege_level_list 'value is assigned.
- * @retval #PRVMGR_ERR_OUT_OF_MEMORY Out of memory
- * @retval #PRVMGR_ERR_INVALID_PARAMETER Invalid parameter
- * @retval #PRVMGR_ERR_INTERNAL_ERROR Internal error
- */
-EXPORT_API int privilege_manager_verify_privilege_level(privilege_manager_package_type_e package_type, GList* privilege_list, privilege_manager_visibility_e visibility, GList **error_privilege_name_list, GList **error_privilege_level_list);
-
+EXPORT_API int privilege_manager_verify_privilege(const char* api_version, privilege_manager_package_type_e package_type, GList* privilege_list, privilege_manager_visibility_e visibility, char **error_message);
#ifdef __cplusplus
}
touch $DB_NAME
echo "Creating PRIVILEGE_INFO table ..."
-sqlite3 $DB_NAME "CREATE TABLE PRIVILEGE_INFO (PROFILE_ID NUMERIC, PROFILE TEXT, PACKAGE_TYPE_ID NUMERIC, PACKAGE_TYPE TEXT, PRIVILEGE_LEVEL_ID NUMERIC, PRIVILEGE_LEVEL TEXT, API_VERSION_ISSUED TEXT, API_VERSION_EXPIRED TEXT, DOCUMENTED INTEGER, PRIVILEGE_NAME TEXT, PRIVILEGE_DISPLAY TEXT, PRIVILEGE_DESCRIPTION TEXT, PRIVILEGE_GROUP_ID NUMERIC, PRIVLEGE_GROUP TEXT);"
+sqlite3 $DB_NAME "CREATE TABLE PRIVILEGE_INFO (PROFILE_ID NUMERIC, PROFILE TEXT, PACKAGE_TYPE_ID NUMERIC, PACKAGE_TYPE TEXT, PRIVILEGE_LEVEL_ID NUMERIC, PRIVILEGE_LEVEL TEXT, API_VERSION_ISSUED TEXT, API_VERSION_EXPIRED TEXT, DOCUMENTED INTEGER, PRIVILEGE_NAME TEXT, PRIVILEGE_DISPLAY TEXT, PRIVILEGE_DESCRIPTION TEXT, PRIVILEGE_GROUP_ID NUMERIC, PRIVLEGE_GROUP TEXT, CHANGED_TO TEXT);"
echo "Inserting data ..."
LIST=`cat core_privilege_info.csv | sed 's/ //g'`
exit
fi
+ CHANGED_TO=`echo $i | cut -d "," -f 11`
+
echo "Inserting $PRIVILEGE_NAME ..."
- sqlite3 $DB_NAME "insert into privilege_info values ( $PROFILE_ID, '$PROFILE', $PACKAGE_TYPE_ID, '$PACKAGE_TYPE', $PRIVILEGE_LEVEL_ID, '$PRIVILEGE_LEVEL', '$API_VERSION_ISSUED', '$API_VERSION_EXPIRED', '$DOCUMENTED', '$PRIVILEGE_NAME', '$PRIVILEGE_DISPLAY', '$PRIVILEGE_DESCRIPTION', $PRIVILEGE_GROUP_ID, '$PRIVILEGE_GROUP')"
+ sqlite3 $DB_NAME "insert into privilege_info values ( $PROFILE_ID, '$PROFILE', $PACKAGE_TYPE_ID, '$PACKAGE_TYPE', $PRIVILEGE_LEVEL_ID, '$PRIVILEGE_LEVEL', '$API_VERSION_ISSUED', '$API_VERSION_EXPIRED', '$DOCUMENTED', '$PRIVILEGE_NAME', '$PRIVILEGE_DISPLAY', '$PRIVILEGE_DESCRIPTION', $PRIVILEGE_GROUP_ID, '$PRIVILEGE_GROUP', '$CHANGED_TO')"
done
echo "Check inserted data"
-#PROFILE,#PACKAGE_TYPE,#PRIVILEGE_LEVEL,#API_VERSION_ISSUED,#API_VERSION_EXPIRED,#DOCUMENTED,#PRIVILEGE_NAME,#PRIVILEGE_DISPLAY,#PRIVILEGE_DESCRIPTION,#PRIVILEGE_GROUP
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/account.read,IDS_TPLATFORM_BODY_READING_ACCOUNTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_ACCOUNTS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/account.write,IDS_TPLATFORM_BODY_MANAGING_ACCOUNTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_EDIT_AND_DELETE_ACCOUNTS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/alarm.get,IDS_TPLATFORM_HEADER_RETRIEVING_ALARMS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_INFORMATION_ABOUT_YOUR_SAVED_ALARMS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/alarm.set,IDS_TPLATFORM_BODY_SETTING_ALARMS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SET_ALARMS_AND_WAKE_THE_DEVICE_UP_AT_SCHEDULED_TIMES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,platform,2.3,9.9,no,http://tizen.org/privilege/antivirus,IDS_TPLATFORM_HEADER_SCANNING_FOR_AND_ERASING_VIRUSES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_ERASE_DATA_IN_ANY_OTHER_APPLICATION_MSG,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/appmanager.kill,IDS_TPLATFORM_BODY_CLOSING_APPLICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CLOSE_OTHER_APPLICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/appmanager.launch,IDS_TPLATFORM_HEADER_OPENING_AND_RESUMING_APPLICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_OPEN_OTHER_APPLICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/bluetooth,IDS_TPLATFORM_BODY_USING_UNRESTRICTED_BLUETOOTH_SERVICES_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_PERFORM_UNRESTRICTED_ACTIONS_USING_BLUETOOTH_SUCH_AS_SCANNING_FOR_AND_CONNECTING_TO_OTHER_DEVICES,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/bluetooth.admin,IDS_TPLATFORM_HEADER_CHANGING_BLUETOOTH_SETTINGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CHANGE_BLUETOOTH_SETTINGS_SUCH_AS_TURNING_BLUETOOTH_ON_OR_OFF_SETTING_THE_DEVICE_NAME_AND_ENABLING_OR_DISABLING_AV_REMOTE_CONTROL,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/bookmark.admin,IDS_TPLATFORM_BODY_ACCESSING_INTERNET_BOOKMARKS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RETRIEVE_CREATE_EDIT_AND_DELETE_INTERNET_BOOKMARKS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/calendar.read,IDS_TPLATFORM_BODY_READING_CALENDAR,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_EVENTS_AND_TASKS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/calendar.write,IDS_TPLATFORM_BODY_MANAGING_CALENDAR,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_UPDATE_AND_DELETE_EVENTS_AND_TASKS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/call,IDS_TPLATFORM_HEADER_MAKING_PHONE_CALLS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MAKE_PHONE_CALLS_TO_NUMBERS_WHEN_THEY_ARE_TAPPED_WITHOUT_FURTHER_CONFIRMATION,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/callhistory.read,IDS_TPLATFORM_BODY_READING_CALL_LOGS,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_READ_CALL_LOG_ITEMS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/callhistory.write,IDS_TPLATFORM_BODY_MANAGING_CALL_LOGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_UPDATE_AND_DELETE_CALL_LOG_ITEMS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/camera,IDS_TPLATFORM_BODY_USING_CAMERA,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_TAKE_AND_PREVIEW_PICTURES,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/contact.read,IDS_TPLATFORM_BODY_READING_CONTACTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_YOUR_PROFILE_CONTACTS_AND_CONTACT_HISTORY_CONTACT_HISTORY_CAN_INCLUDE_SOCIAL_NETWORK_ACTIVITY,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/contact.write,IDS_TPLATFORM_BODY_MANAGING_CONTACTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_UPDATE_AND_DELETE_YOUR_PROFILE_CONTACTS_AND_ANY_CONTACT_HISTORY_MSG,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/content.write,IDS_TPLATFORM_BODY_MANAGING_CONTENT,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CHANGE_MEDIA_INFORMATION_THIS_INFORMATION_CAN_BE_USED_BY_OTHER_APPLICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/datasharing,IDS_TPLATFORM_BODY_SHARING_DATA_BETWEEN_APPLICATIONS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SHARE_DATA_WITH_OTHER_APPLICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/display,IDS_TPLATFORM_BODY_MANAGING_DISPLAY_SETTINGS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_DISPLAY_SETTINGS_SUCH_AS_THE_BRIGHTNESS_THIS_MAY_INCREASE_BATTERY_CONSUMPTION,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/download,IDS_TPLATFORM_BODY_DOWNLOADING_VIA_HTTP,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_HTTP_DOWNLOADS_THIS_MAY_RESULT_IN_ADDITIONAL_CHARGES_DEPENDING_ON_YOUR_PAYMENT_PLAN,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB
-mobile,core,public,2.3,9.9,yes,http://tizen.org/privilege/email,IDS_TPLATFORM_BODY_MANAGING_EMAIL_ACCOUNTS_MAILBOXES_AND_EMAILS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_YOUR_EMAIL_ACCOUNTS_INCLUDING_YOUR_FOLDERS_AND_EMAILS,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB
-mobile,core,platform,2.3,9.9,yes,http://tizen.org/privilege/email.admin,IDS_TPLATFORM_BODY_MANAGING_EMAIL_CONFIGURATIONS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_THE_SETTINGS_OF_EMAIL_APPLICATIONS,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/externalstorage,IDS_TPLATFORM_BODY_ACCESSING_EXTERNAL_STORAGE_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_FILES_THAT_ARE_SAVED_TO_EXTERNAL_STORAGE_SUCH_AS_SD_CARDS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/externalstorage.appdata,IDS_TPLATFORM_BODY_ACCESSING_APPLICATION_DATA_IN_EXTERNAL_STORAGE_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_ITS_OWN_FILES_IN_EXTERNAL_STORAGE_SUCH_AS_SD_CARDS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/haptic,IDS_TPLATFORM_BODY_MANAGING_VIBRATION_FEEDBACK_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CONTROL_VIBRATION_FEEDBACK,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.4,9.9,yes,http://tizen.org/privilege/healthinfo,IDS_TPLATFORM_HEADER_READING_HEALTH_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_HEALTH_INFORMATION_GATHERED_BY_THE_DEVICE_SENSORS_SUCH_AS_THE_PEDOMETER_AND_THE_HEART_RATE_MONITOR,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/internet,IDS_TPLATFORM_BODY_ACCESSING_INTERNET,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ACCESS_THE_INTERNET_THIS_MAY_RESULT_IN_ADDITIONAL_CHARGES_DEPENDING_ON_YOUR_PAYMENT_PLAN,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/keymanager,IDS_TPLATFORM_BODY_USING_SECURE_REPOSITORY_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SAVE_KEYS_CERTIFICATES_AND_DATA_TO_AND_RETRIEVE_AND_DELETE_THEM_FROM_PASSWORD_PROTECTED_STORAGE,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/keymanager.admin,IDS_TPLATFORM_BODY_LOCKING_UNLOCKING_SECURE_REPOSITORY_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_LOCK_AND_UNLOCK_PASSWORD_PROTECTED_STORAGE_AND_MANAGE_PASSWORD_CHANGES_FOR_IT,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/led,IDS_TPLATFORM_BODY_MANAGING_LEDS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_TURN_LEDS_ON_OR_OFF_SUCH_AS_THE_LED_ON_THE_FRONT_OF_THE_DEVICE_AND_THE_CAMERA_FLASH,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/location,IDS_TPLATFORM_BODY_USING_USER_LOCATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_USE_YOUR_LOCATION_DATA,IDS_TPLATFORM_OPT_LOCATION_T_LBS
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/location.enable,IDS_TPLATFORM_BODY_MANAGING_LOCATION_SETTINGS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CONTROL_YOUR_LOCATION_SERVICE_SETTINGS,IDS_TPLATFORM_OPT_LOCATION_T_LBS
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/mediastorage,IDS_TPLATFORM_HEADER_ACCESSING_MEDIA_FOLDERS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_FILES_IN_MEDIA_FOLDERS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/message.read,IDS_TPLATFORM_BODY_READING_TEXT_AND_MULTIMEDIA_MESSAGES_AND_RELATED_INFORMATION_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_TEXT_AND_MULTIMEDIA_MESSAGES_AND_ANY_INFORMATION_RELATED_TO_THEM,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/message.write,IDS_TPLATFORM_BODY_SENDING_TEXT_AND_MULTIMEDIA_MESSAGES_AND_UPDATING_THEIR_STATUSES_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_WRITE_SEND_DELETE_AND_MOVE_TEXT_AND_MULTIMEDIA_MESSAGES_AND_CHANGE_THE_SETTINGS_AND_STATUSES_OF_MESSAGES_MSG,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/network.get,IDS_TPLATFORM_HEADER_READING_NETWORK_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RETRIEVE_NETWORK_INFORMATION_SUCH_AS_THE_STATUS_OF_EACH_NETWORK_ITS_TYPE_AND_DETAILED_NETWORK_PROFILE_INFORMATION,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/network.profile,IDS_TPLATFORM_HEADER_MANAGING_NETWORK_PROFILES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ADD_REMOVE_AND_EDIT_NETWORK_PROFILES,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/network.set,IDS_TPLATFORM_HEADER_MANAGING_NETWORK_CONNECTIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_TURN_WI_FI_AND_ON_AND_OFF_AND_CONNECT_TO_AND_DISCONNECT_FROM_WI_FI_AND_MOBILE_NETWORKS,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/nfc,IDS_TPLATFORM_HEADER_USING_BASIC_NFC_SERVICES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_NFC_TAG_INFORMATION_AND_SEND_NFC_MESSAGES_TO_OTHER_DEVICES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/nfc.admin,IDS_TPLATFORM_BODY_MANAGING_NFC_GENERAL_SETTINGS,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_CHANGE_NFC_SETTINGS_SUCH_AS_TURNING_NFC_ON_OR_OFF,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/nfc.cardemulation,IDS_TPLATFORM_HEADER_USING_NFC_CARD_EMULATION_MODE,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ACCESS_SMART_CARD_DETAILS_SUCH_AS_CREDIT_CARD_DETAILS_AND_ALLOW_USERS_TO_MAKE_PAYMENTS_VIA_NFC,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/notification,IDS_TPLATFORM_BODY_PROVIDING_NOTIFICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SHOW_AND_HIDE_ITS_OWN_NOTIFICATIONS_AND_BADGES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/packagemanager.admin,IDS_TPLATFORM_HEADER_INSTALLING_UNINSTALLING_APPLICATION_PACKAGES_AND_CLEARING_CACHES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_INSTALL_AND_UNINSTALL_APPLICATION_PACKAGES_AND_CLEAR_APPLICATIONS_CACHES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/packagemanager.info,IDS_TPLATFORM_HEADER_RETRIEVING_DETAILED_PACKAGE_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RETRIEVE_DETAILED_APPLICATION_PACKAGE_INFORMATION,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/power,IDS_TPLATFORM_BODY_MANAGING_POWER,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_CONTROL_POWER_RELATED_SETTINGS_SUCH_AS_DIMMING_THE_SCREEN,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB
-mobile,core,public,2.3,9.9,yes,http://tizen.org/privilege/push,IDS_TPLATFORM_BODY_RECEIVING_PUSH_NOTIFICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RECEIVE_NOTIFICATIONS_VIA_THE_INTERNET,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/recorder,IDS_TPLATFORM_HEADER_RECORDING_VIDEO_AND_AUDIO,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RECORD_VIDEO_AND_AUDIO,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/screenshot,IDS_TPLATFORM_HEADER_CAPTURING_DEVICE_SCREEN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CAPTURE_SCREENSHOTS,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/shortcut,IDS_TPLATFORM_HEADER_MANAGING_SHORTCUTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_AND_DELETE_SHORTCUTS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/systemsettings,IDS_TPLATFORM_HEADER_MANAGING_UNRESTRICTED_SYSTEM_SETTINGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_UNRESTRICTED_SYSTEM_SETTINGS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/systemsettings.admin,IDS_TPLATFORM_HEADER_MANAGING_ALL_SYSTEM_SETTINGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_ALL_SYSTEM_SETTINGS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/telephony,IDS_TPLATFORM_BODY_ACCESSING_TELEPHONY_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RETRIEVE_TELEPHONY_INFORMATION_SUCH_AS_THE_NETWORK_AND_SIM_CARD_USED_THE_IMEI_AND_THE_STATUSES_OF_CALLS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/telephony.admin,IDS_TPLATFORM_HEADER_MANAGING_TELEPHONY_SETTINGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_TELEPHONY_SETTINGS_SUCH_AS_THOSE_FOR_INCOMING_AND_OUTGOING_CALLS_FORWARDING_AND_HOLDING_CALLS_NETWORKS_AND_SIM_CARDS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/tethering.admin,IDS_TPLATFORM_HEADER_ACCESSING_TETHERING_SERVICES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ENABLE_AND_DISABLE_TETHERING_SERVICES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/volume.set,IDS_TPLATFORM_HEADER_ADJUSTING_VOLUME,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ADJUST_THE_VOLUME_FOR_DIFFERENT_FEATURES_SUCH_AS_NOTIFICATION_ALERTS_RINGTONES_AND_MEDIA,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
-common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/web-history.admin,IDS_TPLATFORM_HEADER_MANAGING_INTERNET_HISTORY,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_YOUR_INTERNET_HISTORY,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/wifidirect,IDS_TPLATFORM_HEADER_MANAGING_WI_FI_DIRECT_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ENABLE_AND_DISABLE_WI_FI_DIRECT_MANAGE_WI_FI_DIRECT_CONNECTIONS_AND_CHANGE_WI_FI_DIRECT_SETTINGS,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB
-common,core,public,2.3,9.9,yes,http://tizen.org/privilege/window.priority.set,IDS_TPLATFORM_HEADER_DISPLAYING_WINDOWS_ON_TOP_OF_OTHER_APPLICATIONS_AND_SCREENS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_APPEAR_ON_TOP_OF_OTHER_WINDOWS_AND_SCREENS_MSG,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB
+#PROFILE,#PACKAGE_TYPE,#PRIVILEGE_LEVEL,#API_VERSION_ISSUED,#API_VERSION_EXPIRED,#DOCUMENTED,#PRIVILEGE_NAME,#PRIVILEGE_DISPLAY,#PRIVILEGE_DESCRIPTION,#PRIVILEGE_GROUP,#CHANGED_TO
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/account.read,IDS_TPLATFORM_BODY_READING_ACCOUNTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_ACCOUNTS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/account.write,IDS_TPLATFORM_BODY_MANAGING_ACCOUNTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_EDIT_AND_DELETE_ACCOUNTS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/alarm.get,IDS_TPLATFORM_HEADER_RETRIEVING_ALARMS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_INFORMATION_ABOUT_YOUR_SAVED_ALARMS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/alarm.set,IDS_TPLATFORM_BODY_SETTING_ALARMS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SET_ALARMS_AND_WAKE_THE_DEVICE_UP_AT_SCHEDULED_TIMES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,platform,2.3,9.9,no,http://tizen.org/privilege/antivirus,IDS_TPLATFORM_HEADER_SCANNING_FOR_AND_ERASING_VIRUSES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_ERASE_DATA_IN_ANY_OTHER_APPLICATION_MSG,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/appmanager.kill,IDS_TPLATFORM_BODY_CLOSING_APPLICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CLOSE_OTHER_APPLICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/appmanager.launch,IDS_TPLATFORM_HEADER_OPENING_AND_RESUMING_APPLICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_OPEN_OTHER_APPLICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/bluetooth,IDS_TPLATFORM_BODY_USING_UNRESTRICTED_BLUETOOTH_SERVICES_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_PERFORM_UNRESTRICTED_ACTIONS_USING_BLUETOOTH_SUCH_AS_SCANNING_FOR_AND_CONNECTING_TO_OTHER_DEVICES,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/bluetooth.admin,IDS_TPLATFORM_HEADER_CHANGING_BLUETOOTH_SETTINGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CHANGE_BLUETOOTH_SETTINGS_SUCH_AS_TURNING_BLUETOOTH_ON_OR_OFF_SETTING_THE_DEVICE_NAME_AND_ENABLING_OR_DISABLING_AV_REMOTE_CONTROL,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/bookmark.admin,IDS_TPLATFORM_BODY_ACCESSING_INTERNET_BOOKMARKS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RETRIEVE_CREATE_EDIT_AND_DELETE_INTERNET_BOOKMARKS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/calendar.read,IDS_TPLATFORM_BODY_READING_CALENDAR,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_EVENTS_AND_TASKS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/calendar.write,IDS_TPLATFORM_BODY_MANAGING_CALENDAR,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_UPDATE_AND_DELETE_EVENTS_AND_TASKS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/call,IDS_TPLATFORM_HEADER_MAKING_PHONE_CALLS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MAKE_PHONE_CALLS_TO_NUMBERS_WHEN_THEY_ARE_TAPPED_WITHOUT_FURTHER_CONFIRMATION,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/callhistory.read,IDS_TPLATFORM_BODY_READING_CALL_LOGS,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_READ_CALL_LOG_ITEMS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+mobile,core,public,2.3,9.9,yes,http://tizen.org/privilege/callhistory.write,IDS_TPLATFORM_BODY_MANAGING_CALL_LOGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_UPDATE_AND_DELETE_CALL_LOG_ITEMS,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/camera,IDS_TPLATFORM_BODY_USING_CAMERA,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_TAKE_AND_PREVIEW_PICTURES,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/contact.read,IDS_TPLATFORM_BODY_READING_CONTACTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_YOUR_PROFILE_CONTACTS_AND_CONTACT_HISTORY_CONTACT_HISTORY_CAN_INCLUDE_SOCIAL_NETWORK_ACTIVITY,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/contact.write,IDS_TPLATFORM_BODY_MANAGING_CONTACTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_UPDATE_AND_DELETE_YOUR_PROFILE_CONTACTS_AND_ANY_CONTACT_HISTORY_MSG,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/content.write,IDS_TPLATFORM_BODY_MANAGING_CONTENT,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CHANGE_MEDIA_INFORMATION_THIS_INFORMATION_CAN_BE_USED_BY_OTHER_APPLICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/datasharing,IDS_TPLATFORM_BODY_SHARING_DATA_BETWEEN_APPLICATIONS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SHARE_DATA_WITH_OTHER_APPLICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/display,IDS_TPLATFORM_BODY_MANAGING_DISPLAY_SETTINGS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_DISPLAY_SETTINGS_SUCH_AS_THE_BRIGHTNESS_THIS_MAY_INCREASE_BATTERY_CONSUMPTION,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/download,IDS_TPLATFORM_BODY_DOWNLOADING_VIA_HTTP,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_HTTP_DOWNLOADS_THIS_MAY_RESULT_IN_ADDITIONAL_CHARGES_DEPENDING_ON_YOUR_PAYMENT_PLAN,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
+mobile,core,public,2.3,9.9,yes,http://tizen.org/privilege/email,IDS_TPLATFORM_BODY_MANAGING_EMAIL_ACCOUNTS_MAILBOXES_AND_EMAILS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_YOUR_EMAIL_ACCOUNTS_INCLUDING_YOUR_FOLDERS_AND_EMAILS,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
+mobile,core,platform,2.3,9.9,yes,http://tizen.org/privilege/email.admin,IDS_TPLATFORM_BODY_MANAGING_EMAIL_CONFIGURATIONS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_THE_SETTINGS_OF_EMAIL_APPLICATIONS,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/externalstorage,IDS_TPLATFORM_BODY_ACCESSING_EXTERNAL_STORAGE_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_FILES_THAT_ARE_SAVED_TO_EXTERNAL_STORAGE_SUCH_AS_SD_CARDS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/externalstorage.appdata,IDS_TPLATFORM_BODY_ACCESSING_APPLICATION_DATA_IN_EXTERNAL_STORAGE_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_ITS_OWN_FILES_IN_EXTERNAL_STORAGE_SUCH_AS_SD_CARDS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/haptic,IDS_TPLATFORM_BODY_MANAGING_VIBRATION_FEEDBACK_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CONTROL_VIBRATION_FEEDBACK,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/internet,IDS_TPLATFORM_BODY_ACCESSING_INTERNET,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ACCESS_THE_INTERNET_THIS_MAY_RESULT_IN_ADDITIONAL_CHARGES_DEPENDING_ON_YOUR_PAYMENT_PLAN,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
+mobile,core,public,2.3,9.9,yes,http://tizen.org/privilege/keymanager,IDS_TPLATFORM_BODY_USING_SECURE_REPOSITORY_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SAVE_KEYS_CERTIFICATES_AND_DATA_TO_AND_RETRIEVE_AND_DELETE_THEM_FROM_PASSWORD_PROTECTED_STORAGE,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+mobile,core,platform,2.3,9.9,yes,http://tizen.org/privilege/keymanager.admin,IDS_TPLATFORM_BODY_LOCKING_UNLOCKING_SECURE_REPOSITORY_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_LOCK_AND_UNLOCK_PASSWORD_PROTECTED_STORAGE_AND_MANAGE_PASSWORD_CHANGES_FOR_IT,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/led,IDS_TPLATFORM_BODY_MANAGING_LEDS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_TURN_LEDS_ON_OR_OFF_SUCH_AS_THE_LED_ON_THE_FRONT_OF_THE_DEVICE_AND_THE_CAMERA_FLASH,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/location,IDS_TPLATFORM_BODY_USING_USER_LOCATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_USE_YOUR_LOCATION_DATA,IDS_TPLATFORM_OPT_LOCATION_T_LBS,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/location.enable,IDS_TPLATFORM_BODY_MANAGING_LOCATION_SETTINGS_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CONTROL_YOUR_LOCATION_SERVICE_SETTINGS,IDS_TPLATFORM_OPT_LOCATION_T_LBS,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/mediastorage,IDS_TPLATFORM_HEADER_ACCESSING_MEDIA_FOLDERS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_FILES_IN_MEDIA_FOLDERS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/message.read,IDS_TPLATFORM_BODY_READING_TEXT_AND_MULTIMEDIA_MESSAGES_AND_RELATED_INFORMATION_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_TEXT_AND_MULTIMEDIA_MESSAGES_AND_ANY_INFORMATION_RELATED_TO_THEM,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/message.write,IDS_TPLATFORM_BODY_SENDING_TEXT_AND_MULTIMEDIA_MESSAGES_AND_UPDATING_THEIR_STATUSES_M_NOUN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_WRITE_SEND_DELETE_AND_MOVE_TEXT_AND_MULTIMEDIA_MESSAGES_AND_CHANGE_THE_SETTINGS_AND_STATUSES_OF_MESSAGES_MSG,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/network.get,IDS_TPLATFORM_HEADER_READING_NETWORK_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RETRIEVE_NETWORK_INFORMATION_SUCH_AS_THE_STATUS_OF_EACH_NETWORK_ITS_TYPE_AND_DETAILED_NETWORK_PROFILE_INFORMATION,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/network.profile,IDS_TPLATFORM_HEADER_MANAGING_NETWORK_PROFILES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ADD_REMOVE_AND_EDIT_NETWORK_PROFILES,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/network.set,IDS_TPLATFORM_HEADER_MANAGING_NETWORK_CONNECTIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_TURN_WI_FI_AND_ON_AND_OFF_AND_CONNECT_TO_AND_DISCONNECT_FROM_WI_FI_AND_MOBILE_NETWORKS,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
+mobile,core,public,2.3,9.9,yes,http://tizen.org/privilege/nfc,IDS_TPLATFORM_HEADER_USING_BASIC_NFC_SERVICES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_NFC_TAG_INFORMATION_AND_SEND_NFC_MESSAGES_TO_OTHER_DEVICES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+mobile,core,platform,2.3,9.9,yes,http://tizen.org/privilege/nfc.admin,IDS_TPLATFORM_BODY_MANAGING_NFC_GENERAL_SETTINGS,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_CHANGE_NFC_SETTINGS_SUCH_AS_TURNING_NFC_ON_OR_OFF,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+mobile,core,public,2.3,9.9,yes,http://tizen.org/privilege/nfc.cardemulation,IDS_TPLATFORM_HEADER_USING_NFC_CARD_EMULATION_MODE,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ACCESS_SMART_CARD_DETAILS_SUCH_AS_CREDIT_CARD_DETAILS_AND_ALLOW_USERS_TO_MAKE_PAYMENTS_VIA_NFC,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/notification,IDS_TPLATFORM_BODY_PROVIDING_NOTIFICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SHOW_AND_HIDE_ITS_OWN_NOTIFICATIONS_AND_BADGES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/packagemanager.admin,IDS_TPLATFORM_HEADER_INSTALLING_UNINSTALLING_APPLICATION_PACKAGES_AND_CLEARING_CACHES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_INSTALL_AND_UNINSTALL_APPLICATION_PACKAGES_AND_CLEAR_APPLICATIONS_CACHES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/packagemanager.info,IDS_TPLATFORM_HEADER_RETRIEVING_DETAILED_PACKAGE_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RETRIEVE_DETAILED_APPLICATION_PACKAGE_INFORMATION,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/power,IDS_TPLATFORM_BODY_MANAGING_POWER,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_CONTROL_POWER_RELATED_SETTINGS_SUCH_AS_DIMMING_THE_SCREEN,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+mobile,core,public,2.3,9.9,yes,http://tizen.org/privilege/push,IDS_TPLATFORM_BODY_RECEIVING_PUSH_NOTIFICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RECEIVE_NOTIFICATIONS_VIA_THE_INTERNET,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/recorder,IDS_TPLATFORM_HEADER_RECORDING_VIDEO_AND_AUDIO,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RECORD_VIDEO_AND_AUDIO,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/screenshot,IDS_TPLATFORM_HEADER_CAPTURING_DEVICE_SCREEN,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CAPTURE_SCREENSHOTS,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/shortcut,IDS_TPLATFORM_HEADER_MANAGING_SHORTCUTS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_CREATE_AND_DELETE_SHORTCUTS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/systemsettings,IDS_TPLATFORM_HEADER_MANAGING_UNRESTRICTED_SYSTEM_SETTINGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_UNRESTRICTED_SYSTEM_SETTINGS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/systemsettings.admin,IDS_TPLATFORM_HEADER_MANAGING_ALL_SYSTEM_SETTINGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_AND_WRITE_ALL_SYSTEM_SETTINGS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/telephony,IDS_TPLATFORM_BODY_ACCESSING_TELEPHONY_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RETRIEVE_TELEPHONY_INFORMATION_SUCH_AS_THE_NETWORK_AND_SIM_CARD_USED_THE_IMEI_AND_THE_STATUSES_OF_CALLS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/telephony.admin,IDS_TPLATFORM_HEADER_MANAGING_TELEPHONY_SETTINGS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_TELEPHONY_SETTINGS_SUCH_AS_THOSE_FOR_INCOMING_AND_OUTGOING_CALLS_FORWARDING_AND_HOLDING_CALLS_NETWORKS_AND_SIM_CARDS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/tethering.admin,IDS_TPLATFORM_HEADER_ACCESSING_TETHERING_SERVICES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ENABLE_AND_DISABLE_TETHERING_SERVICES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/volume.set,IDS_TPLATFORM_HEADER_ADJUSTING_VOLUME,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ADJUST_THE_VOLUME_FOR_DIFFERENT_FEATURES_SUCH_AS_NOTIFICATION_ALERTS_RINGTONES_AND_MEDIA,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,core,platform,2.3,9.9,yes,http://tizen.org/privilege/web-history.admin,IDS_TPLATFORM_HEADER_MANAGING_INTERNET_HISTORY,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_MANAGE_YOUR_INTERNET_HISTORY,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/wifidirect,IDS_TPLATFORM_HEADER_MANAGING_WI_FI_DIRECT_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ENABLE_AND_DISABLE_WI_FI_DIRECT_MANAGE_WI_FI_DIRECT_CONNECTIONS_AND_CHANGE_WI_FI_DIRECT_SETTINGS,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+common,core,public,2.3,9.9,yes,http://tizen.org/privilege/window.priority.set,IDS_TPLATFORM_HEADER_DISPLAYING_WINDOWS_ON_TOP_OF_OTHER_APPLICATIONS_AND_SCREENS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_APPEAR_ON_TOP_OF_OTHER_WINDOWS_AND_SCREENS_MSG,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
mobile,wrt,public,2.1,9.9,yes,http://tizen.org/privilege/fullscreen,IDS_TPLATFORM_HEADER_USING_FULL_SCREEN_VIEW,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_USE_FULL_SCREEN_VIEW,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
common,wrt,public,1,1,yes,http://tizen.org/privilege/geocoder,,,IDS_TPLATFORM_OPT_LOCATION_T_LBS,http://tizen.org/privilege/location
common,wrt,public,2.3,9.9,yes,http://tizen.org/privilege/healthinfo,IDS_TPLATFORM_HEADER_READING_HEALTH_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_HEALTH_INFORMATION_GATHERED_BY_THE_DEVICE_SENSORS_SUCH_AS_THE_PEDOMETER_AND_THE_HEART_RATE_MONITOR,IDS_TPLATFORM_BODY_PERSONAL_INFORMATION_ABB,
-wearable,wrt,public,2.2,9.9,yes,http://tizen.org/privilege/internet,IDS_TPLATFORM_BODY_ACCESSING_INTERNET,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ACCESS_THE_INTERNET_THIS_MAY_RESULT_IN_ADDITIONAL_CHARGES_DEPENDING_ON_YOUR_PAYMENT_PLAN,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
-mobile,wrt,public,2.3,9.9,yes,http://tizen.org/privilege/internet,IDS_TPLATFORM_BODY_ACCESSING_INTERNET,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ACCESS_THE_INTERNET_THIS_MAY_RESULT_IN_ADDITIONAL_CHARGES_DEPENDING_ON_YOUR_PAYMENT_PLAN,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
+common,wrt,public,2.3,9.9,yes,http://tizen.org/privilege/internet,IDS_TPLATFORM_BODY_ACCESSING_INTERNET,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ACCESS_THE_INTERNET_THIS_MAY_RESULT_IN_ADDITIONAL_CHARGES_DEPENDING_ON_YOUR_PAYMENT_PLAN,IDS_TPLATFORM_BODY_NETWORK_CONNECTIONS_ABB,
common,wrt,public,1,1,yes,http://tizen.org/privilege/lbs,,,IDS_TPLATFORM_OPT_LOCATION_T_LBS,http://tizen.org/privilege/location
common,wrt,public,2.1,9.9,yes,http://tizen.org/privilege/location,IDS_TPLATFORM_BODY_USING_USER_LOCATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_USE_YOUR_LOCATION_DATA,IDS_TPLATFORM_OPT_LOCATION_T_LBS,
common,wrt,public,1,2.3,no,http://tizen.org/privilege/log,,,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
mobile,wrt,public,1,9.9,yes,http://tizen.org/privilege/messaging.write,IDS_TPLATFORM_BODY_WRITING_MESSAGES,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_WRITE_TEXT_MESSAGES_MULTIMEDIA_MESSAGES_AND_EMAILS,IDS_TPLATFORM_BODY_PAID_SERVICES_ABB,
mobile,wrt,partner,2.1,9.9,yes,http://tizen.org/privilege/networkbearerselection,IDS_TPLATFORM_BODY_SELECTING_NETWORK_CONNECTION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_RESTRICT_THE_DEVICE_SO_SOME_SPECIFIC_DOMAINS_CAN_ONLY_BE_ACCESSED_VIA_MOBILE_NETWORKS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
common,wrt,public,1,1,yes,http://tizen.org/privilege/nfc,,,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,http://tizen.org/privilege/nfc.admin&http://tizen.org/privilege/nfc.cardemulation&http://tizen.org/privilege/nfc.common&http://tizen.org/privilege/nfc.p2p&http://tizen.org/privilege/nfc.tag
-common,wrt,public,2,9.9,yes,http://tizen.org/privilege/nfc.admin,IDS_TPLATFORM_BODY_MANAGING_NFC_GENERAL_SETTINGS,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_CHANGE_NFC_SETTINGS_SUCH_AS_TURNING_NFC_ON_OR_OFF,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
-common,wrt,public,2.3,9.9,yes,http://tizen.org/privilege/nfc.cardemulation,IDS_TPLATFORM_HEADER_USING_NFC_CARD_EMULATION_MODE,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ACCESS_SMART_CARD_DETAILS_SUCH_AS_CREDIT_CARD_DETAILS_AND_ALLOW_USERS_TO_MAKE_PAYMENTS_VIA_NFC,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
-common,wrt,public,2,9.9,yes,http://tizen.org/privilege/nfc.common,IDS_TPLATFORM_BODY_USING_NFC_COMMON_FEATURES,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_USE_NFC_COMMON_FEATURES,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
-common,wrt,public,1,9.9,yes,http://tizen.org/privilege/nfc.p2p,IDS_TPLATFORM_BODY_PUSHING_NFC_MESSAGES,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_PUSH_NFC_MESSAGES_TO_OTHER_DEVICES,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
-common,wrt,public,1,9.9,yes,http://tizen.org/privilege/nfc.tag,IDS_TPLATFORM_BODY_READING_WRITING_TO_NFC_TAGS,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_READ_AND_WRITE_NFC_TAG_INFORMATION,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+mobile,wrt,public,2,9.9,yes,http://tizen.org/privilege/nfc.admin,IDS_TPLATFORM_BODY_MANAGING_NFC_GENERAL_SETTINGS,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_CHANGE_NFC_SETTINGS_SUCH_AS_TURNING_NFC_ON_OR_OFF,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+mobile,wrt,public,2.3,9.9,yes,http://tizen.org/privilege/nfc.cardemulation,IDS_TPLATFORM_HEADER_USING_NFC_CARD_EMULATION_MODE,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_ACCESS_SMART_CARD_DETAILS_SUCH_AS_CREDIT_CARD_DETAILS_AND_ALLOW_USERS_TO_MAKE_PAYMENTS_VIA_NFC,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+mobile,wrt,public,2,9.9,yes,http://tizen.org/privilege/nfc.common,IDS_TPLATFORM_BODY_USING_NFC_COMMON_FEATURES,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_USE_NFC_COMMON_FEATURES,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+mobile,wrt,public,1,9.9,yes,http://tizen.org/privilege/nfc.p2p,IDS_TPLATFORM_BODY_PUSHING_NFC_MESSAGES,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_PUSH_NFC_MESSAGES_TO_OTHER_DEVICES,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
+mobile,wrt,public,1,9.9,yes,http://tizen.org/privilege/nfc.tag,IDS_TPLATFORM_BODY_READING_WRITING_TO_NFC_TAGS,IDS_TPLATFORM_SBODY_THIS_APPLICATION_CAN_READ_AND_WRITE_NFC_TAG_INFORMATION,IDS_TPLATFORM_BODY_HARDWARE_CONTROLS_ABB,
common,wrt,public,2.1,9.9,yes,http://tizen.org/privilege/notification,IDS_TPLATFORM_BODY_PROVIDING_NOTIFICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_SHOW_AND_HIDE_ITS_OWN_NOTIFICATIONS_AND_BADGES,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
mobile,wrt,public,2,2,yes,http://tizen.org/privilege/notification.read,IDS_TPLATFORM_HEADER_RETRIEVING_NOTIFICATION_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_INFORMATION_ABOUT_NOTIFICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,http://tizen.org/privilege/notification
mobile,wrt,public,2,2,yes,http://tizen.org/privilege/notification.write,IDS_TPLATFORM_HEADER_MANAGING_NOTIFICATIONS,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_DISPLAY_EDIT_AND_DELETE_NOTIFICATIONS,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,http://tizen.org/privilege/notification
common,wrt,public,1,2.3,no,http://tizen.org/privilege/settingmanager.write,,,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,http://tizen.org/privilege/setting
common,wrt,public,2.1,9.9,yes,http://tizen.org/privilege/system,IDS_TPLATFORM_BODY_READING_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
mobile,wrt,public,1,2,yes,http://tizen.org/privilege/systeminfo,IDS_TPLATFORM_BODY_READING_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,http://tizen.org/privilege/system&http://tizen.org/privilege/systemmanager
-common,wrt,partner,2.1,9.9,yes,http://tizen.org/privilege/systemmanager,IDS_TPLATFORM_BODY_READING_SECURE_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_SECURE_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,
+common,wrt,partner,2.1,9.9,yes,http://tizen.org/privilege/systemmanager,IDS_TPLATFORM_BODY_READING_SECURE_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_SECURE_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,http://tizen.org/privilege/telephony
mobile,wrt,public,1,2.3,no,http://tizen.org/privilege/systemmanager.info,IDS_TPLATFORM_BODY_READING_SECURE_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_THIS_APPLICATION_CAN_READ_SECURE_SYSTEM_INFORMATION,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,http://tizen.org/privilege/system&http://tizen.org/privilege/systemmanager
common,wrt,public,1,2.3,no,http://tizen.org/privilege/systemsetting.read,,,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,http://tizen.org/privilege/setting
common,wrt,public,1,2.3,no,http://tizen.org/privilege/systemsetting.write,,,IDS_TPLATFORM_BODY_SYSTEM_SETTINGS_ABB,http://tizen.org/privilege/setting
typedef enum
{
- PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_COMMON = 0,
- PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_MOBILE = 1,
- PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_WEARABLE = 2
+ PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON = 0,
+ PRIVILEGE_DB_MANAGER_PROFILE_TYPE_MOBILE = 1,
+ PRIVILEGE_DB_MANAGER_PROFILE_TYPE_WEARABLE = 2,
+ PRIVILEGE_DB_MANAGER_PROFILE_TYPE_TV = 3
} privilege_db_manager_profile_type_e;
#ifdef PROFILE_TYPE_MOBILE
- static privilege_db_manager_profile_type_e g_privilege_db_manager_profile_type = PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_MOBILE;
+ static privilege_db_manager_profile_type_e g_privilege_db_manager_profile_type = PRIVILEGE_DB_MANAGER_PROFILE_TYPE_MOBILE;
#elif PROFILE_TYPE_WEARABLE
- static privilege_db_manager_profile_type_e g_privilege_db_manager_profile_type = PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_WEARABLE;
+ static privilege_db_manager_profile_type_e g_privilege_db_manager_profile_type = PRIVILEGE_DB_MANAGER_PROFILE_TYPE_WEARABLE;
+#elif PROFILE_TYPE_TV
+ static privilege_db_manager_profile_type_e g_privilege_db_manager_profile_type = PRIVILEGE_DB_MANAGER_PROFILE_TYPE_TV;
#else
- static privilege_db_manager_profile_type_e g_privilege_db_manager_profile_type = PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_COMMON;
+ static privilege_db_manager_profile_type_e g_privilege_db_manager_profile_type = PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON;
#endif
#define TryReturn(condition, returnValue, ...) \
{
char* db_path = NULL;
- if(package_type == PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_CORE){
+ if(package_type == PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE){
db_path = PRIVILEGE_INFO_CORE_DB_PATH;
}else{
db_path = PRIVILEGE_INFO_WRT_DB_PATH;
{
LOGE("[DB_FAIL] Can't open database %s : %s", db_path, sqlite3_errmsg(*db));
sqlite3_close(*db);
- return PRIVILIEGE_DB_MANAGER_ERR_CONNECTION_FAIL;
+ return PRIVILEGE_DB_MANAGER_ERR_CONNECTION_FAIL;
}
- return PRIVILIEGE_DB_MANAGER_ERR_NONE;
+ return PRIVILEGE_DB_MANAGER_ERR_NONE;
}
void __finalize_db(sqlite3* db, sqlite3_stmt* stmt)
{
sqlite3_close(db);
}
-int privilege_db_manager_get_privilege_list(GList** privilege_list)
+int privilege_db_manager_get_privilege_list(const char* api_version, privilege_db_manager_package_type_e package_type, GList** privilege_list)
{
sqlite3* db = NULL;
sqlite3_stmt* stmt = NULL;
int ret;
- ret = __initialize_db(&db, PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_CORE);
- if(ret != PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ ret = __initialize_db(&db, package_type);
+ if(ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
return ret;
GList* temp_privilege_list = NULL;
- char* sql = sqlite3_mprintf("select privilege_name, privilege_level_id from privilege_info where profile_id=%d or profile_id=%d", PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type);
+ char* sql = sqlite3_mprintf("select privilege_name, privilege_level_id, changed_to, api_version_issued, api_version_expired from privilege_info where (profile_id=%d or profile_id=%d) and package_type_id=%d", PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, package_type);
ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
if(ret != SQLITE_OK)
{
LOGE("[DB_FAIL] fail to prepare database : %s", sqlite3_errmsg(db));
sqlite3_close(db);
- return PRIVILIEGE_DB_MANAGER_ERR_INVALID_QUERY;
+ return PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY;
}
do{
privilege_info_db_row->privilege_display = NULL;
privilege_info_db_row->privilege_description = NULL;
privilege_info_db_row->privilege_level = NULL;
- privilege_info_db_row->version = NULL;
+ privilege_info_db_row->issued_version = NULL;
+ privilege_info_db_row->expired_version = NULL;
privilege_info_db_row->package_type = NULL;
+ privilege_info_db_row->changed_to = NULL;
privilege_info_db_row->profile_id = 0;
privilege_info_db_row->package_type_id = 0;
privilege_info_db_row->privilege_level_id = 0;
privilege_info_db_row->privilege_name = strdup((char*)sqlite3_column_text(stmt,0));
if(privilege_info_db_row->privilege_name == NULL)
{
- LOGE("[PRIVILIEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_name's strdup is failed.");
+ LOGE("[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_name's strdup is failed.");
free(privilege_info_db_row);
- return PRIVILIEGE_DB_MANAGER_ERR_OUT_OF_MEMORY;
+ return PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY;
}
privilege_info_db_row->privilege_level_id = sqlite3_column_int(stmt,1);
+ privilege_info_db_row->changed_to = strdup((char*)sqlite3_column_text(stmt,2));
+ if(privilege_info_db_row->changed_to == NULL)
+ {
+ LOGE("[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] changed_to's strdup is failed.");
+ free(privilege_info_db_row);
+ return PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY;
+ }
+ privilege_info_db_row->issued_version = strdup((char*)sqlite3_column_text(stmt,3));
+ if(privilege_info_db_row->issued_version == NULL)
+ {
+ LOGE("[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] api_version_issued's strdup is failed.");
+ free(privilege_info_db_row);
+ return PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY;
+ }
+ privilege_info_db_row->expired_version = strdup((char*)sqlite3_column_text(stmt,4));
+ if(privilege_info_db_row->expired_version == NULL)
+ {
+ LOGE("[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] api_version_expired's strdup is failed.");
+ free(privilege_info_db_row);
+ return PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY;
+ }
temp_privilege_list = g_list_append(temp_privilege_list, privilege_info_db_row);
}
}while (ret == SQLITE_ROW);
__finalize_db(db, stmt);
- return PRIVILIEGE_DB_MANAGER_ERR_NONE;
+ return PRIVILEGE_DB_MANAGER_ERR_NONE;
}
int privilege_db_manager_get_privilege_display(privilege_db_manager_package_type_e package_type, const char* privilege_name, const char* api_version, char** privilege_display)
sqlite3_stmt* stmt = NULL;
int ret;
ret = __initialize_db(&db, package_type);
- if(ret != PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ if(ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
return ret;
char* sql = sqlite3_mprintf("select privilege_display from privilege_info where (profile_id=%d or profile_id=%d) and package_type_id=%d and privilege_name=%Q and api_version_issued<=%Q and api_version_expired>=%Q",
- PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, package_type, privilege_name, api_version, api_version);
+ PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, package_type, privilege_name, api_version, api_version);
ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
if(ret != SQLITE_OK)
{
LOGE("[DB_FAIL] fail to prepare database : %s", sqlite3_errmsg(db));
sqlite3_close(db);
- return PRIVILIEGE_DB_MANAGER_ERR_INVALID_QUERY;
+ return PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY;
}
ret = sqlite3_step(stmt);
LOGD("privilege_display = %s", (char*)sqlite3_column_text(stmt,0));
*privilege_display = strdup((char*)sqlite3_column_text(stmt,0));
- TryReturn(*privilege_display != NULL, PRIVILIEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILIEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_name's strdup is failed.");
+ TryReturn(*privilege_display != NULL, PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_name's strdup is failed.");
__finalize_db(db, stmt);
- return PRIVILIEGE_DB_MANAGER_ERR_NONE;
+ return PRIVILEGE_DB_MANAGER_ERR_NONE;
}
__finalize_db(db, stmt);
- return PRIVILIEGE_DB_NO_EXIST_RESULT;
+ return PRIVILEGE_DB_NO_EXIST_RESULT;
}
int privilege_db_manager_get_privilege_description(privilege_db_manager_package_type_e package_type, const char* privilege_name, const char* api_version, char** privilege_description)
sqlite3_stmt* stmt = NULL;
int ret;
ret = __initialize_db(&db, package_type);
- if(ret != PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ if(ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
return ret;
char* sql = sqlite3_mprintf("select privilege_description from privilege_info where (profile_id=%d or profile_id=%d) and package_type_id=%d and privilege_name=%Q and api_version_issued<=%Q and api_version_expired>=%Q",
- PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, package_type, privilege_name, api_version, api_version);
+ PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, package_type, privilege_name, api_version, api_version);
ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
if(ret != SQLITE_OK)
{
LOGE("[DB_FAIL] fail to prepare database : %s", sqlite3_errmsg(db));
sqlite3_close(db);
- return PRIVILIEGE_DB_MANAGER_ERR_INVALID_QUERY;
+ return PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY;
}
ret = sqlite3_step(stmt);
LOGD("privilege_description = %s", (char*)sqlite3_column_text(stmt,0));
*privilege_description = strdup((char*)sqlite3_column_text(stmt,0));
- TryReturn(*privilege_description != NULL, PRIVILIEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILIEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_name's strdup is failed.");
+ TryReturn(*privilege_description != NULL, PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_name's strdup is failed.");
__finalize_db(db, stmt);
- return PRIVILIEGE_DB_MANAGER_ERR_NONE;
+ return PRIVILEGE_DB_MANAGER_ERR_NONE;
}
__finalize_db(db, stmt);
- return PRIVILIEGE_DB_NO_EXIST_RESULT;
+ return PRIVILEGE_DB_NO_EXIST_RESULT;
}
int privilege_db_manager_get_privilege_group_display(privilege_db_manager_package_type_e package_type, const char* privilege_name, const char* api_version, int* privilege_group_number)
sqlite3_stmt* stmt = NULL;
int ret;
ret = __initialize_db(&db, package_type);
- if(ret != PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ if(ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
return ret;
char* sql = sqlite3_mprintf("select privilege_group_id from privilege_info where (profile_id=%d or profile_id=%d) and package_type_id=%d and privilege_name=%Q and api_version_issued<=%Q and api_version_expired>=%Q",
- PRIVILIEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, package_type, privilege_name, api_version, api_version);
+ PRIVILEGE_DB_MANAGER_PROFILE_TYPE_COMMON, g_privilege_db_manager_profile_type, package_type, privilege_name, api_version, api_version);
ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
if(ret != SQLITE_OK)
{
LOGE("[DB_FAIL] fail to prepare database : %s", sqlite3_errmsg(db));
sqlite3_close(db);
- return PRIVILIEGE_DB_MANAGER_ERR_INVALID_QUERY;
+ return PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY;
}
ret = sqlite3_step(stmt);
LOGD("privilege_group_number = %d", *privilege_group_number);
__finalize_db(db, stmt);
- return PRIVILIEGE_DB_MANAGER_ERR_NONE;
+ return PRIVILEGE_DB_MANAGER_ERR_NONE;
}
__finalize_db(db, stmt);
- return PRIVILIEGE_DB_NO_EXIST_RESULT;
+ return PRIVILEGE_DB_NO_EXIST_RESULT;
}
#include "privilege_db_manager.h"
#include "privilege_info.h"
#include "privilege_info_types.h"
+#include "privilege_manager.h"
#ifdef LOG_TAG
#undef LOG_TAG
int group_id = 6;
//Native
- int ret = privilege_db_manager_get_privilege_group_display(PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege_name, "2.3", &group_id);
- if(ret == PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ int ret = privilege_db_manager_get_privilege_group_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege_name, "2.3", &group_id);
+ if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
{
LOGD("group_id = %d", group_id);
groupTable[group_id] = 1;
return PRVMGR_ERR_NONE;
}
- else if(ret != PRIVILIEGE_DB_NO_EXIST_RESULT)
+ else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
{
return PRVMGR_ERR_INTERNAL_ERROR;
}
//Web
- ret = privilege_db_manager_get_privilege_group_display(PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege_name, "2.3", &group_id);
- if(ret == PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ ret = privilege_db_manager_get_privilege_group_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege_name, "2.3", &group_id);
+ if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
{
LOGD("group_id = %d", group_id);
groupTable[group_id] = 1;
return PRVMGR_ERR_NONE;
}
- else if(ret != PRIVILIEGE_DB_NO_EXIST_RESULT)
+ else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
{
return PRVMGR_ERR_INTERNAL_ERROR;
}
TryReturn(user_data != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] user_data is NULL");
//Native
- int ret = privilege_db_manager_get_privilege_group_display(PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege_name, "2.3", &group_id);
- if(ret == PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ int ret = privilege_db_manager_get_privilege_group_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege_name, "2.3", &group_id);
+ if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
{
if(group_id == data.privilege_group){
LOGD("data.privilege_group = %d", data.privilege_group);
return PRVMGR_ERR_NONE;
}
}
- else if(ret != PRIVILIEGE_DB_NO_EXIST_RESULT)
+ else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
{
return PRVMGR_ERR_INTERNAL_ERROR;
}
//Web
- ret = privilege_db_manager_get_privilege_group_display(PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege_name, "2.3", &group_id);
- if(ret == PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ ret = privilege_db_manager_get_privilege_group_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege_name, "2.3", &group_id);
+ if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
{
if(group_id == data.privilege_group){
LOGD("data.privilege_group = %d", data.privilege_group);
return PRVMGR_ERR_NONE;
}
}
- else if(ret != PRIVILIEGE_DB_NO_EXIST_RESULT)
+ else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
{
return PRVMGR_ERR_INTERNAL_ERROR;
}
char* temp = NULL;
// Check Native
- int ret = privilege_db_manager_get_privilege_display(PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege, "2.3", &temp);
+ int ret = privilege_db_manager_get_privilege_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege, "2.3", &temp);
LOGD("privilege = %s, string id = %s", privilege, temp);
- if(ret == PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
{
if(temp == NULL)
{
return PRVMGR_ERR_NONE;
}
}
- else if(ret != PRIVILIEGE_DB_NO_EXIST_RESULT)
+ else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
{
free(temp);
return PRVMGR_ERR_INTERNAL_ERROR;
}
// Check WRT
- ret = privilege_db_manager_get_privilege_display(PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege, "2.3", &temp);
+ ret = privilege_db_manager_get_privilege_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege, "2.3", &temp);
- if(ret == PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
{
if(temp == NULL)
{
return PRVMGR_ERR_NONE;
}
}
- else if(ret == PRIVILIEGE_DB_NO_EXIST_RESULT)
+ else if(ret == PRIVILEGE_DB_NO_EXIST_RESULT)
{
*name_string_id = NULL;
free(temp);
char* temp = NULL;
// Check Native
- int ret = privilege_db_manager_get_privilege_description(PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege, "2.3", &temp);
+ int ret = privilege_db_manager_get_privilege_description(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege, "2.3", &temp);
- if(ret == PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
{
if(temp == NULL)
{
return PRVMGR_ERR_NONE;
}
}
- else if(ret != PRIVILIEGE_DB_NO_EXIST_RESULT)
+ else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
{
free(temp);
return PRVMGR_ERR_INTERNAL_ERROR;
}
// Check Web
- ret = privilege_db_manager_get_privilege_description(PRIVILIEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege, "2.3", &temp);
+ ret = privilege_db_manager_get_privilege_description(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege, "2.3", &temp);
- if(ret == PRIVILIEGE_DB_MANAGER_ERR_NONE)
+ if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
{
if(temp == NULL)
{
return PRVMGR_ERR_NONE;
}
}
- else if(ret == PRIVILIEGE_DB_NO_EXIST_RESULT)
+ else if(ret == PRIVILEGE_DB_NO_EXIST_RESULT)
{
*description_string_id = NULL;
free(temp);
return PRVMGR_ERR_NONE;
}
-static void __free_privilege_list(GList* privilege_list)
-{
- GList* l = NULL;
- for (l = privilege_list; l != NULL; l = l->next)
- {
- privilege_info_db_row_s* privilege_info_db_row = (privilege_info_db_row_s*)l->data;
- if(privilege_info_db_row->privilege_name != NULL)
- free(privilege_info_db_row->privilege_name);
- }
-}
-
-
-static int __privilege_manager_core_privilege_level(const char* privilege, int* privilege_level)
-{
- TryReturn(privilege != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege is NULL");
-
- int ret;
- GList* privilege_list;
- ret = privilege_db_manager_get_privilege_list(&privilege_list);
- if(ret != PRIVILIEGE_DB_MANAGER_ERR_NONE){
- LOGE("[FAIL TO CALL FUNCTION] privilege_db_manager_get_privilege_list()");
- return PRVMGR_ERR_INTERNAL_ERROR;
- }
- GList* l = NULL;
- for (l = privilege_list; l != NULL; l = l->next)
- {
- privilege_info_db_row_s* privilege_info_db_row = (privilege_info_db_row_s*)l->data;
- if (strcmp(privilege_info_db_row->privilege_name, privilege) == 0)
- {
- *privilege_level = privilege_info_db_row->privilege_level_id;
- __free_privilege_list(privilege_list);
- return PRVMGR_ERR_NONE;
- }
- }
- __free_privilege_list(privilege_list);
-
- return PRVMGR_ERR_NO_EXIST_PRIVILEGE;
-}
-
-int privilege_manager_verify_privilege_list(privilege_manager_package_type_e package_type, GList* privilege_list, privilege_manager_visibility_e visibility, char** error_privilege_name)
-{
- LOGD("privilege_info_compare_privilege_level called");
- GList *l;
- int ret;
- int i = 0;
- *error_privilege_name = NULL;
-
- TryReturn(privilege_list != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege_list is NULL");
-
- for (l = privilege_list; l != NULL; l = l->next)
- {
- int privilege_level_id;
- char* privilege_name = (char*)l->data;
-
- TryReturn(privilege_name != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege_list[%d] is NULL", i);
- i++;
-
- LOGD("Checking privilege : %s", privilege_name);
-
- ret = __privilege_manager_core_privilege_level(privilege_name, &privilege_level_id);
- if(ret == PRVMGR_ERR_NO_EXIST_PRIVILEGE)
- {
- LOGE("[PRVMGR_ERR_NO_EXIST_PRIVILEGE] There are no privilege %s in DB", privilege_name);
- *error_privilege_name = (char*)calloc(strlen(privilege_name) + 1, sizeof(char));
- TryReturn(*error_privilege_name != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
- memcpy(*error_privilege_name, privilege_name, strlen(privilege_name));
-
- return PRVMGR_ERR_NO_EXIST_PRIVILEGE;
- }
- else if(ret == PRVMGR_ERR_NONE)
- {
- if(visibility == PRVMGR_PACKAGE_VISIBILITY_PARTNER){
- if(privilege_level_id == PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM)
- {
- LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility and Privilege level are mismatched");
- LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility : partner, Privilege Level : %d", privilege_level_id);
- *error_privilege_name = (char*)calloc(strlen(privilege_name) + 1, sizeof(char));
- TryReturn(*error_privilege_name != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
- memcpy(*error_privilege_name, privilege_name, strlen(privilege_name));
-
- return PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL;
- }
- }
- else if(visibility == PRVMGR_PACKAGE_VISIBILITY_PUBLIC){
- if(privilege_level_id == PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PARTNER || privilege_level_id == PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM)
- {
- LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility and Privilege level are mismatched");
- LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility : public, Privilege Level : %d", privilege_level_id);
- *error_privilege_name = (char*)calloc(strlen(privilege_name) + 1, sizeof(char));
- TryReturn(*error_privilege_name != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
- memcpy(*error_privilege_name, privilege_name, strlen(privilege_name));
-
- return PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL;
- }
- }
- }
- else
- {
- return ret;
- }
- }
-
- return PRVMGR_ERR_NONE;
-}
-
#include <dlog.h>
#include <stdlib.h>
+#include <stdio.h>
#include "privilege_db_manager.h"
#include "privilege_manager.h"
-
+#define MESSAGE_SIZE 512
+#define MESSAGE_LIST_SIZE 10000
#ifdef LOG_TAG
#undef LOG_TAG
return returnValue; \
} \
else {;}
+/*
+#ifdef CURRENT_TIZEN_VERSION
+ static char* privilege_manager_current_tizen_version = (char*)CURRENT_TIZEN_VERSION;
+#else
+ static char* privilege_manager_current_tizen_version = "2.4"
+#endif
+*/
+
static void __free_privilege_list(GList* privilege_list)
{
}
}
-static int __privilege_manager_check_privilege_list(const char* privilege, int* privilege_level)
+
+static int __privilege_manager_check_privilege_list(const char* api_version, const char* privilege, GList* vaild_privilege_list, int* privilege_level, char** changed_to, char** valid_api_version)
{
TryReturn(privilege != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege is NULL");
-
- int ret;
- GList* privilege_list;
- ret = privilege_db_manager_get_privilege_list(&privilege_list);
- if(ret != PRIVILIEGE_DB_MANAGER_ERR_NONE){
- LOGE("[FAIL TO CALL FUNCTION] privilege_db_manager_get_privilege_list()");
- return PRVMGR_ERR_INTERNAL_ERROR;
- }
-
+ int i, is_valid_version = 0;
GList* l = NULL;
- for (l = privilege_list; l != NULL; l = l->next)
+ for (l = vaild_privilege_list; l != NULL; l = l->next)
{
privilege_info_db_row_s* privilege_info_db_row = (privilege_info_db_row_s*)l->data;
if (strcmp(privilege_info_db_row->privilege_name, privilege) == 0)
{
- *privilege_level = privilege_info_db_row->privilege_level_id;
- __free_privilege_list(privilege_list);
- return PRVMGR_ERR_NONE;
+ LOGD("Matched privilege name exist");
+ LOGD("Check api version");
+ for(i=0; i<3; i++)
+ {
+ if( !(api_version[i] <= privilege_info_db_row->expired_version[i]) )
+ {
+ is_valid_version = 1;
+ }
+ else if ( !(api_version[i] >= privilege_info_db_row->issued_version[i]))
+ {
+ is_valid_version = 2;
+ }
+ }
+
+ if(is_valid_version > 0)
+ {
+ LOGD("%s is invalid in tizen version: %s", privilege_info_db_row->privilege_name, api_version);
+ }
+
+ if(is_valid_version == 0)
+ {
+ *privilege_level = privilege_info_db_row->privilege_level_id;
+ return PRVMGR_ERR_NONE;
+ }
+ else if(is_valid_version == 1)
+ {
+ LOGD("privilege deprecated version is lower than api version");
+ *valid_api_version = strdup(privilege_info_db_row->expired_version);
+ TryReturn(valid_api_version != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] valid_api_version's strdup is failed.");
+ if(privilege_info_db_row->changed_to != NULL && strcmp(privilege_info_db_row->changed_to, "") != 0 )
+ {
+ LOGE("%s was changed to %s", privilege, privilege_info_db_row->changed_to);
+
+ *changed_to = strdup(privilege_info_db_row->changed_to);
+ TryReturn(changed_to != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] changed_to's strdup is failed.");
+ }
+ return PRVMGR_ERR_DEPRECATED_PRIVILEGE;
+ }
+ else if(is_valid_version == 2)
+ {
+ LOGD("privilege issued version is higher than api version");
+ *valid_api_version = strdup(privilege_info_db_row->issued_version);
+ TryReturn(valid_api_version != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] valid_api_version's strdup is failed.");
+ return PRVMGR_ERR_NO_EXIST_PRIVILEGE;
+ }
}
}
- __free_privilege_list(privilege_list);
return PRVMGR_ERR_NO_EXIST_PRIVILEGE;
}
+const char* __get_privilege_level_string(privilege_db_manager_privilege_level_e privilege_db_manager_privilege_level)
+{
+ if(privilege_db_manager_privilege_level == PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PUBLIC){
+ return "public";
+ }else if(privilege_db_manager_privilege_level == PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PARTNER){
+ return "partner";
+ }else if(privilege_db_manager_privilege_level == PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM){
+ return "platform";
+ }else{
+ return "not defined privilege";
+ }
+}
+
-int privilege_manager_verify_privilege_name(privilege_manager_package_type_e package_type, GList* privilege_list, GList **error_privilege_name_list)
+int privilege_manager_verify_privilege(const char* api_version, privilege_manager_package_type_e package_type, GList* privilege_list, privilege_manager_visibility_e visibility, char **error_message)
{
- LOGD("privilege_manager_verify_privilege_name called");
+ LOGD("privilege_manager_verify_privilege called");
GList *l;
int ret;
int ret_val = PRVMGR_ERR_NONE;
- int i = 0;
- GList* temp_error_privilege_list = NULL;
+ char message_list[MESSAGE_LIST_SIZE] = {0,};
+ char message[MESSAGE_SIZE] = {0,};
+ char* changed_to = NULL;
+ char* valid_api_version = NULL;
+ GList* vaild_privilege_list;
+ char* wrt_active_version = "2.4";
+ int is_vaild_wrt_version;
+
+ //Check invaild parameters
+ if (api_version == NULL){
+ LOGE("[PRVMGR_ERR_INVALID_PARAMETER] api_version is NULL");
+ *error_message = strdup("[PRVMGR_ERR_INVALID_PARAMETER] api_version is NULL");
+ TryReturn(error_message != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed.");
+
+ return PRVMGR_ERR_INVALID_PARAMETER;
+ }else{
+ int i;
+ int is_vaild_version_type = 1;
+ int api_version_size = strlen(api_version);
+ if( api_version_size % 2 == 1 && (3 <= api_version_size && api_version_size <= 7) ){
+ for(i=0; i<api_version_size; i++){
+ if(i % 2 == 0){
+ if( !('0' <= api_version[i] && api_version[i] <= '9') ){
+ is_vaild_version_type = 0;
+ }
+ }else{
+ if(api_version[i] != '.'){
+ is_vaild_version_type = 0;
+ }
+ }
+ }
+ }else{
+ is_vaild_version_type = 0;
+ }
- TryReturn(privilege_list != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege_list is NULL");
+ if(is_vaild_version_type == 0){
+ LOGE("[PRVMGR_ERR_INVALID_PARAMETER] %s is in invaild form. api_version form should be X.X, X.X.X or X.X.X.X (X=integer)", api_version);
+ *error_message = strdup("[PRVMGR_ERR_INVALID_PARAMETER] api_version form should be a X.X, X.X.X or X.X.X.X (X=integer)");
+ TryReturn(error_message != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed");
+
+ return PRVMGR_ERR_INVALID_PARAMETER;
+ }
+ }
+
+ if(package_type != PRVMGR_PACKAGE_TYPE_WRT && package_type != PRVMGR_PACKAGE_TYPE_CORE){
+ LOGD("checking package type = %d", package_type);
+ LOGE("[PRVMGR_ERR_INVALID_PARAMETER] package_type is not a PRVMGR_PACKAGE_TYPE_WRT or PRVMGR_PACKAGE_TYPE_CORE");
+ *error_message = strdup("[PRVMGR_ERR_INVALID_PARAMETER] package_type is a unknown type. package_type must be a PRVMGR_PACKAGE_TYPE_WRT or PRVMGR_PACKAGE_TYPE_CORE");
+ TryReturn(error_message != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed.");
+
+ return PRVMGR_ERR_INVALID_PARAMETER;
+ }
+
+ if( (visibility & PRVMGR_PACKAGE_VISIBILITY_PUBLIC) != PRVMGR_PACKAGE_VISIBILITY_PUBLIC
+ && (visibility & PRVMGR_PACKAGE_VISIBILITY_PARTNER) != PRVMGR_PACKAGE_VISIBILITY_PARTNER
+ && (visibility & PRVMGR_PACKAGE_VISIBILITY_PLATFORM) != PRVMGR_PACKAGE_VISIBILITY_PLATFORM ){
+
+ LOGE("[PRVMGR_ERR_INVALID_PARAMETER] visibility don't include any public, partner, platform");
+ *error_message = strdup("[INVALID_PARAMETER] Signature Level is invalid. Signature Level must be a public, partner or platform");
+ TryReturn(error_message != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed.");
+
+ return PRVMGR_ERR_INVALID_PARAMETER;
+ }
+
+ is_vaild_wrt_version = 1;
+ int i=0;
+ if(package_type == PRVMGR_PACKAGE_TYPE_WRT){
+ for(i=0; i<3; i++){
+ if( ! (api_version[i] >= wrt_active_version[i]) ){
+ is_vaild_wrt_version = 0;
+ }
+ }
+ }
+
+ if(privilege_list == NULL){
+ LOGE("[PRVMGR_ERR_INVALID_PARAMETER] privilege_list is NULL");
+ *error_message = strdup("[PRVMGR_ERR_INVALID_PARAMETER] privilege_list is NULL");
+ TryReturn(error_message != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed.");
+
+ return PRVMGR_ERR_INVALID_PARAMETER;
+ }
+
+
+ //Get vaild privilege list
+ ret = privilege_db_manager_get_privilege_list(api_version, package_type, &vaild_privilege_list);
+ if(ret != PRIVILEGE_DB_MANAGER_ERR_NONE){
+ LOGE("[FAIL TO CALL FUNCTION] privilege_db_manager_get_privilege_list()");
+ *error_message = strdup("[PRVMGR_ERR_INTERNAL_ERROR] failed to get privilege list from DB");
+ return PRVMGR_ERR_INTERNAL_ERROR;
+ }
+
+ //Compare received privilege with valid privilege list
for (l = privilege_list; l != NULL; l = l->next)
{
- int privilege_level_id;
+ int privilege_level_id = PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PUBLIC;
char* privilege_name = (char*)l->data;
- if(privilege_name == NULL)
+ LOGD("Checking privilege = %s", privilege_name);
+ ret = __privilege_manager_check_privilege_list(api_version, privilege_name, vaild_privilege_list, &privilege_level_id, &changed_to, &valid_api_version);
+
+ if( is_vaild_wrt_version == 0 )
{
- g_list_free(temp_error_privilege_list);
- LOGE("[PRVMGR_ERR_INVALID_PARAMETER] privilege_list[%d] is NULL", i);
- return PRVMGR_ERR_INVALID_PARAMETER;
+ ret = PRVMGR_ERR_NONE;
}
- i++;
- LOGD("Checking privilege : %s", privilege_name);
-
- ret = __privilege_manager_check_privilege_list(privilege_name, &privilege_level_id);
if(ret == PRVMGR_ERR_NO_EXIST_PRIVILEGE)
{
- LOGE("[PRVMGR_ERR_NO_EXIST_PRIVILEGE] There are no privilege %s in DB", privilege_name);
+ LOGE("[PRVMGR_ERR_NO_EXIST_PRIVILEGE] There are no privilege %s in Tizen version %s", privilege_name, api_version);
- char* error_privilege_name = strdup(privilege_name);
- TryReturn(privilege_name != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_privilege_name's strdup is failed.");
+ memset(message, 0, MESSAGE_SIZE);
+ if(valid_api_version != NULL && strcmp(valid_api_version, "") != 0)
+ {
+ sprintf(message, "[NO_EXIST_PRIVILEGE]%s is issued at Tizen version %s\n", privilege_name, valid_api_version);
+ }
+ else
+ {
+ sprintf(message, "[NO_EXIST_PRIVILEGE]%s is an invalid privilege\n", privilege_name);
+ }
+
+ strcat(message_list, message);
+
+ ret_val = PRVMGR_ERR_INVALID_PRIVILEGE;
+
+ }else if(ret == PRVMGR_ERR_DEPRECATED_PRIVILEGE){
+
+ LOGE("[PRVMGR_ERR_DEPRECATED_PRIVILEGE]%s is deprecated before Tizen version %s", privilege_name, api_version);
+
+ memset(message, 0, MESSAGE_SIZE);
+ if(changed_to != NULL && strcmp(changed_to, "") != 0)
+ {
+ sprintf(message, "[DEPRECATED_PRIVILEGE]Use %s instead of %s\n", changed_to, privilege_name);
+ }
+ else
+ {
+ sprintf(message, "[DEPRECATED_PRIVIELGE]%s is deprecated after Tizen version %s\n", privilege_name, valid_api_version);
+ }
+ strcat(message_list, message);
+
+ ret_val = PRVMGR_ERR_INVALID_PRIVILEGE;
+
+ }else if(ret == PRVMGR_ERR_NONE){
+ LOGD("visibility = %d", visibility);
+ LOGD("privilege level = %d", privilege_level_id);
+
+ if((visibility & PRVMGR_PACKAGE_VISIBILITY_PUBLIC) == PRVMGR_PACKAGE_VISIBILITY_PUBLIC){
+ if(privilege_level_id == PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PARTNER || privilege_level_id == PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM)
+ {
+ LOGE("[PRVMGR_ERR_MISMATCHED_PRIVILEGE_LEVEL] Visibility and Privilege level are mismatched");
+ LOGE("[PRVMGR_ERR_MISMATCHED_PRIVILEGE_LEVEL] Visibility = public, Privilege Level = %s", __get_privilege_level_string(privilege_level_id));
+
+ memset(message, 0, MESSAGE_SIZE);
+ sprintf(message, "[MISMATCHED_PRIVILEGE_LEVEL]Signature Level is too low to use %s - Signature Level = public, Privilege Level = %s\n", privilege_name, __get_privilege_level_string(privilege_level_id));
+
+ strcat(message_list, message);
+
+ ret_val = PRVMGR_ERR_INVALID_PRIVILEGE;
+ }
+ }
+ else if((visibility & PRVMGR_PACKAGE_VISIBILITY_PARTNER) == PRVMGR_PACKAGE_VISIBILITY_PARTNER){
+ if(privilege_level_id == PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM)
+ {
+ LOGE("[PRVMGR_ERR_MISMATCHED_PRIVILEGE_LEVEL] Visibility and Privilege level are mismatched");
+ LOGE("[PRVMGR_ERR_MISMATCHED_PRIVILEGE_LEVEL] Visibility = partner, Privilege Level = %s", __get_privilege_level_string(privilege_level_id));
+
+ memset(message, 0, MESSAGE_SIZE);
+ sprintf(message, "[MISMATCHED_PRIVILEGE_LEVEL]Signature Level is too low to use %s - Signature Level = partner, Privilege Level = %s\n", privilege_name, __get_privilege_level_string(privilege_level_id));
+
+ strcat(message_list, message);
+
+ ret_val = PRVMGR_ERR_INVALID_PRIVILEGE;
+ }
+ }
+ }
+ else if(ret == PRVMGR_ERR_INVALID_PARAMETER)
+ {
+ LOGE("[PRVMGR_ERR_INVALID_PARAMETER] privilege_name is NULL");
+ *error_message = strdup("[INVALID_PARAMETER] Invaild parameter was passed.");
+ TryReturn(error_message != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed.");
- temp_error_privilege_list = g_list_append(temp_error_privilege_list, error_privilege_name);
- ret_val = PRVMGR_ERR_NO_EXIST_PRIVILEGE;
+ ret_val = PRVMGR_ERR_INVALID_PARAMETER;
+ goto FINISH;
}
- else if(ret == PRVMGR_ERR_INTERNAL_ERROR || ret == PRVMGR_ERR_INVALID_PARAMETER)
+ else if(ret == PRVMGR_ERR_INTERNAL_ERROR)
{
- return ret;
+ LOGE("[PRVMGR_ERR_INVALID_PARAMETER] Unknown Error occured.");
+ *error_message = strdup("[INTERNAL_ERROR] Unknown Error occured.");
+ TryReturn(error_message != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed.");
+
+ ret_val = PRVMGR_ERR_INTERNAL_ERROR;
+ goto FINISH;
}
}
- *error_privilege_name_list = temp_error_privilege_list;
+ if(ret_val != PRVMGR_ERR_NONE){
+ *error_message = strdup(message_list);
+ TryReturn(error_message != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_message's strdup is failed.");
+ }
+FINISH:
+ g_list_free(vaild_privilege_list);
return ret_val;
}
-const char* __get_privilege_level_string(privilege_db_manager_privilege_level_e privilege_db_manager_privilege_level)
+static int __privilege_manager_core_privilege_level(const char* privilege, int* privilege_level)
{
- if(privilege_db_manager_privilege_level == PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PUBLIC){
- return "public";
- }else if(privilege_db_manager_privilege_level == PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PARTNER){
- return "partner";
- }else if(privilege_db_manager_privilege_level == PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM){
- return "platform";
- }else{
- return "not defined privilege";
+ TryReturn(privilege != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege is NULL");
+
+ int ret;
+ GList* privilege_list;
+ ret = privilege_db_manager_get_privilege_list("2.4",PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, &privilege_list);
+ if(ret != PRIVILEGE_DB_MANAGER_ERR_NONE){
+ LOGE("[FAIL TO CALL FUNCTION] privilege_db_manager_get_privilege_list()");
+ return PRVMGR_ERR_INTERNAL_ERROR;
+ }
+
+ GList* l = NULL;
+ for (l = privilege_list; l != NULL; l = l->next)
+ {
+ privilege_info_db_row_s* privilege_info_db_row = (privilege_info_db_row_s*)l->data;
+ if (strcmp(privilege_info_db_row->privilege_name, privilege) == 0)
+ {
+ *privilege_level = privilege_info_db_row->privilege_level_id;
+ __free_privilege_list(privilege_list);
+ return PRVMGR_ERR_NONE;
+ }
}
+ __free_privilege_list(privilege_list);
+
+ return PRVMGR_ERR_NO_EXIST_PRIVILEGE;
}
-int privilege_manager_verify_privilege_level(privilege_manager_package_type_e package_type, GList* privilege_list, privilege_manager_visibility_e visibility, GList **error_privilege_name_list, GList **error_privilege_level_list)
+int privilege_manager_verify_privilege_list(privilege_manager_package_type_e package_type, GList* privilege_list, privilege_manager_visibility_e visibility, char** error_privilege_name)
{
- LOGD("privilege_manager_verify_privilege_level called");
+ LOGD("privilege_info_compare_privilege_level called");
GList *l;
int ret;
- int ret_val = PRVMGR_ERR_NONE;
int i = 0;
- GList* temp_error_privilege_name_list = NULL;
- GList* temp_error_privilege_level_list = NULL;
+ *error_privilege_name = NULL;
TryReturn(privilege_list != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege_list is NULL");
int privilege_level_id;
char* privilege_name = (char*)l->data;
- if(privilege_name == NULL)
- {
- g_list_free(temp_error_privilege_level_list);
- g_list_free(temp_error_privilege_name_list);
- LOGE("[PRVMGR_ERR_INVALID_PARAMETER] privilege_list[%d] is NULL", i);
- return PRVMGR_ERR_INVALID_PARAMETER;
- }
+ TryReturn(privilege_name != NULL, PRVMGR_ERR_INVALID_PARAMETER, "[PRVMGR_ERR_INVALID_PARAMETER] privilege_list[%d] is NULL", i);
i++;
LOGD("Checking privilege : %s", privilege_name);
- ret = __privilege_manager_check_privilege_list(privilege_name, &privilege_level_id);
- if(ret == PRVMGR_ERR_NONE)
+
+ ret = __privilege_manager_core_privilege_level(privilege_name, &privilege_level_id);
+ if(ret == PRVMGR_ERR_NO_EXIST_PRIVILEGE)
{
- LOGD("visibility : %d", visibility);
- LOGD("privilege level : %d", privilege_level_id);
+ LOGE("[PRVMGR_ERR_NO_EXIST_PRIVILEGE] There are no privilege %s in DB", privilege_name);
+ *error_privilege_name = (char*)calloc(strlen(privilege_name) + 1, sizeof(char));
+ TryReturn(*error_privilege_name != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
+ memcpy(*error_privilege_name, privilege_name, strlen(privilege_name));
- if((visibility & PRVMGR_PACKAGE_VISIBILITY_PUBLIC) == PRVMGR_PACKAGE_VISIBILITY_PUBLIC){
- if(privilege_level_id == PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PARTNER || privilege_level_id == PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM)
+ return PRVMGR_ERR_NO_EXIST_PRIVILEGE;
+ }
+ else if(ret == PRVMGR_ERR_NONE)
+ {
+ if(visibility == PRVMGR_PACKAGE_VISIBILITY_PARTNER){
+ if(privilege_level_id == PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM)
{
LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility and Privilege level are mismatched");
- LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility : public, Privilege Level : %s", __get_privilege_level_string(privilege_level_id));
- char* error_privilege_name = strdup(privilege_name);
- TryReturn(error_privilege_name != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_privilege_name's strdup is failed.");
- char* error_privilege_level = strdup(__get_privilege_level_string(privilege_level_id));
- if(error_privilege_level == NULL)
- {
- free(error_privilege_name);
- LOGE("[PRVMGR_ERR_OUT_OF_MEMORY] error_privilege_level's strdup is failed.");
- return PRVMGR_ERR_OUT_OF_MEMORY;
- }
- temp_error_privilege_name_list = g_list_append(temp_error_privilege_name_list, error_privilege_name);
- temp_error_privilege_level_list = g_list_append(temp_error_privilege_level_list, error_privilege_level);
- ret_val = PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL;
+ LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility : partner, Privilege Level : %d", privilege_level_id);
+ *error_privilege_name = (char*)calloc(strlen(privilege_name) + 1, sizeof(char));
+ TryReturn(*error_privilege_name != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
+ memcpy(*error_privilege_name, privilege_name, strlen(privilege_name));
+
+ return PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL;
}
}
- else if((visibility & PRVMGR_PACKAGE_VISIBILITY_PARTNER) == PRVMGR_PACKAGE_VISIBILITY_PARTNER){
- if(privilege_level_id == PRIVILIEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM)
+ else if(visibility == PRVMGR_PACKAGE_VISIBILITY_PUBLIC){
+ if(privilege_level_id == PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PARTNER || privilege_level_id == PRIVILEGE_DB_MANAGER_PRIVILEGE_LEVEL_PLATFORM)
{
LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility and Privilege level are mismatched");
- LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility : partner, Privilege Level : %s", __get_privilege_level_string(privilege_level_id));
- char* error_privilege_name = strdup(privilege_name);
- TryReturn(error_privilege_name != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] error_privilege_name's strdup is failed.");
- char* error_privilege_level = strdup(__get_privilege_level_string(privilege_level_id));
- if(error_privilege_level == NULL)
- {
- free(error_privilege_name);
- LOGE("[PRVMGR_ERR_OUT_OF_MEMORY] error_privilege_level's strdup is failed.");
- return PRVMGR_ERR_OUT_OF_MEMORY;
- }
- temp_error_privilege_name_list = g_list_append(temp_error_privilege_name_list, error_privilege_name);
- temp_error_privilege_level_list = g_list_append(temp_error_privilege_level_list, error_privilege_level);
- ret_val = PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL;
- }
- }
- else if((visibility & PRVMGR_PACKAGE_VISIBILITY_PLATFORM) == PRVMGR_PACKAGE_VISIBILITY_PLATFORM){
+ LOGE("[PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL] Visibility : public, Privilege Level : %d", privilege_level_id);
+ *error_privilege_name = (char*)calloc(strlen(privilege_name) + 1, sizeof(char));
+ TryReturn(*error_privilege_name != NULL, PRVMGR_ERR_OUT_OF_MEMORY, "[PRVMGR_ERR_OUT_OF_MEMORY] Memory allocation failed.");
+ memcpy(*error_privilege_name, privilege_name, strlen(privilege_name));
- }
- else{
- LOGE("[PRVMGR_ERR_INVALID_PARAMETER] visibility dont include any public, partner, platform");
- g_list_free(temp_error_privilege_name_list);
- g_list_free(temp_error_privilege_level_list);
- return PRVMGR_ERR_INVALID_PARAMETER;
+ return PRVMGR_ERR_MISMACHED_PRIVILEGE_LEVEL;
+ }
}
}
- else if(ret == PRVMGR_ERR_INTERNAL_ERROR || ret == PRVMGR_ERR_INVALID_PARAMETER)
+ else
{
return ret;
}
}
- *error_privilege_name_list = temp_error_privilege_name_list;
- *error_privilege_level_list = temp_error_privilege_level_list;
-
- return ret_val;
+ return PRVMGR_ERR_NONE;
}
+
BuildRequires: pkgconfig(pkgmgr-info)
BuildRequires: pkgconfig(capi-appfw-package-manager)
BuildRequires: cert-svc-devel
+BuildRequires: pkgconfig(glib-2.0)
%description -n capi-security-privilege-manager
The Privilege Manager API provides functions to get information about privilege information of installed packages.
%build
-%if "%{?tizen_profile_name}" == "wearable"
+%if "%{?profile}" == "tv"
+ __PROFILE_TYPE="TV"
+%else if "%{?profile}" == "wearable"
__PROFILE_TYPE="WEARABLE"
-%else
+%else if "%{?profile}" == "mobile"
__PROFILE_TYPE="MOBILE"
+%else
+ __PROFILE_TYPE="COMMON"
%endif
export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
-DCMAKE_BUILD_TYPE=%{build_type} \
-DVERSION=%{version} \
-DDPL_LOG="ON" \
+ -DDATADIR=%{_datadir} \
-DPROFILE_TYPE="${__PROFILE_TYPE}"
cmake . -DPREFIX=%{_prefix} \
-DCMAKE_BUILD_TYPE=%{build_type} \
-DVERSION=%{version} \
-DDPL_LOG="ON" \
+ -DDATADIR=%{_datadir} \
-DPROFILE_TYPE="${__PROFILE_TYPE}"
make %{?jobs:-j%jobs}
%install
rm -rf %{buildroot}
-mkdir -p %{buildroot}/usr/share/license
-cp LICENSE.APLv2 %{buildroot}/usr/share/license/privilege-checker
+mkdir -p %{buildroot}%{_datadir}/license
+cp LICENSE.APLv2 %{buildroot}%{_datadir}/license/privilege-checker
mkdir -p %{buildroot}/opt/dbspace
-mkdir -p %{buildroot}/usr/share/privilege-manager
-cp capi/res/dbspace/core_privilege_info.db %{buildroot}/usr/share/privilege-manager/.core_privilege_info.db
-sqlite3 /%{buildroot}/usr/share/privilege-manager/.core_privilege_info.db "select * from privilege_info"
-cp capi/res/dbspace/wrt_privilege_info.db %{buildroot}/usr/share/privilege-manager/.wrt_privilege_info.db
-sqlite3 /%{buildroot}/usr/share/privilege-manager/.wrt_privilege_info.db "select * from privilege_info"
+mkdir -p %{buildroot}%{_datadir}/privilege-manager
+cp capi/res/dbspace/core_privilege_info.db %{buildroot}%{_datadir}/privilege-manager/.core_privilege_info.db
+sqlite3 /%{buildroot}%{_datadir}/privilege-manager/.core_privilege_info.db "select * from privilege_info"
+cp capi/res/dbspace/wrt_privilege_info.db %{buildroot}%{_datadir}/privilege-manager/.wrt_privilege_info.db
+sqlite3 /%{buildroot}%{_datadir}/privilege-manager/.wrt_privilege_info.db "select * from privilege_info"
%make_install
%files -n privilege-checker
-/usr/share/license/privilege-checker
+%{_datadir}/license/privilege-checker
%manifest packaging/privilege-checker.manifest
%files -n capi-security-privilege-manager
%{_libdir}/libcapi-security-privilege-manager.so*
-/usr/share/locale/*
-/usr/share/privilege-manager/.core_privilege_info.db
-/usr/share/privilege-manager/.wrt_privilege_info.db
+%{_datadir}/locale/*
+%{_datadir}/privilege-manager/.core_privilege_info.db
+%{_datadir}/privilege-manager/.wrt_privilege_info.db
%manifest packaging/capi-security-privilege-manager.manifest
%files -n capi-security-privilege-manager-devel