1 /*
2  * Copyright (c) 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 #include "dlfcn.h"
17 #include "account_log_wrapper.h"
18 #include "domain_plugin.h"
19 
20 namespace OHOS {
21 namespace AccountSA {
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 static const char* RIGHT_SO = "right.z.so";
26 static const char* RIGHT_ALL = "/rightPath/right.z.so";
27 static int g_a = 1;
28 static void* g_ptr = &g_a;
29 
dlclose(void * handler)30 int dlclose(void *handler)
31 {
32     if (handler == nullptr) {
33         ACCOUNT_LOGI("mock dlopen equal");
34         errno = 1;
35         return 1;
36     }
37     errno = 0;
38     return 0;
39 }
40 
dlerror(void)41 char *dlerror(void)
42 {
43     ACCOUNT_LOGI("mock dlerror enter");
44     if (errno == 0) {
45         return nullptr;
46     }
47     errno = 0;
48     return const_cast<char *>(RIGHT_SO);
49 }
50 
dlopen(const char * path,int flag)51 void *dlopen(const char* path, int flag)
52 {
53     ACCOUNT_LOGI("mock dlopen enter");
54     if (strcmp(path, RIGHT_SO) == 0 || strcmp(path, RIGHT_ALL) == 0) {
55         ACCOUNT_LOGI("mock dlopen equal");
56         return g_ptr;
57     }
58     return nullptr;
59 }
60 
AddServerConfig(const PluginString * parameters,const int32_t localId,PluginServerConfigInfo ** serverConfigInfo)61 PluginBussnessError* AddServerConfig(const PluginString *parameters, const int32_t localId,
62     PluginServerConfigInfo **serverConfigInfo)
63 {
64     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
65     if (error == nullptr) {
66         return nullptr;
67     }
68     error->code = 0;
69     error->msg.data = nullptr;
70     return error;
71 }
72 
RemoveServerConfig(const PluginString * serverConfigId,const int32_t localId)73 PluginBussnessError* RemoveServerConfig(const PluginString *serverConfigId, const int32_t localId)
74 {
75     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
76     if (error == nullptr) {
77         return nullptr;
78     }
79     error->code = 0;
80     error->msg.data = nullptr;
81     return error;
82 }
83 
GetAccountServerConfig(const PluginDomainAccountInfo * domainAccountInfo,PluginServerConfigInfo ** serverConfigInfo)84 PluginBussnessError* GetAccountServerConfig(const PluginDomainAccountInfo *domainAccountInfo,
85     PluginServerConfigInfo **serverConfigInfo)
86 {
87     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
88     if (error == nullptr) {
89         return nullptr;
90     }
91     error->code = 0;
92     error->msg.data = nullptr;
93     return error;
94 }
95 
Auth(const PluginDomainAccountInfo * domainAccountInfo,const PluginUint8Vector * credential,const int32_t localId,PluginAuthResultInfo ** authResultInfo)96 PluginBussnessError* Auth(const PluginDomainAccountInfo *domainAccountInfo,
97     const PluginUint8Vector *credential, const int32_t localId, PluginAuthResultInfo **authResultInfo)
98 {
99     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
100     if (error == nullptr) {
101         return nullptr;
102     }
103     error->code = 0;
104     error->msg.data = nullptr;
105     return error;
106 }
107 
AuthWithPopup(const PluginDomainAccountInfo * domainAccountInfo,PluginAuthResultInfo ** authResultInfo)108 PluginBussnessError* AuthWithPopup(const PluginDomainAccountInfo *domainAccountInfo,
109     PluginAuthResultInfo **authResultInfo)
110 {
111     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
112     if (error == nullptr) {
113         return nullptr;
114     }
115     error->code = 0;
116     error->msg.data = nullptr;
117     return error;
118 }
119 
AuthWithToken(const PluginDomainAccountInfo * domainAccountInfo,const PluginUint8Vector * token,PluginAuthResultInfo ** authResultInfo)120 PluginBussnessError* AuthWithToken(const PluginDomainAccountInfo *domainAccountInfo,
121     const PluginUint8Vector *token, PluginAuthResultInfo **authResultInfo)
122 {
123     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
124     if (error == nullptr) {
125         return nullptr;
126     }
127     error->code = 0;
128     error->msg.data = nullptr;
129     return error;
130 }
131 
GetAccountInfo(const PluginGetDomainAccountInfoOptions * options,const int32_t callerLocalId,PluginDomainAccountInfo ** domainAccountInfo)132 PluginBussnessError* GetAccountInfo(const PluginGetDomainAccountInfoOptions *options, const int32_t callerLocalId,
133     PluginDomainAccountInfo **domainAccountInfo)
134 {
135     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
136     if (error == nullptr) {
137         return nullptr;
138     }
139     error->code = 0;
140     error->msg.data = nullptr;
141     return error;
142 }
143 
GetAuthStatusInfo(const PluginDomainAccountInfo * domainAccountInfo,PluginAuthStatusInfo ** authStatusInfo)144 PluginBussnessError* GetAuthStatusInfo(const PluginDomainAccountInfo *domainAccountInfo,
145     PluginAuthStatusInfo **authStatusInfo)
146 {
147     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
148     if (error == nullptr) {
149         return nullptr;
150     }
151     error->code = 0;
152     error->msg.data = nullptr;
153     return error;
154 }
155 
BindAccount(const PluginDomainAccountInfo * domainAccountInfo,const int32_t localId,const int32_t callerLocalId)156 PluginBussnessError* BindAccount(const PluginDomainAccountInfo *domainAccountInfo, const int32_t localId,
157     const int32_t callerLocalId)
158 {
159     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
160     if (error == nullptr) {
161         return nullptr;
162     }
163     error->code = 0;
164     error->msg.data = nullptr;
165     return error;
166 }
167 
UnbindAccount(const PluginDomainAccountInfo * domainAccountInfo)168 PluginBussnessError* UnbindAccount(const PluginDomainAccountInfo *domainAccountInfo)
169 {
170     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
171     if (error == nullptr) {
172         return nullptr;
173     }
174     error->code = 0;
175     error->msg.data = nullptr;
176     return error;
177 }
178 
UpdateAccountInfo(const PluginDomainAccountInfo * domainAccountInfo,const PluginDomainAccountInfo * newDomainAccountInfo)179 PluginBussnessError* UpdateAccountInfo(const PluginDomainAccountInfo *domainAccountInfo,
180     const PluginDomainAccountInfo *newDomainAccountInfo)
181 {
182     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
183     if (error == nullptr) {
184         return nullptr;
185     }
186     error->code = 0;
187     error->msg.data = nullptr;
188     return error;
189 }
190 
IsAccountTokenValid(const PluginDomainAccountInfo * domainAccountInfo,const PluginUint8Vector * token,int32_t * isValid)191 PluginBussnessError* IsAccountTokenValid(const PluginDomainAccountInfo *domainAccountInfo,
192     const PluginUint8Vector *token, int32_t *isValid)
193 {
194     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
195     if (error == nullptr) {
196         return nullptr;
197     }
198     error->code = 0;
199     error->msg.data = nullptr;
200     return error;
201 }
202 
GetAccessToken(const PluginGetDomainAccessTokenOptions * options,PluginUint8Vector ** accessToken)203 PluginBussnessError* GetAccessToken(const PluginGetDomainAccessTokenOptions *options,
204     PluginUint8Vector **accessToken)
205 {
206     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
207     if (error == nullptr) {
208         return nullptr;
209     }
210     error->code = 0;
211     error->msg.data = nullptr;
212     return error;
213 }
214 
SetAccountPolicy(const PluginDomainAccountPolicy * domainAccountPolicy)215 PluginBussnessError* SetAccountPolicy(const PluginDomainAccountPolicy *domainAccountPolicy)
216 {
217     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
218     if (error == nullptr) {
219         return nullptr;
220     }
221     error->code = 0;
222     error->msg.data = nullptr;
223     return error;
224 }
225 
GetServerConfig(const PluginString * serverConfigId,const int32_t callerLocalId,PluginServerConfigInfo ** serverConfigInfo)226 PluginBussnessError* GetServerConfig(const PluginString *serverConfigId, const int32_t callerLocalId,
227     PluginServerConfigInfo **serverConfigInfo)
228 {
229     PluginBussnessError* error = (PluginBussnessError *)malloc(sizeof(PluginBussnessError));
230     if (error == nullptr) {
231         return nullptr;
232     }
233     error->code = 0;
234     error->msg.data = nullptr;
235     return error;
236 }
237 
dlsym(void * __restrict,const char * methodName)238 void *dlsym(void *__restrict, const char * methodName)
239 {
240     if (strcmp(methodName, "AddServerConfig") == 0) {
241         return reinterpret_cast<void *>(AddServerConfig);
242     }
243     if (strcmp(methodName, "RemoveServerConfig") == 0) {
244         return reinterpret_cast<void *>(RemoveServerConfig);
245     }
246     if (strcmp(methodName, "GetAccountServerConfig") == 0) {
247         return reinterpret_cast<void *>(GetAccountServerConfig);
248     }
249     if (strcmp(methodName, "Auth") == 0) {
250         return reinterpret_cast<void *>(Auth);
251     }
252     if (strcmp(methodName, "AuthWithPopup") == 0) {
253         return reinterpret_cast<void *>(AuthWithPopup);
254     }
255     if (strcmp(methodName, "AuthWithToken") == 0) {
256         return reinterpret_cast<void *>(AuthWithToken);
257     }
258     if (strcmp(methodName, "GetAccountInfo") == 0) {
259         return reinterpret_cast<void *>(GetAccountInfo);
260     }
261     if (strcmp(methodName, "GetAuthStatusInfo") == 0) {
262         return reinterpret_cast<void *>(GetAuthStatusInfo);
263     }
264     if (strcmp(methodName, "BindAccount") == 0) {
265         return reinterpret_cast<void *>(BindAccount);
266     }
267     if (strcmp(methodName, "UnbindAccount") == 0) {
268         return reinterpret_cast<void *>(UnbindAccount);
269     }
270     if (strcmp(methodName, "IsAccountTokenValid") == 0) {
271         return reinterpret_cast<void *>(IsAccountTokenValid);
272     }
273     if (strcmp(methodName, "GetAccessToken") == 0) {
274         return reinterpret_cast<void *>(GetAccessToken);
275     }
276     if (strcmp(methodName, "UpdateAccountInfo") == 0) {
277         return reinterpret_cast<void *>(UpdateAccountInfo);
278     }
279     if (strcmp(methodName, "SetAccountPolicy") == 0) {
280         return reinterpret_cast<void *>(SetAccountPolicy);
281     }
282     if (strcmp(methodName, "GetServerConfig") == 0) {
283         return reinterpret_cast<void *>(GetServerConfig);
284     }
285     return nullptr;
286 }
287 #ifdef __cplusplus
288 }
289 #endif
290 
291 }  // namespace AccountSA
292 }  // namespace OHOS