summaryrefslogtreecommitdiff
path: root/include/web_app_enc.h
blob: 68a1fd9f68cd1da2f0b610111009fd5d9a663b12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*
 *  Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License
 *
 * @file    web_app_enc.h
 * @version 1.0
 * @brief   This file contains APIs of WEB_APP_ENC module.
*/

#ifndef __WEB_APP_ENC__
#define __WEB_APP_ENC__

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @addtogroup CAPI_WEB_APP_ENC_MODULE
 * @{
 */


/**
 * @brief WAE Errors.
 * @since_tizen 3.0
 */
typedef enum
{
    WAE_ERROR_NONE                     =   0x00, /**< Successful */
    WAE_ERROR_INVALID_PARAMETER        = - 0x01, /**< Invalid function parameter */
    WAE_ERROR_PERMISSION_DENIED        = - 0x02, /**< Permission denied */
    WAE_ERROR_NO_KEY                   = - 0x03, /**< No key */
    WAE_ERROR_KEY_EXISTS               = - 0x04, /**< key already exists*/
    WAE_ERROR_KEY_MANAGER              = - 0x05, /**< key-manager internal error */
    WAE_ERROR_CRYPTO                   = - 0x06, /**< failed in crypto operation */
    WAE_ERROR_MEMORY                   = - 0x07, /**< failed to allocate memory */
    WAE_ERROR_FILE                     = - 0x08, /**< failed to read or write a file*/
    WAE_ERROR_UNKNOWN                  = - 0x09  /** < Unknown error */
} wae_error_e;

/**
 * @brief Application Type.
 * @since_tizen 3.0
 */
typedef enum
{
    WAE_DOWNLOADED_NORMAL_APP = 0, /**< Downloaded Normal Application*/
    WAE_DOWNLOADED_GLOBAL_APP = 1, /**< Downloaded Global Application*/
    WAE_PRELOADED_APP         = 2  /**< Preloaded Application*/
} wae_app_type_e;

/**
 * @brief Encrypts web application data with internal key(APP DEK: Application Data Encryption Key).
 *
 * @since_tizen 3.0
 * @param[in] pPkgId   The package id of an application.
 * @param[in] appType  The application type.
 * @param[in] pData    The data block to be encrypted.
 * @param[in] dataLen  The length of the data block.
 * @param[out] ppEncryptedData The data block contaning encrypted data block. Memory allocated for ppEncryptedData. Has to be freed by free() function.
 * @param[out] pEncDataLen The length of the encrypted data block.
 *
 * @return #WAE_ERROR_NONE on success, otherwise a negative error value
 * @retval #WAE_ERROR_INVALID_PARAMETER   Invalid input parameter
 * @retval #WAE_ERROR_PERMISSION_DENIED   Non-authenticated application request
 * @retval #WAE_ERROR_NO_KEY              No internal key
 * @retval #WAE_ERROR_KEY_MANAGER         key-manager internal error
 * @retval #WAE_ERROR_CRYPTO              failed in crypto operation
 * @retval #WAE_ERROR_UNKNOWN             Failed with unknown reason
 *
 * @see wae_decrypt_web_application()
 */
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);

/**
 * @brief Encrypts web application data with internal key.
 *
 * @since_tizen 3.0
 * @param[in] pPkgId   The package id of an application.
 * @param[in] appType  The application type.
 * @param[in] pData    The data block to be decrypted.
 * @param[in] dataLen  The length of the data block.
 * @param[out] ppDecryptedData Data block contaning decrypted data block. Memory allocated for ppEncryptedData. Has to be freed by free() function.
 * @param[out] pDecDataLen The length of the decrypted data block.
 *
 * @return #WAE_ERROR_NONE on success, otherwise a negative error value
 * @retval #WAE_ERROR_INVALID_PARAMETER   Invalid input parameter
 * @retval #WAE_ERROR_PERMISSION_DENIED   Non-authenticated application request
 * @retval #WAE_ERROR_NO_KEY              No internal key
 * @retval #WAE_ERROR_KEY_MANAGER         key-manager internal error
 * @retval #WAE_ERROR_CRYPTO              failed in crypto operation
 * @retval #WAE_ERROR_UNKNOWN             Failed with unknown reason
 *
 * @see wae_encrypt_web_application()
 */
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);

/**
 * @brief Remove a APP DEK(Application Data Encryption Key) used for encrytpion and decryption of a web application.
 *
 * @since_tizen 3.0
 * @param[in] pPkgId   The package id of an application.
 * @param[in] appType  The application type.
 *
 * @return #WAE_ERROR_NONE on success, otherwise a negative error value
 * @retval #WAE_ERROR_INVALID_PARAMETER   Invalid input parameter
 * @retval #WAE_ERROR_PERMISSION_DENIED   Non-authenticated application request
 * @retval #WAE_ERROR_NO_KEY              No internal key
 * @retval #WAE_ERROR_KEY_MANAGER         key-manager internal error
 * @retval #WAE_ERROR_UNKNOWN             Failed with unknown reason
 *
 */
int wae_remove_app_dek(const char* pPkgId, wae_app_type_e appType);


/**
 * @}
 */

#ifdef __cplusplus
}
#endif

#endif /* __WEB_APP_ENC__ */