1 /*
2  * Copyright (c) 2021-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 #ifndef OS_ACCOUNT_INTERFACES_INNERKITS_OS_ACCOUNT_CONSTANT_H
16 #define OS_ACCOUNT_INTERFACES_INNERKITS_OS_ACCOUNT_CONSTANT_H
17 
18 #include <string>
19 #include <sys/sysinfo.h>
20 #include "os_account_info.h"
21 
22 namespace OHOS {
23 namespace AccountSA {
24 namespace Constants {
25 const std::string PATH_SEPARATOR = "/";
26 #ifndef ACCOUNT_TEST
27 const std::string USER_INFO_BASE = "/data/service/el1/public/account";
28 #else
29 const std::string USER_INFO_BASE = "/data/service/el1/public/account/test";
30 #endif // ACCOUNT_TEST
31 const std::string SYSTEM_ETC_BASE = "/system/etc/account";
32 const std::string OSACCOUNT_CONSTRAINTS_JSON_PATH = SYSTEM_ETC_BASE + PATH_SEPARATOR + "osaccount_constraints.json";
33 const std::string CONSTRAINTS_LIST_JSON_PATH = SYSTEM_ETC_BASE + PATH_SEPARATOR + "constraints_list_collection.json";
34 const std::string ACCOUNT_LIST_FILE_JSON_PATH = USER_INFO_BASE + PATH_SEPARATOR + "account_list.json";
35 const std::string ACCOUNT_INDEX_JSON_PATH = USER_INFO_BASE + PATH_SEPARATOR + "account_index_info.json";
36 const std::string ACCOUNT_INFO_DIGEST_FILE_PATH = USER_INFO_BASE + PATH_SEPARATOR + "account_info_digest.json";
37 const std::string BASE_OSACCOUNT_CONSTRAINTS_JSON_PATH =
38     USER_INFO_BASE + PATH_SEPARATOR + "base_os_account_constraints.json";
39 const std::string GLOBAL_OSACCOUNT_CONSTRAINTS_JSON_PATH =
40     USER_INFO_BASE + PATH_SEPARATOR + "global_os_account_constraints.json";
41 const std::string SPECIFIC_OSACCOUNT_CONSTRAINTS_JSON_PATH =
42     USER_INFO_BASE + PATH_SEPARATOR + "specific_os_account_constraints.json";
43 const char USER_PHOTO_FILE_PNG_NAME[] = "fase.png";
44 const char USER_PHOTO_FILE_JPG_NAME[] = "fase.jpg";
45 const char USER_PHOTO_FILE_TXT_NAME[] = "photo.txt";
46 const char USER_PHOTO_BASE_JPG_HEAD[] = "data:image/jpeg;base64,";
47 const char USER_PHOTO_BASE_PNG_HEAD[] = "data:image/png;base64,";
48 const char USER_INFO_FILE_NAME[] = "account_info.json";
49 const char USER_ADD_SECRET_FLAG_FILE_NAME[] = "add_secret_flag";
50 const char OPERATION_ACTIVATE[] = "activate";
51 const char OPERATION_CREATE[] = "create";
52 const char OPERATION_REMOVE[] = "remove";
53 const char OPERATION_SWITCH[] = "switch";
54 const char OPERATION_STOP[] = "stop";
55 const char OPERATION_START[] = "start";
56 const char OPERATION_UPDATE[] = "update";
57 const char OPERATION_UNLOCK[] = "unlock";
58 
59 // distributed database
60 const char APP_ID[] = "os_account_mgr_service";
61 const bool SYNC_OS_ACCOUNT_DATABASE = false;
62 const std::uint32_t DEVICE_UUID_LENGTH = 65;
63 
64 // uid judgment
65 const std::int32_t APP_UID_START = 2100;
66 const std::int32_t MAX_SYSTEM_UID_NUM = 2899;
67 
68 // subscribe
69 const int SUBSCRIBER_MAX_SIZE = 100;
70 // account restrict
71 const unsigned int LOCAL_NAME_MAX_SIZE = sysconf(_SC_LOGIN_NAME_MAX);
72 const unsigned int LOCAL_PHOTO_MAX_SIZE = 1024 * 1024;
73 const uint32_t SHORT_NAME_MAX_SIZE = 255;
74 const uint32_t IPC_WRITE_RAW_DATA_MAX_SIZE = 1024 * 1024 * 128;
75 
76 // domain info limits
77 const unsigned int DOMAIN_NAME_MAX_SIZE = 128;
78 
79 // constraint limits
80 const unsigned int CONSTRAINT_MAX_SIZE = 128;
81 
82 const std::int32_t ADMIN_LOCAL_ID = 0;
83 const int ADMIN_TYPE = -1;
84 const char ADMIN_LOCAL_NAME[] = "admin";
85 const char STANDARD_LOCAL_NAME[] = "user";
86 const std::int32_t START_USER_ID = 100;
87 const char START_USER_STRING_ID[] = "100";
88 const std::int32_t MAX_USER_ID = 10736; // Int32 maximum value divided by 200000
89 const std::int32_t INVALID_OS_ACCOUNT_ID = -1;
90 const size_t MAX_USER_ID_LENGTH = 4;
91 const int64_t SERIAL_NUMBER_NUM_START_FOR_ADMIN = 20210231;
92 const int64_t SERIAL_NUMBER_NUM_START = 1;
93 const int64_t CARRY_NUM = 100000000;
94 const bool IS_SERIAL_NUMBER_FULL_INIT_VALUE = false;
95 const int64_t TIME_WAIT_TIME_OUT = 5;
96 const std::int32_t WAIT_ONE_TIME = 1000;
97 const uint64_t DEFAULT_DISPALY_ID = 0;
98 const uint64_t INVALID_DISPALY_ID = -1ull;
99 
100 // an error code of ipc which means peer end is dead
101 const int32_t E_IPC_ERROR = 29189;
102 const int32_t E_IPC_SA_DIED = 32;
103 
104 // type template
105 const char DEVICE_OWNER_ID[] = "deviceOwnerId";
106 const char ALL_GLOBAL_CONSTRAINTS[] = "allGlobalConstraints";
107 const char ALL_SPECIFIC_CONSTRAINTS[] = "allSpecificConstraints";
108 const char USER_CONSTRAINTS_TEMPLATE[] = "UserConstraintsTemplate";
109 const char TYPE_LIST[] = "TypeList";
110 const char ACCOUNT_LIST[] = "AccountList";
111 const char NEXT_LOCAL_ID[] = "NextLocalId";
112 const char COUNT_ACCOUNT_NUM[] = "CountAccountNum";
113 const char MAX_ALLOW_CREATE_ACCOUNT_ID[] = "MaxAllowCreateAccountID";
114 const char SERIAL_NUMBER_NUM[] = "SerialNumber";
115 const char IS_MULTI_OS_ACCOUNT_ENABLE[] = "IsMultiOsAccountEnable";
116 const char IS_SERIAL_NUMBER_FULL[] = "isSerialNumberFull";
117 const char CONSTRAINTS_LIST[] = "constraints";
118 const char IS_ALLOWED_CREATE_ADMIN[] = "IsAllowedCreateAdmin";
119 const char LOCAL_NAME[] = "localName";
120 const char SHORT_NAME[] = "shortName";
121 
122 
123 // start type
124 const OS_ACCOUNT_SWITCH_MOD NOW_OS_ACCOUNT_SWITCH_MOD = OS_ACCOUNT_SWITCH_MOD::HOT_SWITCH;
125 };  // namespace Constants
126 }  // namespace AccountSA
127 }  // namespace OHOS
128 #endif  // OS_ACCOUNT_INTERFACES_INNERKITS_OS_ACCOUNT_CONSTANT_H
129