Now dmcrypt feature used always.
Change-Id: Ia8b19af50936dfb21770c642643a1217580878f5
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
SET(CMAKE_C_FLAGS "${EXTRA_CFLAGS} ${APP2EXT_CFLAGS}")
ADD_DEFINITIONS("-DLIBPREFIX=\"${LIB_INSTALL_DIR}\"")
-ADD_DEFINITIONS("-DTIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION")
# Local include directories
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/inc)
APP2EXT_ERROR_PKGMGR_ERROR,
APP2EXT_ERROR_KILLAPP_ERROR,
APP2EXT_ERROR_NOENTRY,
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
APP2EXT_ERROR_SETUP_DMCRYPT_DEVICE,
APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE,
APP2EXT_ERROR_CLOSE_DMCRYPT_DEVICE,
APP2EXT_ERROR_FIND_ASSOCIATED_DMCRYPT_DEVICE_NODE,
APP2EXT_ERROR_DMCRYPT_DEVICE_UNAVAILABLE,
-#endif
APP2EXT_ERROR_ENUM_MAX
} app2ext_error;
char *device_node;
int ret;
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
device_node = _app2sd_find_associated_dmcrypt_device_node(pkgid, uid);
if (!device_node) {
_E("failed to find device node");
return APP2EXT_ERROR_FIND_ASSOCIATED_DMCRYPT_DEVICE_NODE;
}
-#else
- device_node = _app2sd_find_associated_device_node(loopback_device);
- if (!device_node) {
- _E("failed to find device node");
- return APP2EXT_ERROR_FIND_ASSOCIATED_DEVICE_NODE;
- }
-#endif
ret = _app2sd_unmount_app_content(application_path);
if (ret) {
return APP2EXT_ERROR_UNMOUNT;
}
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_close_device(pkgid, uid);
if (ret) {
_E("close dmcrypt device error(%d)", ret);
free(device_node);
return ret;
}
-#else
- ret = _app2sd_remove_loopback_encryption_setup(loopback_device);
- if (ret) {
- _E("unable to detach the loopback encryption setup "
- "for the application");
- free(device_node);
- return APP2EXT_ERROR_UNMOUNT;
- }
-#endif
free(device_node);
return ret;
int free_mmc_mem;
char *sdpath;
char *device_node;
-#if !defined(TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION)
- char *devi;
- char *result;
-#endif
char mmc_path[FILENAME_MAX];
char application_path[FILENAME_MAX];
char loopback_device[FILENAME_MAX];
ret = _app2sd_create_loopback_device(pkgid, loopback_device,
(reqd_disk_size + PKG_BUF_SIZE));
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_setup_device(pkgid, loopback_device, false, uid);
if (ret) {
_E("dmcrypt setup device error");
_E("dmcrypt open device error");
return APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
}
-#else
- /* perform loopback encryption setup */
- device_node = _app2sd_do_loopback_encryption_setup(pkgid,
- loopback_device, uid);
- if (!device_node) {
- _E("loopback encryption setup failed");
- _app2sd_delete_loopback_device(loopback_device);
- return APP2EXT_ERROR_DO_LOSETUP;
- }
-
- /* check whether loopback device is associated
- * with device node or not
- */
- devi = _app2sd_find_associated_device_node(loopback_device);
- if (devi == NULL) {
- _E("finding associated device node failed");
- ret = APP2EXT_ERROR_DO_LOSETUP;
- goto FINISH_OFF;
- }
-#endif
/* format the loopback file system */
ret = _app2sd_create_file_system(device_node);
FINISH_OFF:
if (device_node) {
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_close_device(pkgid, uid);
if (ret)
_E("close dmcrypt device error(%d)", ret);
_app2sd_delete_loopback_device(loopback_device);
-#else
- result = _app2sd_detach_loop_device(device_node);
- if (result)
- free(result);
- _app2sd_delete_loopback_device(loopback_device);
-#endif
}
END:
if (device_node)
free(device_node);
-#if !defined(TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION)
- if (devi)
- free(devi);
-#endif
-
sync();
return ret;
}
char loopback_device[FILENAME_MAX];
char *sdpath;
char *device_node;
-#if !defined(TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION)
- char *result;
-#endif
FILE *fp;
/* validate the function parameter recieved */
}
fclose(fp);
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
device_node =
_app2sd_find_associated_dmcrypt_device_node(pkgid, uid);
if (device_node) {
_E("dmcrypt open device error(%d)", ret);
return APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
}
-#else
- result = (char *)_app2sd_find_associated_device(loopback_device);
- /* process the string */
- if ((result != NULL) && strstr(result, "/dev") != NULL) {
- _E("already associated");
- free(result);
- return APP2EXT_ERROR_ALREADY_MOUNTED;
- }
-
- /* do loopback setup */
- device_node = _app2sd_do_loopback_encryption_setup(pkgid,
- loopback_device, uid);
- if (device_node == NULL) {
- _E("loopback encryption setup failed");
- return APP2EXT_ERROR_DO_LOSETUP;
- }
-#endif
/* do mounting */
ret = _app2sd_mount_app_content(application_path, pkgid, device_node,
int ret;
char application_path[FILENAME_MAX];
char loopback_device[FILENAME_MAX];
-#ifndef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
- char mmc_path[FILENAME_MAX];
- char *sdpath;
- FILE *fp;
- int mmc_present = 1;
-#endif
/* validate the function parameter recieved */
if (pkgid == NULL) {
_app2sd_set_application_path(pkgid, uid, application_path,
sizeof(application_path));
-#ifndef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
- /* check whether MMC is present or not */
- ret = _app2sd_check_mmc_status(&sdpath);
- if (ret) {
- _W("MMC not present OR Not ready (%d)", ret);
- mmc_present = 0;
- }
- snprintf(mmc_path, sizeof(mmc_path), "%s", sdpath);
- free(sdpath);
-
- ret = _app2sd_get_loopback_device_path(mmc_path, pkgid, uid,
- loopback_device, sizeof(loopback_device));
- if (ret)
- return ret;
-
- if (mmc_present) {
- fp = fopen(loopback_device, "r+");
- if (fp == NULL) {
- _E("app entry is not present in SD Card");
- return APP2EXT_ERROR_INVALID_PACKAGE;
- }
- fclose(fp);
- }
-#endif
-
ret = __app2sd_finalize_device_setup(pkgid, loopback_device,
application_path, uid);
if (ret) {
fclose(fp);
/* get the associated device node for SD card applicationer */
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
device_node =
_app2sd_find_associated_dmcrypt_device_node(pkgid, uid);
-#else
- device_node = _app2sd_find_associated_device_node(loopback_device);
-#endif
if (device_node == NULL) {
/* do loopback setup */
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_open_device(pkgid, loopback_device,
false, uid, &device_node);
if (ret) {
ret = APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
goto END;
}
-#else
- device_node = _app2sd_do_loopback_encryption_setup(pkgid,
- loopback_device, uid);
- if (device_node == NULL) {
- _E("loopback encryption setup failed");
- ret = APP2EXT_ERROR_DO_LOSETUP;
- goto END;
- }
-#endif
mount_type = MOUNT_TYPE_RW;
} else {
mount_type = MOUNT_TYPE_RW_REMOUNT;
}
/* get the associated device node for SD card applicationer */
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
device_node =
_app2sd_find_associated_dmcrypt_device_node(pkgid, uid);
-#else
- device_node = _app2sd_find_associated_device_node(loopback_device);
-#endif
if (device_node == NULL) {
/* do loopback setup */
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_open_device(pkgid, loopback_device,
false, uid, &device_node);
if (ret) {
_E("dmcrypt open device error");
return APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
}
-#else
- device_node = _app2sd_do_loopback_encryption_setup(pkgid,
- loopback_device, uid);
- if (device_node == NULL) {
- _E("loopback encryption setup failed");
- return APP2EXT_ERROR_DO_LOSETUP;
- }
-#endif
mount_type = MOUNT_TYPE_RW;
} else {
mount_type = MOUNT_TYPE_RW_REMOUNT;
return APP2EXT_ERROR_SQLITE_REGISTRY;
}
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
device_node =
_app2sd_find_associated_dmcrypt_device_node(pkgid, uid);
if (device_node) {
_E("dmcrypt open device error(%d)", ret);
return APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
}
-#else
- result = (char *)_app2sd_find_associated_device(new_image);
- /* process the string */
- if ((result != NULL) && strstr(result, "/dev") != NULL) {
- _E("already associated");
- free(result);
- result = NULL;
- return APP2EXT_ERROR_ALREADY_MOUNTED;
- }
-
- /* do loopback setup */
- device_node = _app2sd_do_loopback_encryption_setup(pkgid,
- new_image, uid);
- if (device_node == NULL) {
- _E("loopback encryption setup failed");
- return APP2EXT_ERROR_DO_LOSETUP;
- }
-#endif
/* do mounting */
ret = _app2sd_mount_app_content(application_path, pkgid,
#include "app2sd_internals.h"
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
#define DMCRYPT_ITER_TIME 50
#define DMCRYPT_KEY_LEN 128
-#endif
static int _app2sd_make_directory(const char *path, uid_t uid)
{
return APP2EXT_SUCCESS;
}
-char *_app2sd_find_associated_device_node(const char *loopback_device)
-{
- char *ret_result;
- char delims[] = ":";
- char *result;
- char dev[FILENAME_MAX];
- char *devnode = NULL;
- char *saveptr;
-
- result = (char *)_app2sd_find_associated_device(loopback_device);
- if (result == NULL) {
- _D("there is no the associated file (%s)", loopback_device);
- return NULL;
- }
-
- /* process the string*/
- snprintf(dev, sizeof(dev), "%s", result);
-
- if (strstr(dev, "dev") == NULL) {
- _E("unable to find the associated file");
- free(result);
- return NULL;
- } else {
- ret_result = strtok_r(dev, delims, &saveptr);
- if (ret_result)
- devnode = strdup(ret_result);
- }
-
- free(result);
-
- return devnode;
-}
-
-#define MAX_LOOP_COUNT 256
-char *_app2sd_create_loopdevice_node(void)
-{
- mode_t mode = DIR_PERMS;
- int count;
- int ret;
- char *result;
- FILE *fp;
- char dev_path[BUF_SIZE];
- dev_t dev_node;
-
- result = (char *)_app2sd_find_free_device();
- _D("find_free_device(%s)", result);
-
- if (result && strncmp(result, "/dev", strlen("/dev")) == 0) {
- _D("device node candidate is (%s)", result);
- return result;
- }
-
- _D("no device found, creating device node");
- if (result)
- free(result);
- for (count = 0; count < MAX_LOOP_COUNT; count++) {
- snprintf(dev_path, sizeof(dev_path), "/dev/loop%d", count);
- _D("next dev path for checking is (%s)", dev_path);
- fp = fopen(dev_path, "r+");
- if (fp == NULL)
- break;
- fclose(fp);
- }
-
- _D("device node candidate is (%s)", dev_path);
-
- dev_node = makedev(DEV_MAJOR, count);
- ret = mknod(dev_path, S_IFBLK | mode, dev_node);
- if (ret < 0) {
- _E("error while creating the device node: errno (%d)", errno);
- return NULL;
- }
-
- result = strdup(dev_path);
- if (result == NULL)
- _E("unable to allocate memory");
-
- return result;
-}
-
-char *_app2sd_do_loopback_encryption_setup(const char *pkgid,
- const char *loopback_device, uid_t uid)
-{
- int ret;
- char *passwd;
- char *result;
- char *device_node;
-
- if (pkgid == NULL) {
- _E("invalid argument");
- return NULL;
- }
-
- /* get password for loopback encryption */
- ret = _app2sd_initialize_db();
- if (ret) {
- _E("app2sd db initialize failed");
- return NULL;
- }
-
- passwd = _app2sd_get_password_from_db(pkgid, uid);
- if (passwd == NULL) {
- passwd = (char *)_app2sd_generate_password();
- if (passwd == NULL) {
- _E("unable to generate password");
- return NULL;
- }
-
- ret = _app2sd_set_info_in_db(pkgid, passwd, loopback_device,
- uid);
- if (ret < 0) {
- _E("unable to save info");
- free(passwd);
- return NULL;
- }
- }
-
- /* get free device node*/
- device_node = _app2sd_create_loopdevice_node();
- if (device_node == NULL) {
- free(passwd);
- _E("unable to find free loopback node");
- return NULL;
- }
-
- _D("device_node (%s)", device_node);
-
- result = (char *)_app2sd_encrypt_device(device_node,
- loopback_device, passwd);
- free(passwd);
- if (result == NULL) {
- _E("encryption failed");
- return NULL;
- }
-
- _D("result (%s)", result);
- free(result);
-
- return device_node;
-}
-
-char *_app2sd_do_loopback_duplicate_encryption_setup(const char *pkgid,
- const char *temp_pkgid, const char *temp_loopback_device,
- char *passwd, uid_t uid)
-{
- char *result;
- char *device_node;
-
- if (pkgid == NULL || temp_pkgid == NULL ||
- temp_loopback_device == NULL || passwd == NULL) {
- _E("invalid argument");
- return NULL;
- }
-
- /* get free device node*/
- device_node = _app2sd_create_loopdevice_node();
- if (device_node == NULL) {
- _E("unable to find free loopback node");
- return NULL;
- }
- result = (char *)_app2sd_encrypt_device(device_node,
- temp_loopback_device, passwd);
- /* losetup does not forked or errmsg from losetup */
- if (result == NULL || strlen(result)) {
- _E("encryption failed");
- if (result && strlen(result))
- _E("error is (%s)", result);
- if (result)
- free(result);
- return NULL;
- }
-
- free(result);
-
- return device_node;
-}
-
-int _app2sd_remove_loopback_encryption_setup(const char *loopback_device)
-{
- int ret = APP2EXT_SUCCESS;
- char *result;
- char *dev_node;
-
- dev_node = _app2sd_find_associated_device_node(loopback_device);
- if (dev_node == NULL) {
- _E("Unable to find the association");
- ret = APP2EXT_ERROR_FIND_ASSOCIATED_DEVICE_NODE;
- }
-
- result = (char *)_app2sd_detach_loop_device(dev_node);
- if (result == NULL) {
- _E("error in detaching");
- ret = APP2EXT_ERROR_DETACH_LOOPBACK_DEVICE;
- } else {
- free(result);
- result = NULL;
- }
-
- if (dev_node)
- free(dev_node);
-
- return ret;
-}
-
-int _app2sd_remove_all_loopback_encryption_setups(const char *loopback_device)
-{
- int ret;
- char *result;
- char *dev_node;
- while (1) {
- dev_node = _app2sd_find_associated_device_node(
- loopback_device);
- if (dev_node == NULL) {
- _E("finish to find the association");
- ret = APP2EXT_SUCCESS;
- break;
- }
-
- _D("find node (%s)", dev_node);
-
- result = (char *)_app2sd_detach_loop_device(dev_node);
- free(dev_node);
- if (result == NULL) {
- _E("error in detaching");
- ret = APP2EXT_ERROR_DETACH_LOOPBACK_DEVICE;
- break;
- }
- free(result);
- }
-
- return ret;
-}
-
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
int _app2sd_dmcrypt_setup_device(const char *pkgid,
const char *loopback_device, bool is_dup, uid_t uid)
{
return device_node;
}
-#endif
int _app2sd_create_loopback_device(const char *pkgid,
const char *loopback_device, int size)
int reqd_size;
int reqd_disk_size;
char *device_node;
-#if !defined(TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION)
- char *devi;
-#endif
int free_mmc_mem;
FILE *fp;
GList *list;
return ret;
}
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_setup_device(pkgid, loopback_device, false, uid);
if (ret) {
_E("dmcrypt setup device error(%d)", ret);
_E("dmcrypt open device error");
return APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
}
-#else
- /* perform loopback encryption setup */
- device_node = _app2sd_do_loopback_encryption_setup(pkgid,
- loopback_device, uid);
- if (!device_node) {
- _E("loopback encryption setup failed");
- return APP2EXT_ERROR_DO_LOSETUP;
- }
- _D("device_node (%s)", device_node);
- /* check whether loopback device is associated with
- * device node or not
- */
- devi = _app2sd_find_associated_device_node(loopback_device);
- if (devi == NULL) {
- _E("finding associated device node failed");
- ret = APP2EXT_ERROR_DO_LOSETUP;
- goto ERR;
- }
- free(devi);
-#endif
/* format the loopback file system */
ret = _app2sd_create_file_system(device_node);
if (ret) {
return APP2EXT_ERROR_MMC_INSUFFICIENT_MEMORY;
}
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
device_node =
_app2sd_find_associated_dmcrypt_device_node(pkgid, uid);
-#else
- device_node = _app2sd_find_associated_device_node(loopback_device);
-#endif
if (device_node == NULL) {
/* do loopback setup */
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_open_device(pkgid, loopback_device,
false, uid, &device_node);
if (ret) {
_E("dmcrypt open device error(%d)", ret);
return APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
}
-#else
- device_node = _app2sd_do_loopback_encryption_setup(pkgid,
- loopback_device, uid);
- if (device_node == NULL) {
- _E("loopback encryption setup failed");
- return APP2EXT_ERROR_DO_LOSETUP;
- }
-#endif
mount_type = MOUNT_TYPE_RW;
} else {
mount_type = MOUNT_TYPE_RW_REMOUNT;
if (ret)
_E("unable to unmount SD directory for app (%s)", pkgid);
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_close_device(pkgid, uid);
if (ret)
_E("close dmcrypt device error(%d)", ret);
-#else
- ret = _app2sd_remove_loopback_encryption_setup(loopback_device);
- if (ret)
- _E("unable to detach loopback setup for (%s)", pkgid);
-#endif
ret = _app2sd_delete_loopback_device(loopback_device);
if (ret)
{
int ret;
int err_res;
-#if !defined(TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION)
- char *devi;
- char *result;
- char *passwd;
-#endif
/* create a new loopback device */
ret = _app2sd_create_loopback_device(temp_pkgid,
}
/* perform loopback encryption setup */
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
dev_node = _app2sd_dmcrypt_duplicate_encryption_setup(pkgid,
temp_loopback_device, uid);
if (!dev_node) {
_app2sd_delete_loopback_device(temp_loopback_device);
return APP2EXT_ERROR_SETUP_DMCRYPT_DEVICE;
}
-#else
- /* get password for loopback encryption */
- ret = _app2sd_initialize_db();
- if (ret) {
- _E("app2sd db initialize failed");
- return APP2EXT_ERROR_DB_INITIALIZE;
- }
-
- passwd = _app2sd_get_password_from_db(pkgid, uid);
- if (passwd == NULL) {
- passwd = _app2sd_generate_password();
- if (passwd == NULL) {
- _E("unable to generate password");
- return APP2EXT_ERROR_PASSWD_GENERATION;
- } else {
- ret = _app2sd_set_info_in_db(pkgid, passwd,
- loopback_device, uid);
- if (ret < 0) {
- _E("unable to save info");
- free(passwd);
- return APP2EXT_ERROR_SQLITE_REGISTRY;
- }
- }
- }
-
- dev_node = _app2sd_do_loopback_duplicate_encryption_setup(pkgid,
- temp_pkgid, temp_loopback_device, passwd, uid);
- if (!dev_node) {
- _E("losetup failed, device node is (%s)", dev_node);
- _app2sd_delete_loopback_device(temp_loopback_device);
- free(passwd);
- return APP2EXT_ERROR_DO_LOSETUP;
- }
- free(passwd);
- _D("duplicate setup SUCCESS");
-
- /* check whether loopback device is associated with
- * device node or not
- */
- devi = _app2sd_find_associated_device_node(temp_loopback_device);
- if (devi == NULL) {
- _E("finding associated device node failed");
- err_res = APP2EXT_ERROR_DO_LOSETUP;
- goto FINISH_OFF;
- }
- free(devi);
- _D("losetup SUCCESS");
-#endif
/* format the loopback file system */
ret = _app2sd_create_file_system(dev_node);
FINISH_OFF:
if (dev_node) {
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_close_device(temp_pkgid, uid);
if (ret)
_E("close dmcrypt device error(%d)", ret);
-#else
- result = _app2sd_detach_loop_device(dev_node);
- if (result)
- free(result);
-#endif
_app2sd_delete_loopback_device(temp_loopback_device);
free(dev_node);
}
}
/* get the associated device node for SD card applicatione */
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
old_device_node =
_app2sd_find_associated_dmcrypt_device_node(pkgid, uid);
-#else
- old_device_node = _app2sd_find_associated_device_node(loopback_device);
-#endif
if (old_device_node == NULL) {
/* do loopback setup */
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_open_device(pkgid, loopback_device,
false, uid, &old_device_node);
if (ret) {
err_res = APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE;
goto FINISH_OFF;
}
-#else
- old_device_node = _app2sd_do_loopback_encryption_setup(pkgid,
- loopback_device, uid);
- if (old_device_node == NULL) {
- _E("loopback encryption setup failed");
- err_res = APP2EXT_ERROR_DO_LOSETUP;
- goto FINISH_OFF;
- }
-#endif
mount_type = MOUNT_TYPE_RW;
} else {
mount_type = MOUNT_TYPE_RW_REMOUNT;
goto FINISH_OFF;
}
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_close_device(pkgid, uid);
if (ret) {
_E("close dmcrypt device error(%d)", ret);
err_res = APP2EXT_ERROR_CLOSE_DMCRYPT_DEVICE;
goto FINISH_OFF;
}
-#else
- ret = _app2sd_remove_loopback_encryption_setup(loopback_device);
- if (ret) {
- _E("unable to remove loopback setup");
- err_res = APP2EXT_ERROR_DELETE_LOOPBACK_DEVICE;
- }
-
- ret = _app2sd_remove_loopback_encryption_setup(temp_loopback_device);
- if (ret) {
- _E("unable to remove loopback setup");
- err_res = APP2EXT_ERROR_DELETE_LOOPBACK_DEVICE;
- goto FINISH_OFF;
- }
-#endif
ret = _app2sd_delete_directory(loopback_device);
if (ret) {
if (old_device_node)
free(old_device_node);
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_close_device(pkgid, uid);
if (ret)
_E("close dmcrypt device error(%d)", ret);
ret = _app2sd_dmcrypt_close_device(temp_pkgid, uid);
if (ret)
_E("close dmcrypt device error(%d)", ret);
-#else
- ret = _app2sd_remove_loopback_encryption_setup(loopback_device);
- if (ret)
- _E("unable to remove loopback setup");
-
- ret = _app2sd_remove_loopback_encryption_setup(temp_loopback_device);
- if (ret)
- _E("unable to remove loopback setup");
-#endif
_app2sd_delete_loopback_device(temp_loopback_device);
_W("unable to unmount the app content (%d)", ret);
/* detach the loopback encryption setup for the application */
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
ret = _app2sd_dmcrypt_close_device(pkgid, uid);
if (ret)
_W("close dmcrypt device error (%d)", ret);
-#else
- ret = _app2sd_remove_all_loopback_encryption_setups(loopback_device);
- if (ret)
- _W("unable to detach the loopback encryption setup for "
- "the application");
-#endif
/* delete the loopback device from the SD card */
ret = _app2sd_delete_loopback_device(loopback_device);
/* utility to create symlinks */
int _app2sd_create_symlink(char *pkgid);
-/* this function finds the associated device node for the app */
-char *_app2sd_find_associated_device_node(const char *loopback_device);
-
-/* this function does the loopback encryption for app */
-char *_app2sd_do_loopback_encryption_setup(const char *pkgid,
- const char *loopback_device, uid_t uid);
-
-/* this function detaches the loopback device */
-char *_app2sd_detach_loop_device(const char *device);
-
-/* this function finds loopback device associated with the app */
-char *_app2sd_find_associated_device(const char *loopback_device);
-
/* this function creates loopback device */
int _app2sd_create_loopback_device(const char *pkgid,
const char *loopback_device, int size);
/* this function unmounts the app content */
int _app2sd_unmount_app_content(const char *application_path);
-/* this function removes the loopbck encryption setup for the app */
-int _app2sd_remove_loopback_encryption_setup(const char *loopback_device);
-
/* this function removes all of loopbck encryption setup for the app */
int _app2sd_remove_all_loopback_encryption_setups(const char *loopback_device);
char *_app2sd_encrypt_device(const char *device, const char *loopback_device,
char *passwd);
-/* this function finds free device */
-char *_app2sd_find_free_device(void);
-
/* this function initializes app2sd DB */
int _app2sd_initialize_db();
int _app2sd_force_clean(const char *pkgid, const char *application_path,
const char *loopback_device, uid_t uid);
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
/* this function setup dmcrypt header in the app2sd file */
int _app2sd_dmcrypt_setup_device(const char *pkgid,
const char *loopback_device, bool is_dup, uid_t uid);
char *_app2sd_find_associated_dmcrypt_device_node(const char *pkgid, uid_t uid);
int _app2sd_check_is_luks_device(const char *device_path);
-#endif
int _app2sd_get_loopback_device_path(const char *mmc_path, const char *pkgid,
uid_t uid, char *loopback_device, size_t len);
}
-/* Note: Don't use any printf statement inside this function */
-char *_app2sd_encrypt_device(const char *device, const char *loopback_device,
- char *passwd)
-{
- const char *argv[] = { "/sbin/losetup", device, loopback_device, NULL };
- return _app2sd_execute_command(argv);
-}
-
-/* Note: Don't use any printf statement inside this function */
-char *_app2sd_detach_loop_device(const char *device)
-{
- const char *argv[] = { "/sbin/losetup", "-d", device, NULL };
- return _app2sd_execute_command(argv);
-}
-
-/* Note: Don't use any printf statement inside this function*/
-char *_app2sd_find_associated_device(const char *loopback_device)
-{
- const char *argv[] = { "/sbin/losetup", "-a", NULL };
- char *ret_result_temp;
- char *ret_result = NULL;
- char *line;
- char *save_str;
-
- ret_result_temp = _app2sd_execute_command(argv);
- if (ret_result_temp == NULL)
- return NULL;
-
- line = strtok_r(ret_result_temp, "\n", &save_str);
- while (line) {
- if (strstr(line, loopback_device) != NULL) {
- _D("found: (%s)", line);
- if (ret_result)
- _D("duplicated device");
- else
- ret_result = strdup(line);
- }
- line = strtok_r(NULL, "\n", &save_str);
- }
- free(ret_result_temp);
-
- return ret_result;
-}
-
-/*Note: Don't use any printf statement inside this function*/
-char *_app2sd_find_free_device(void)
-{
- const char *argv[] = { "/sbin/losetup", "-f", NULL };
- return _app2sd_execute_command(argv);
-}
-
/*
* This is a simple password generator
* return: On success, it will return the password, else NULL.
return passwd;
}
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
int _app2sd_check_is_luks_device(const char *device_path)
{
int ret = 0;
_D("ret(%d), result(%d)", ret, result);
return result;
}
-#endif
int _app2sd_get_loopback_device_path(const char *mmc_path,
const char *pkgid, uid_t uid, char *loopback_device, size_t len)
"APP2EXT_ERROR_SAME_LOOPBACK_DEVICE_EXISTS",
"APP2EXT_ERROR_PKGMGR_ERROR",
"APP2EXT_ERROR_NOENTRY",
-#ifdef TIZEN_FEATURE_APP2SD_DMCRYPT_ENCRYPTION
"APP2EXT_ERROR_SETUP_DMCRYPT_DEVICE",
"APP2EXT_ERROR_OPEN_DMCRYPT_DEVICE",
"APP2EXT_ERROR_CLOSE_DMCRYPT_DEVICE",
"APP2EXT_ERROR_FIND_ASSOCIATED_DMCRYPT_DEVICE_NODE",
"APP2EXT_ERROR_DMCRYPT_DEVICE_UNAVAILABLE",
-#endif
};
static void usage(void)