1  /*
2   * Copyright (c) 2020-2023 Huawei Device Co., Ltd.
3   * Licensed under the Apache License, Version 2.0 (the "License");
4   * you may not use this file except in compliance with the License.
5   * You may obtain a copy of the License at
6   *
7   *     http://www.apache.org/licenses/LICENSE-2.0
8   *
9   * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  
16  #ifndef OHOS_BUNDLE_COMMON_H
17  #define OHOS_BUNDLE_COMMON_H
18  
19  #include "pms.h"
20  
21  #ifdef __cplusplus
22  extern "C" {
23  #endif
24  #ifdef __cplusplus
25  }
26  #endif
27  
28  #include "ability_info.h"
29  #include "module_info.h"
30  #include "stdint.h"
31  
32  namespace OHOS {
33  const char PROFILE_NAME[] = "config.json";
34  const char SERVICE_NAME[] = "ohos.nfc.cardemulation.action.HOST_APDU_SERVICE";
35  const char JSON_SUFFIX[] = ".json";
36  const char PATH_SEPARATOR[] = "/";
37  const char FILE_DELIMITER[] = "_";
38  const char MODULE_ENTRY[] = "entry";
39  const char MODULE_FEATURE[] = "feature";
40  const uint16_t PATH_LENGTH = 256;
41  const uint8_t ICON_NUM = 2;
42  const uint16_t MAX_METADATA_NAME = 255;
43  const uint16_t MAX_METADATA_VALUE = 255;
44  const uint16_t MAX_NAME_LEN = 255;
45  const uint16_t MAX_DECRIPTION_LEN = 255;
46  const uint16_t MAX_VENDOR_LEN = 255;
47  const uint8_t MAX_MODULENAME_LEN = 31;
48  const uint8_t MAX_ABILITY_NAME_LEN = 255;
49  const int8_t PROFILE_INVALID = -1;
50  const int8_t BUNDLENAME_INVALID = -2;
51  const int8_t VERSION_CODE_INVALID = -3;
52  const uint8_t MAX_SINGLE_DIGIT_VALUE = 10;
53  const uint8_t ZERO_ASCII_NUM = 48;
54  // bundle type
55  const uint8_t SYSTEM_APP_FLAG = 0;
56  const uint8_t THIRD_SYSTEM_APP_FLAG = 1;
57  const uint8_t THIRD_APP_FLAG = 2;
58  
59  const uint8_t MIN_BUNDLE_NAME_LEN = 7;
60  const uint8_t MAX_BUNDLE_NAME_LEN = 127;
61  
62  const char LABEL_ID[] = "labelId";
63  const char ICON_ID[] = "iconId";
64  const char MODULE_DES_ID[] = "descriptionId";
65  const char ABILITY_DES_ID[] = "descriptionId";
66  const char RESOURCES_INDEX[] = "/resources.index";
67  const char DEFAULT_LABEL_SETTING[] = "$string:";
68  const char DEFAULT_DESC_SETTING[] = "$string:";
69  const char DEFAULT_ICON_SETTING_BEGIN[] = "$media:";
70  // app config
71  const char PROFILE_KEY_APP[] = "app";
72  const char PROFILE_KEY_VENDOR[] = "vendor";
73  const char PROFILE_KEY_BUNDLENAME[] = "bundleName";
74  const char PROFILE_KEY_VERSION[] = "version";
75  const char PROFILE_KEY_VERSION_CODE[] = "code";
76  const char PROFILE_KEY_VERSION_NAME[] = "name";
77  const char PROFILE_KEY_APIVERSION[] = "apiVersion";
78  const char PROFILE_KEY_APIVERSION_COMPATIBLE[] = "compatible";
79  const char PROFILE_KEY_APIVERSION_TARGET[] = "target";
80  const char PROFILE_KEY_SKILLS[] = "skills";
81  const char PROFILE_KEY_SKILLS_ENTITIES[] = "entities";
82  const char PROFILE_KEY_SKILLS_ACTIONS[] = "actions";
83  // deviceConfig
84  const char PROFILE_KEY_DEVICECONFIG[] = "deviceConfig";
85  const char PROFILE_KEY_DEVICECONFIG_DEFAULT[] = "default";
86  const char PROFILE_KEY_KEEPALIVE[] = "keepAlive";
87  // module config
88  const char PROFILE_KEY_MODULE[] = "module";
89  const char PROFILE_KEY_MODULE_NAME[] = "name";
90  const char PROFILE_KEY_MODULE_DESCRIPTION[] = "description";
91  const char PROFILE_KEY_MODULE_DEVICETYPE[] = "deviceType";
92  const char PROFILE_KEY_MODULE_DISTRO[] = "distro";
93  const char PROFILE_KEY_MODULE_DISTRO_DELIVERY[] = "deliveryWithInstall";
94  const char PROFILE_KEY_MODULE_DISTRO_MODULENAME[] = "moduleName";
95  const char PROFILE_KEY_MODULE_DISTRO_MODULETYPE[] = "moduleType";
96  const char PROFILE_KEY_MODULE_METADATA[] = "metaData";
97  const char PROFILE_KEY_MODULE_METADATA_CUSTOMIZEDATA[] = "customizeData";
98  const char PROFILE_KEY_MODULE_METADATA_NAME[] = "name";
99  const char PROFILE_KEY_MODULE_METADATA_VALUE[] = "value";
100  const char PROFILE_KEY_MODULE_METADATA_EXTRA[] = "extra";
101  const char PROFILE_KEY_MODULE_ABILITIES[] = "abilities";
102  const char PROFILE_KEY_MODULE_ABILITY_NAME[] = "name";
103  const char PROFILE_KEY_MODULE_ABLLITY_DESCRIPTION[] = "description";
104  const char PROFILE_KEY_MODULE_ABILITY_LABEL[] = "label";
105  const char PROFILE_KEY_MODULE_ABILITY_ICON[] = "icon";
106  const char PROFILE_KEY_MODULE_ABILITY_TYPE[] = "type";
107  const char PROFILE_KEY_MODULE_ABILITY_LAUNCHTYPE[] = "launchType";
108  const char PROFILE_KEY_MODULE_ABILITY_VISIBLE[] = "visible";
109  const char PROFILE_KEY_MODULE_ABILITY_DEVICE_CAP[] = "deviceCapability";
110  const char PROFILE_KEY_MODULE_ABILITY_SRC_PATH[] = "srcPath";
111  // js config
112  const char PROFILE_KEY_JS[] = "js";
113  
114  const char PROFILE_KEY_REQPERMISSIONS[] = "reqPermissions";
115  const char PROFILE_KEY_REQPERMISSIONS_NAME[] = "name";
116  const char PROFILE_KEY_REQPERMISSIONS_REASON[] = "reason";
117  const char PROFILE_KEY_REQPERMISSIONS_USEDSCENE[] = "usedScene";
118  const char PROFILE_KEY_REQPERMISSIONS_WHEN[] = "when";
119  
120  const char ASSETS[] = "/assets/";
121  
122  const char GRANTTIME_INUSE[] = "inuse";
123  const char GRANTTIME_ALWAYS[] = "always";
124  // shared lib path
125  const char SHARED_LIB_NAME[] = "shared_libs";
126  const char SHARED_LIB_PATH[] = "/storage/app/libs";
127  
128  #ifdef OHOS_APPEXECFWK_BMS_BUNDLEMANAGER
129  const char DEFAULT_DEVICE_TYPE[] = "smartVision";
130  const char INSTALL_PATH[] = "/storage/app/run";
131  const char DATA_PATH[] = "/storage/app/data";
132  const char JSON_PATH[] = "/storage/app/etc/bundles/";
133  const char EXTEANAL_INSTALL_PATH[] = "/sdcard/app/run";
134  const char EXTEANAL_DATA_PATH[] = "/sdcard/app/data";
135  const char SYSTEM_BUNDLE_PATH[] = "/system/internal";
136  const char THIRD_SYSTEM_BUNDLE_PATH[] = "/system/external";
137  const char UNINSTALL_THIRD_SYSTEM_BUNDLE_JSON[] = "/storage/app/etc/uninstalled_delbundle.json";
138  const char THIRD_SYSTEM_BUNDLE_JSON[] = "/storage/app/etc/third_system_bundle.json";
139  const char UID_GID_MAP[] = "uid_gid_map";
140  const char INSTALL_FILE_SUFFIX[] = ".hap";
141  // uid and gid
142  const int8_t INVALID_UID = -1;
143  const int8_t INVALID_GID = -1;
144  const uint32_t BASE_SYS_UID = 100;
145  const uint32_t BASE_SYS_VEN_UID = 1000;
146  const uint32_t MAX_SYS_VEN_UID = 9999;
147  const uint32_t BASE_APP_UID = 10000;
148  const char PROFILE_KEY_UID_SIZE[] = "size";
149  const char PROFILE_KEY_UID_AND_GID[] = "uid_and_gid";
150  
151  const uint8_t MAX_VERSION_NAME_LEN = 127;
152  const uint16_t MAX_LABLE_LEN = 255;
153  #else
154  const char DEFAULT_DEVICE_TYPE[] = "fitnessWatch";
155  const char INSTALL_PATH[] = "user/ace/run";
156  const char DATA_PATH[] = "user/ace/data";
157  const char SYSTEM_BUNDLE_PATH[] = "system/ace/sys";
158  const char THIRD_SYSTEM_BUNDLE_PATH[] = "system/ace/vendor";
159  const char UNINSTALL_THIRD_SYSTEM_BUNDLE_JSON[] = "user/ace/etc/uninstalled_delbundle.json";
160  const char THIRD_SYSTEM_BUNDLE_JSON[] = "user/ace/etc/third_system_bundle.json";
161  const char JSON_PATH[] = "user/ace/etc/bundles/";
162  const char JSON_PATH_NO_SLASH_END[] = "user/ace/etc/bundles";
163  // store bundle permissions for IAM
164  const char PERMISSIONS_PATH[] = "user/ace/etc/permissions";
165  const char ASSET_JS_PATH[] = "/assets/js/default";
166  const char NEW_ASSET_JS_PATH[] = "/assets/js/MainAbility";
167  const char ASSET_PATH[] = "/assets/js/";
168  const char ICON_NAME[] = "/icon.bin";
169  const char SMALL_ICON_NAME[] = "/icon_small.bin";
170  const char ICON_PNG_NAME[] = "/icon.png.bin";
171  const char SMALL_ICON_PNG_NAME[] = "/icon_small.png.bin";
172  const char DEFAULT_ICON_SETTING[] = "$media:icon";
173  const char INSTALL_FILE_SUFFIX[] = ".bin";
174  const char TMP_RESOURCE_DIR[] = "user/ace/run/tmpResource";
175  const char RESOURCES_RAW_FILE[] = "/resources/rawfile";
176  const char RAW_FILE[] = "/rawfile";
177  const uint16_t READ_SIZE = 1024 * 4;
178  const uint8_t MAGIC_NUMBER_LEN = 1;
179  const uint8_t INT_LENGTH = 4;
180  const uint8_t LONG_LENGTH = 8;
181  const uint16_t MAX_INT = 256;
182  const uint8_t MAX_VERSION_NAME_LEN = 20;
183  const uint8_t MAX_LABLE_LEN = 30;
184  const uint8_t MAX_THIRD_BUNDLE_NUMBER = 45;
185  
186  struct SignatureInfo {
187      char *bundleName;
188      char *appId;
189      char **restricPermission;
190      uint32_t restricNum;
191  };
192  #endif
193  // InstallRecord key
194  const char JSON_MAIN_KEY[] = "packages";
195  const char JSON_SUB_KEY_PACKAGE[] = "bundleName";
196  const char JSON_SUB_KEY_CODEPATH[] = "codePath";
197  const char JSON_SUB_KEY_APPID[] = "appID";
198  const char JSON_SUB_KEY_VERSIONCODE[] = "versionCode";
199  const char JSON_SUB_KEY_JSENGINE_VERSION[] = "JsEngineVersion";
200  const char JSON_SUB_KEY_TRANSFORM_RESULT[] = "transformResult";
201  #ifdef OHOS_APPEXECFWK_BMS_BUNDLEMANAGER
202  const char JSON_SUB_KEY_UID[] = "uid";
203  const char JSON_SUB_KEY_GID[] = "gid";
204  #endif
205  
206  struct ProfileVersion {
207  #ifdef __LITEOS_M__
208      int32_t versionCode;
209  #else
210      uint32_t versionCode;
211  #endif
212      char *versionName;
213  };
214  
215  struct ProfileApiVersion {
216      int32_t minApiVersion;
217      int32_t maxApiVersion;
218  };
219  
220  struct AbilityRes {
221      uint32_t iconId;
222      uint32_t labelId;
223      uint32_t descriptionId;
224      uint32_t index;
225  };
226  
227  struct BundleRes {
228      char *bundleName;
229      uint32_t moduleDescriptionId;
230      AbilityRes *abilityRes;
231      uint32_t totalNumOfAbilityRes;
232  };
233  
234  struct BundleProfile {
235  #ifdef OHOS_APPEXECFWK_BMS_BUNDLEMANAGER
236      bool isKeepAlive;
237      bool isNativeApp;
238  #endif
239      char *bundleName;
240      char *vendor;
241      char *label;
242      char *iconPath;
243      char *srcPath = nullptr;
244      ProfileVersion profileVersion;
245      ProfileApiVersion profileApiVersion;
246      ModuleInfo moduleInfo;
247      AbilityInfo *abilityInfos;
248      uint32_t numOfAbility;
249  };
250  
251  struct Permissions {
252      int32_t permNum;
253      PermissionTrans *permissionTrans;
254  };
255  
256  struct InstallRecord {
257      char *bundleName;
258      char *codePath;
259      char *appId; // it contains bundleName and cert publicKey
260  #ifndef OHOS_APPEXECFWK_BMS_BUNDLEMANAGER
261  #ifndef __LINUX__
262  #ifdef BC_TRANS_ENABLE
263      char *jsEngineVersion;
264      int32_t transformResult; // 0: success, -1: fail
265  #endif
266  #endif
267  #endif
268      int32_t versionCode;
269  #ifdef OHOS_APPEXECFWK_BMS_BUNDLEMANAGER
270      int32_t uid;
271      int32_t gid;
272  #endif
273  };
274  }  // namespace OHOS
275  #endif  // OHOS_BUNDLE_COMMON_H
276