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) 2016 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 APIs of WEB_APP_ENC module.
*/
#ifndef __WEB_APP_ENC__
#define __WEB_APP_ENC__
#ifdef __cplusplus
extern "C" {
#endif
#include <stddef.h>
/**
* @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] pkg_id The package id of an application
* @param[in] app_type The application type
* @param[in] data The data block to be encrypted
* @param[in] data_len The length of @a data
* @param[out] pencrypted_data The data block contaning encrypted data block which must be freed by free()
* @param[out] pencrypted_data_len The length of data pointed by @a pencrypted_data
*
* @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 *pkg_id, wae_app_type_e app_type,
const unsigned char *data, size_t data_len,
unsigned char **pencrypted_data, size_t *pencrypted_data_len);
/**
* @brief Encrypts web application data with internal key.
*
* @since_tizen 3.0
* @param[in] pkg_id The package id of an application
* @param[in] app_type The application type
* @param[in] data The data block to be decrypted
* @param[in] data_len The length of @a data
* @param[out] pdecrypted_data Data block contaning decrypted data block which must be freed by free()
* @param[out] pdecrypted_data_len The length of data pointed by @a pdecrypted_data
*
* @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 *pkg_id, wae_app_type_e app_type,
const unsigned char *data, size_t data_len,
unsigned char **pdecrypted_data, size_t *pdecrypted_data_len);
/**
* @brief Remove a APP DEK(Application Data Encryption Key) used for encrytpion and decryption of a web application.
*
* @since_tizen 3.0
* @param[in] pkg_id The package id of an application
* @param[in] app_type 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 *pkg_id, wae_app_type_e app_type);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __WEB_APP_ENC__ */
|