diff options
author | Dongsun Lee <ds73.lee@samsung.com> | 2015-08-13 16:35:58 +0900 |
---|---|---|
committer | Dongsun Lee <ds73.lee@samsung.com> | 2015-08-13 16:39:51 +0900 |
commit | 671aefceb8f5249194c2abfc1bdeddb7d16a7631 (patch) | |
tree | 46f5e1e555980a34bfb5eade99257886416a7fcc /srcs | |
parent | 391c9b75f18989c2778c0cc804a4eddb38a3f050 (diff) | |
download | libwebappenc-671aefceb8f5249194c2abfc1bdeddb7d16a7631.tar.gz libwebappenc-671aefceb8f5249194c2abfc1bdeddb7d16a7631.tar.bz2 libwebappenc-671aefceb8f5249194c2abfc1bdeddb7d16a7631.zip |
change API signatures to support GLOBAL app and NORMAL app at the same timetizen_3.0.m1_tv_releasetizen_3.0.m1_mobile_releasesubmit/tizen_common/20151026.085049submit/tizen_common/20151023.083358submit/tizen/20150820.084129submit/tizen/20150820.083859accepted/tizen/wearable/20150820.115949accepted/tizen/tv/20150820.115853accepted/tizen/mobile/20150820.115727tizen_3.0.m1_tvtizen_3.0.m1_mobile
Change-Id: Ic9a60b295bff13bb59c1c6990dfbad569e92c267
Signed-off-by: Dongsun Lee <ds73.lee@samsung.com>
Diffstat (limited to 'srcs')
-rw-r--r-- | srcs/key_handler.c | 32 | ||||
-rw-r--r-- | srcs/key_handler.h | 11 | ||||
-rw-r--r-- | srcs/web_app_enc.c | 49 |
3 files changed, 52 insertions, 40 deletions
diff --git a/srcs/key_handler.c b/srcs/key_handler.c index 4ec4e5c..304d94b 100644 --- a/srcs/key_handler.c +++ b/srcs/key_handler.c @@ -138,13 +138,19 @@ int _get_random(size_t length, unsigned char* random) return WAE_ERROR_NONE; } -void _get_alias(const char* pPkgId, char* alias, size_t buff_len) +void _get_alias(const char* pPkgId, wae_app_type_e appType, char* alias, size_t buff_len) { - snprintf(alias, buff_len, "%s%s%s%s", + if(appType == WAE_DOWNLOADED_NORMAL_APP) { + snprintf(alias, buff_len, "%s%s", + APP_DEK_ALIAS_PFX, + pPkgId); + }else { // system alias + snprintf(alias, buff_len, "%s%s%s%s", ckmc_label_shared_owner, ckmc_label_name_separator, APP_DEK_ALIAS_PFX, pPkgId); + } } void _get_dek_kek_alias(char* alias, size_t buff_len) @@ -178,7 +184,7 @@ const char* _get_dek_store_path() return tzplatform_mkpath3(TZ_SYS_SHARE, "wae", "app_dek"); } -int _add_dek_to_key_manager(const char* pPkgId, const unsigned char* pDek, size_t len) +int _add_dek_to_key_manager(const char* pPkgId, wae_app_type_e appType, const unsigned char* pDek, size_t len) { int ret = WAE_ERROR_NONE; char alias[MAX_ALIAS_LEN] = {0,}; @@ -192,14 +198,14 @@ int _add_dek_to_key_manager(const char* pPkgId, const unsigned char* pDek, size_ policy.extractable = true; // save app_dek in key_manager - _get_alias(pPkgId, alias, sizeof(alias)); + _get_alias(pPkgId, appType, alias, sizeof(alias)); // even if it fails to remove, ignore it. ret = _to_wae_error( ckmc_remove_alias(alias)); ret = _to_wae_error(ckmc_save_data(alias, buff, policy)); if(ret != WAE_ERROR_NONE) { - WAE_SLOGE("Fail to add APP_DEK to key-manager. pkgId=%s, ret=%d", pPkgId, ret); + WAE_SLOGE("Fail to add APP_DEK to key-manager. pkgId=%s, alias=%s, ret=%d", pPkgId, alias, ret); goto error; } @@ -324,7 +330,7 @@ error: return ret; } -int get_app_dek(const char* pPkgId, unsigned char** ppDek, size_t* dekLen) +int get_app_dek(const char* pPkgId, wae_app_type_e appType, unsigned char** ppDek, size_t* dekLen) { int ret = WAE_ERROR_NONE; @@ -338,11 +344,11 @@ int get_app_dek(const char* pPkgId, unsigned char** ppDek, size_t* dekLen) cached_dek = _get_app_dek_from_cache(pPkgId); if(cached_dek == NULL) { // get APP_DEK from system database - _get_alias(pPkgId, alias, sizeof(alias)); + _get_alias(pPkgId, appType, alias, sizeof(alias)); ret = _to_wae_error(ckmc_get_data(alias, password, &pDekBuffer)); if(ret != WAE_ERROR_NONE) { - WAE_SLOGE("Fail to get APP_DEK from key-manager. alias=%s, ret=%d", alias, ret); + WAE_SLOGI("Fail to get APP_DEK from key-manager. alias=%s, ret=%d", alias, ret); goto error; } } @@ -367,7 +373,7 @@ error: return ret; } -int create_app_dek(const char* pPkgId, unsigned char** ppDek, size_t* dekLen) +int create_app_dek(const char* pPkgId, wae_app_type_e appType, unsigned char** ppDek, size_t* dekLen) { int ret = WAE_ERROR_NONE; unsigned char *dek= NULL; @@ -385,7 +391,7 @@ int create_app_dek(const char* pPkgId, unsigned char** ppDek, size_t* dekLen) } // save app_dek in key_manager - ret = _add_dek_to_key_manager(pPkgId, dek, DEK_LEN); + ret = _add_dek_to_key_manager(pPkgId, appType, dek, DEK_LEN); if(ret != WAE_ERROR_NONE) { goto error; } @@ -691,7 +697,7 @@ int load_preloaded_app_deks(int reload) } // save app_dek in key_manager - ret = _add_dek_to_key_manager(pkgId, app_dek, app_dek_len); + ret = _add_dek_to_key_manager(pkgId, WAE_PRELOADED_APP, app_dek, app_dek_len); // free temp objects free(app_dek); free(encrypted_app_dek); @@ -724,12 +730,12 @@ error: } -int remove_app_dek(const char* pPkgId) +int remove_app_dek(const char* pPkgId, wae_app_type_e appType) { int ret = CKMC_ERROR_NONE; char alias[MAX_ALIAS_LEN] = {0,}; - _get_alias(pPkgId, alias,sizeof(alias)); + _get_alias(pPkgId, appType, alias,sizeof(alias)); ret = _to_wae_error(ckmc_remove_alias(alias)); if(ret != WAE_ERROR_NONE) { diff --git a/srcs/key_handler.h b/srcs/key_handler.h index c855241..c786964 100644 --- a/srcs/key_handler.h +++ b/srcs/key_handler.h @@ -30,6 +30,7 @@ extern "C" { #endif #include <stddef.h> +#include "web_app_enc.h" #define APP_DEK_ALIAS_PFX "APP_DEK_" #define APP_DEK_LOADING_DONE_ALIAS "APP_DEKS_LOADING_FINISHED" @@ -53,13 +54,13 @@ unsigned char* _get_app_dek_from_cache(const char* pkgId); void _add_app_dek_to_cache(const char* pkgId, unsigned char* dek); void _remove_app_dek_from_cache(const char* pkgId); int _get_random(size_t length, unsigned char* random); -void _get_alias(const char* pPkgId, char* alias, size_t buff_len); +void _get_alias(const char* pPkgId, wae_app_type_e appType, char* alias, size_t buff_len); void _get_dek_kek_alias(char* alias, size_t buff_len); void _get_dek_loading_done_alias(char* alias, size_t buff_len); const char* _get_dek_kek_pub_key_path(); const char* _get_dek_kek_pri_key_path(); const char* _get_dek_store_path(); -int _add_dek_to_key_manager(const char* pPkgId, const unsigned char* pDek, size_t len); +int _add_dek_to_key_manager(const char* pPkgId, wae_app_type_e appType, const unsigned char* pDek, size_t len); int _get_preloaded_app_dek_file_path(const char* pPkgId, char *path); int _extract_pkg_id_from_file_name(const char* fileName, char* pkgId); int _read_encrypted_app_dek_from_file(const char* pPkgId, unsigned char** encrypted_app_dek, size_t*len); @@ -71,12 +72,12 @@ int _get_app_deks_loaded(); int _set_app_deks_loaded(); int _clear_app_deks_loaded(); -int get_app_dek(const char* pPkgId, unsigned char** ppDek, size_t *dekLen); -int create_app_dek(const char* pPkgId, unsigned char** ppDek, size_t *dekLen); +int get_app_dek(const char* pPkgId, wae_app_type_e appType, unsigned char** ppDek, size_t *dekLen); +int create_app_dek(const char* pPkgId, wae_app_type_e appType, unsigned char** ppDek, size_t *dekLen); int get_preloaded_app_dek(const char* pPkgId, unsigned char** ppDek, size_t* dekLen); int create_preloaded_app_dek(const char* pPkgId, unsigned char** ppDek, size_t *dekLen); int load_preloaded_app_deks(int reload); -int remove_app_dek(const char* pPkgId); +int remove_app_dek(const char* pPkgId, wae_app_type_e appType); #ifdef __cplusplus diff --git a/srcs/web_app_enc.c b/srcs/web_app_enc.c index 7bc8484..39865bc 100644 --- a/srcs/web_app_enc.c +++ b/srcs/web_app_enc.c @@ -29,7 +29,7 @@ #include "wae_log.h" -int _wae_encrypt_downloaded_web_application(const char* pPkgId, +int _wae_encrypt_downloaded_web_application(const char* pPkgId, wae_app_type_e appType, const unsigned char* pData, size_t dataLen, unsigned char** ppEncryptedData, size_t* pEncDataLen) { @@ -55,9 +55,9 @@ int _wae_encrypt_downloaded_web_application(const char* pPkgId, // get APP_DEK. // if not exists, create APP_DEK - ret = get_app_dek(pPkgId, &pDek, &dekLen); + ret = get_app_dek(pPkgId, appType, &pDek, &dekLen); if(ret == WAE_ERROR_NO_KEY) { - ret = create_app_dek(pPkgId, &pDek, &dekLen); + ret = create_app_dek(pPkgId, appType, &pDek, &dekLen); } if(ret != WAE_ERROR_NONE) { goto error; @@ -76,7 +76,7 @@ error: return ret; } -int _wae_decrypt_downloaded_web_application(const char* pPkgId, +int _wae_decrypt_downloaded_web_application(const char* pPkgId, wae_app_type_e appType, const unsigned char* pData, size_t dataLen, unsigned char** ppDecryptedData, size_t* pDecDataLen) { @@ -100,7 +100,7 @@ int _wae_decrypt_downloaded_web_application(const char* pPkgId, goto error; } - ret = get_app_dek(pPkgId, &pDek, &dekLen); + ret = get_app_dek(pPkgId, appType, &pDek, &dekLen); if(ret != WAE_ERROR_NONE) { goto error; } @@ -163,51 +163,56 @@ error: return ret; } -int _wae_decrypt_preloaded_web_application(const char* pPkgId, +int _wae_decrypt_preloaded_web_application(const char* pPkgId, wae_app_type_e appType, const unsigned char* pData, size_t dataLen, unsigned char** ppDecryptedData, size_t* pDecDataLen) { // same with the decryption of downloaded web application - return _wae_decrypt_downloaded_web_application(pPkgId, pData, dataLen, ppDecryptedData, pDecDataLen); + return _wae_decrypt_downloaded_web_application(pPkgId, appType, + pData, dataLen, ppDecryptedData, pDecDataLen); } -int wae_encrypt_web_application(const char* pPkgId,int isPreloaded, +int wae_encrypt_web_application(const char* pPkgId, wae_app_type_e appType, const unsigned char* pData, size_t dataLen, unsigned char** ppEncryptedData, size_t* pEncDataLen) { int ret = WAE_ERROR_NONE; - if(isPreloaded) - ret = _wae_encrypt_preloaded_web_application(pPkgId, pData, dataLen, ppEncryptedData, pEncDataLen); + if(appType == WAE_PRELOADED_APP) + ret = _wae_encrypt_preloaded_web_application(pPkgId, + pData, dataLen, ppEncryptedData, pEncDataLen); else - ret = _wae_encrypt_downloaded_web_application(pPkgId, pData, dataLen, ppEncryptedData, pEncDataLen); + ret = _wae_encrypt_downloaded_web_application(pPkgId, appType, + pData, dataLen, ppEncryptedData, pEncDataLen); - WAE_SLOGI("Encrypt Web App. pkgId=%s, isPreloaded=%d, dataLen=%d, ret=%d", - pPkgId, isPreloaded, dataLen, ret); + WAE_SLOGI("Encrypt Web App. pkgId=%s, appType=%d, dataLen=%d, ret=%d", + pPkgId, appType, dataLen, ret); return ret; } -int wae_decrypt_web_application(const char* pPkgId, int isPreloaded, +int wae_decrypt_web_application(const char* pPkgId, wae_app_type_e appType, const unsigned char* pData, size_t dataLen, unsigned char** ppDecryptedData, size_t* pDecDataLen) { int ret = WAE_ERROR_NONE; - if(isPreloaded) - ret = _wae_decrypt_preloaded_web_application(pPkgId, pData, dataLen, ppDecryptedData, pDecDataLen); + if(appType == WAE_PRELOADED_APP) + ret = _wae_decrypt_preloaded_web_application(pPkgId, appType, + pData, dataLen, ppDecryptedData, pDecDataLen); else - ret =_wae_decrypt_downloaded_web_application(pPkgId, pData, dataLen, ppDecryptedData, pDecDataLen); + ret = _wae_decrypt_downloaded_web_application(pPkgId, appType, + pData, dataLen, ppDecryptedData, pDecDataLen); - WAE_SLOGI("Decrypt Web App. pkgId=%s, isPreloaded=%d, dataLen=%d, ret=%d", - pPkgId, isPreloaded, dataLen, ret); + WAE_SLOGI("Decrypt Web App. pkgId=%s, appType=%d, dataLen=%d, ret=%d", + pPkgId, appType, dataLen, ret); return ret; } -int wae_remove_app_dek(const char* pPkgId) +int wae_remove_app_dek(const char* pPkgId, wae_app_type_e appType) { int ret = WAE_ERROR_NONE; - ret = remove_app_dek(pPkgId); - WAE_SLOGI("Remove APP DEK. pkgId=%s, ret=%d", pPkgId, ret); + ret = remove_app_dek(pPkgId, appType); + WAE_SLOGI("Remove APP DEK. pkgId=%s, appType=%d, ret=%d", pPkgId, appType, ret); return ret; } |