summaryrefslogtreecommitdiff
path: root/include/web_app_enc.h
blob: 2e31a3c9fb87bc8b649edefe5985c918151ec919 (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
/*
 *  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
 * @{
 */


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 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] isPreloaded True(!=0) if the application is preloaded, otherwise false(==0).
 * @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, int isPreloaded, 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] isPreloaded True(!=0) if the application is preloaded, otherwise false(==0).
 * @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, int isPreloaded, 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.
 *
 * @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);


/**
 * @}
 */

#ifdef __cplusplus
}
#endif

#endif /* __WEB_APP_ENC__ */