1 /*
2  * Copyright (c) 2023-2024 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 "device_manager_service_impl_lite.h"
17 
18 #include <functional>
19 
20 #include "dm_anonymous.h"
21 #include "dm_constants.h"
22 #include "dm_log.h"
23 #include "app_manager.h"
24 
25 namespace OHOS {
26 namespace DistributedHardware {
DeviceManagerServiceImpl()27 DeviceManagerServiceImpl::DeviceManagerServiceImpl()
28 {
29     LOGI("DeviceManagerServiceImpl constructor");
30 }
31 
~DeviceManagerServiceImpl()32 DeviceManagerServiceImpl::~DeviceManagerServiceImpl()
33 {
34     LOGI("DeviceManagerServiceImpl destructor");
35 }
36 
Initialize(const std::shared_ptr<IDeviceManagerServiceListener> & listener)37 int32_t DeviceManagerServiceImpl::Initialize(const std::shared_ptr<IDeviceManagerServiceListener> &listener)
38 {
39     LOGI("DeviceManagerServiceImpl Initialize");
40     if (softbusConnector_ == nullptr) {
41         softbusConnector_ = std::make_shared<SoftbusConnector>();
42     }
43     if (hiChainConnector_ == nullptr) {
44         hiChainConnector_ = std::make_shared<HiChainConnector>();
45     }
46     if (mineHiChainConnector_ == nullptr) {
47         mineHiChainConnector_ = std::make_shared<MineHiChainConnector>();
48     }
49     if (hiChainAuthConnector_ == nullptr) {
50         hiChainAuthConnector_ = std::make_shared<HiChainAuthConnector>();
51     }
52     if (deviceStateMgr_ == nullptr) {
53         deviceStateMgr_ = std::make_shared<DmDeviceStateManager>(softbusConnector_, listener,
54                                                                  hiChainConnector_, hiChainAuthConnector_);
55     }
56     if (credentialMgr_ == nullptr) {
57         credentialMgr_ = std::make_shared<DmCredentialManager>(hiChainConnector_, listener);
58     }
59 
60     LOGI("Init success, singleton initialized");
61     return DM_OK;
62 }
63 
Release()64 void DeviceManagerServiceImpl::Release()
65 {
66     LOGI("DeviceManagerServiceImpl Release");
67     deviceStateMgr_ = nullptr;
68     softbusConnector_ = nullptr;
69     hiChainConnector_ = nullptr;
70     mineHiChainConnector_ = nullptr;
71 }
72 
StartDeviceDiscovery(const std::string & pkgName,const DmSubscribeInfo & subscribeInfo,const std::string & extra)73 int32_t DeviceManagerServiceImpl::StartDeviceDiscovery(const std::string &pkgName, const DmSubscribeInfo &subscribeInfo,
74     const std::string &extra)
75 {
76     (void)pkgName;
77     (void)subscribeInfo;
78     (void)extra;
79     return DM_OK;
80 }
81 
StartDeviceDiscovery(const std::string & pkgName,const uint16_t subscribeId,const std::string & filterOptions)82 int32_t DeviceManagerServiceImpl::StartDeviceDiscovery(const std::string &pkgName, const uint16_t subscribeId,
83     const std::string &filterOptions)
84 {
85     (void)pkgName;
86     (void)subscribeId;
87     (void)filterOptions;
88     return DM_OK;
89 }
90 
StopDeviceDiscovery(const std::string & pkgName,uint16_t subscribeId)91 int32_t DeviceManagerServiceImpl::StopDeviceDiscovery(const std::string &pkgName, uint16_t subscribeId)
92 {
93     (void)pkgName;
94     (void)subscribeId;
95     return DM_OK;
96 }
97 
PublishDeviceDiscovery(const std::string & pkgName,const DmPublishInfo & publishInfo)98 int32_t DeviceManagerServiceImpl::PublishDeviceDiscovery(const std::string &pkgName, const DmPublishInfo &publishInfo)
99 {
100     (void)pkgName;
101     (void)publishInfo;
102     return DM_OK;
103 }
104 
UnPublishDeviceDiscovery(const std::string & pkgName,int32_t publishId)105 int32_t DeviceManagerServiceImpl::UnPublishDeviceDiscovery(const std::string &pkgName, int32_t publishId)
106 {
107     (void)pkgName;
108     (void)publishId;
109     return DM_OK;
110 }
111 
AuthenticateDevice(const std::string & pkgName,int32_t authType,const std::string & deviceId,const std::string & extra)112 int32_t DeviceManagerServiceImpl::AuthenticateDevice(const std::string &pkgName, int32_t authType,
113     const std::string &deviceId, const std::string &extra)
114 {
115     (void)pkgName;
116     (void)authType;
117     (void)deviceId;
118     (void)extra;
119     return DM_OK;
120 }
121 
UnAuthenticateDevice(const std::string & pkgName,const std::string & networkId)122 int32_t DeviceManagerServiceImpl::UnAuthenticateDevice(const std::string &pkgName, const std::string &networkId)
123 {
124     (void)pkgName;
125     (void)networkId;
126     return DM_OK;
127 }
128 
BindDevice(const std::string & pkgName,int32_t authType,const std::string & udidHash,const std::string & bindParam)129 int32_t DeviceManagerServiceImpl::BindDevice(const std::string &pkgName, int32_t authType, const std::string &udidHash,
130     const std::string &bindParam)
131 {
132     (void)pkgName;
133     (void)authType;
134     (void)udidHash;
135     (void)bindParam;
136     return DM_OK;
137 }
138 
UnBindDevice(const std::string & pkgName,const std::string & udidHash)139 int32_t DeviceManagerServiceImpl::UnBindDevice(const std::string &pkgName, const std::string &udidHash)
140 {
141     (void)pkgName;
142     (void)udidHash;
143     return DM_OK;
144 }
145 
SetUserOperation(std::string & pkgName,int32_t action,const std::string & params)146 int32_t DeviceManagerServiceImpl::SetUserOperation(std::string &pkgName, int32_t action,
147     const std::string &params)
148 {
149     (void)pkgName;
150     (void)action;
151     (void)params;
152     return DM_OK;
153 }
154 
HandleDeviceStatusChange(DmDeviceState devState,DmDeviceInfo & devInfo)155 void DeviceManagerServiceImpl::HandleDeviceStatusChange(DmDeviceState devState, DmDeviceInfo &devInfo)
156 {
157     if (deviceStateMgr_ == nullptr) {
158         LOGE("deviceStateMgr_ is nullpter!");
159         return;
160     }
161     std::string deviceId = GetUdidHashByNetworkId(devInfo.networkId);
162     if (memcpy_s(devInfo.deviceId, DM_MAX_DEVICE_ID_LEN, deviceId.c_str(), deviceId.length()) != 0) {
163         LOGE("get deviceId: %{public}s failed", GetAnonyString(deviceId).c_str());
164     }
165     deviceStateMgr_->HandleDeviceStatusChange(devState, devInfo);
166 }
167 
GetUdidHashByNetworkId(const std::string & networkId)168 std::string DeviceManagerServiceImpl::GetUdidHashByNetworkId(const std::string &networkId)
169 {
170     if (softbusConnector_ == nullptr) {
171         LOGE("softbusConnector_ is nullpter!");
172         return "";
173     }
174     std::string udid = "";
175     int32_t ret = softbusConnector_->GetUdidByNetworkId(networkId.c_str(), udid);
176     if (ret != DM_OK) {
177         LOGE("GetUdidByNetworkId failed ret: %{public}d", ret);
178         return "";
179     }
180     return softbusConnector_->GetDeviceUdidHashByUdid(udid);
181 }
182 
OnSessionOpened(int sessionId,int result)183 int DeviceManagerServiceImpl::OnSessionOpened(int sessionId, int result)
184 {
185     (void)sessionId;
186     (void)result;
187     return DM_OK;
188 }
189 
OnSessionClosed(int sessionId)190 void DeviceManagerServiceImpl::OnSessionClosed(int sessionId)
191 {
192     (void)sessionId;
193 }
194 
OnBytesReceived(int sessionId,const void * data,unsigned int dataLen)195 void DeviceManagerServiceImpl::OnBytesReceived(int sessionId, const void *data, unsigned int dataLen)
196 {
197     (void)sessionId;
198     (void)data;
199     (void)dataLen;
200 }
201 
OnPinHolderSessionOpened(int sessionId,int result)202 int DeviceManagerServiceImpl::OnPinHolderSessionOpened(int sessionId, int result)
203 {
204     (void)sessionId;
205     (void)result;
206     return DM_OK;
207 }
208 
OnPinHolderSessionClosed(int sessionId)209 void DeviceManagerServiceImpl::OnPinHolderSessionClosed(int sessionId)
210 {
211     (void)sessionId;
212 }
213 
OnPinHolderBytesReceived(int sessionId,const void * data,unsigned int dataLen)214 void DeviceManagerServiceImpl::OnPinHolderBytesReceived(int sessionId, const void *data, unsigned int dataLen)
215 {
216     (void)sessionId;
217     (void)data;
218     (void)dataLen;
219 }
220 
RequestCredential(const std::string & reqJsonStr,std::string & returnJsonStr)221 int32_t DeviceManagerServiceImpl::RequestCredential(const std::string &reqJsonStr, std::string &returnJsonStr)
222 {
223     if (reqJsonStr.empty()) {
224         LOGE("reqJsonStr is empty");
225         return ERR_DM_INPUT_PARA_INVALID;
226     }
227     if (credentialMgr_== nullptr) {
228         LOGE("credentialMgr_ is nullptr");
229         return ERR_DM_POINT_NULL;
230     }
231     return credentialMgr_->RequestCredential(reqJsonStr, returnJsonStr);
232 }
233 
ImportCredential(const std::string & pkgName,const std::string & credentialInfo)234 int32_t DeviceManagerServiceImpl::ImportCredential(const std::string &pkgName, const std::string &credentialInfo)
235 {
236     if (pkgName.empty() || credentialInfo.empty()) {
237         LOGE("DeviceManagerServiceImpl::ImportCredential failed, pkgName is %{public}s, credentialInfo is %{public}s",
238             pkgName.c_str(), GetAnonyString(credentialInfo).c_str());
239         return ERR_DM_INPUT_PARA_INVALID;
240     }
241     if (credentialMgr_== nullptr) {
242         LOGE("credentialMgr_ is nullptr");
243         return ERR_DM_POINT_NULL;
244     }
245     return credentialMgr_->ImportCredential(pkgName, credentialInfo);
246 }
247 
DeleteCredential(const std::string & pkgName,const std::string & deleteInfo)248 int32_t DeviceManagerServiceImpl::DeleteCredential(const std::string &pkgName, const std::string &deleteInfo)
249 {
250     if (pkgName.empty() || deleteInfo.empty()) {
251         LOGE("DeviceManagerServiceImpl::DeleteCredential failed, pkgName is %{public}s, deleteInfo is %{public}s",
252             pkgName.c_str(), GetAnonyString(deleteInfo).c_str());
253         return ERR_DM_INPUT_PARA_INVALID;
254     }
255     if (credentialMgr_== nullptr) {
256         LOGE("credentialMgr_ is nullptr");
257         return ERR_DM_POINT_NULL;
258     }
259     return credentialMgr_->DeleteCredential(pkgName, deleteInfo);
260 }
261 
MineRequestCredential(const std::string & pkgName,std::string & returnJsonStr)262 int32_t DeviceManagerServiceImpl::MineRequestCredential(const std::string &pkgName, std::string &returnJsonStr)
263 {
264     (void)pkgName;
265     if (mineHiChainConnector_->RequestCredential(returnJsonStr) != DM_OK) {
266         LOGE("failed to get device credential from hichain");
267         return ERR_DM_HICHAIN_CREDENTIAL_REQUEST_FAILED;
268     }
269     return DM_OK;
270 }
271 
CheckCredential(const std::string & pkgName,const std::string & reqJsonStr,std::string & returnJsonStr)272 int32_t DeviceManagerServiceImpl::CheckCredential(const std::string &pkgName, const std::string &reqJsonStr,
273     std::string &returnJsonStr)
274 {
275     (void)pkgName;
276     if (reqJsonStr.empty()) {
277         LOGE("reqJsonStr is empty");
278         return ERR_DM_INPUT_PARA_INVALID;
279     }
280     if (mineHiChainConnector_->CheckCredential(reqJsonStr, returnJsonStr) != DM_OK) {
281         LOGE("failed to check devices credential status");
282         return ERR_DM_HICHAIN_CREDENTIAL_CHECK_FAILED;
283     }
284     return DM_OK;
285 }
286 
ImportCredential(const std::string & pkgName,const std::string & reqJsonStr,std::string & returnJsonStr)287 int32_t DeviceManagerServiceImpl::ImportCredential(const std::string &pkgName, const std::string &reqJsonStr,
288     std::string &returnJsonStr)
289 {
290     (void)pkgName;
291     if (reqJsonStr.empty()) {
292         LOGE("reqJsonStr is empty");
293         return ERR_DM_INPUT_PARA_INVALID;
294     }
295     if (mineHiChainConnector_->ImportCredential(reqJsonStr, returnJsonStr) != DM_OK) {
296         LOGE("failed to import devices credential");
297         return ERR_DM_HICHAIN_CREDENTIAL_IMPORT_FAILED;
298     }
299     return DM_OK;
300 }
301 
DeleteCredential(const std::string & pkgName,const std::string & reqJsonStr,std::string & returnJsonStr)302 int32_t DeviceManagerServiceImpl::DeleteCredential(const std::string &pkgName, const std::string &reqJsonStr,
303     std::string &returnJsonStr)
304 {
305     (void)pkgName;
306     if (reqJsonStr.empty()) {
307         LOGE("reqJsonStr is empty");
308         return ERR_DM_INPUT_PARA_INVALID;
309     }
310     if (mineHiChainConnector_->DeleteCredential(reqJsonStr, returnJsonStr) != DM_OK) {
311         LOGE("failed to delete devices credential");
312         return ERR_DM_HICHAIN_CREDENTIAL_DELETE_FAILED;
313     }
314     return DM_OK;
315 }
316 
RegisterCredentialCallback(const std::string & pkgName)317 int32_t DeviceManagerServiceImpl::RegisterCredentialCallback(const std::string &pkgName)
318 {
319     (void)pkgName;
320     return DM_OK;
321 }
322 
UnRegisterCredentialCallback(const std::string & pkgName)323 int32_t DeviceManagerServiceImpl::UnRegisterCredentialCallback(const std::string &pkgName)
324 {
325     (void)pkgName;
326     return DM_OK;
327 }
328 
RegisterUiStateCallback(const std::string & pkgName)329 int32_t DeviceManagerServiceImpl::RegisterUiStateCallback(const std::string &pkgName)
330 {
331     (void)pkgName;
332     return DM_OK;
333 }
334 
UnRegisterUiStateCallback(const std::string & pkgName)335 int32_t DeviceManagerServiceImpl::UnRegisterUiStateCallback(const std::string &pkgName)
336 {
337     (void)pkgName;
338     return DM_OK;
339 }
340 
NotifyEvent(const std::string & pkgName,const int32_t eventId,const std::string & event)341 int32_t DeviceManagerServiceImpl::NotifyEvent(const std::string &pkgName, const int32_t eventId,
342     const std::string &event)
343 {
344     (void)pkgName;
345     (void)eventId;
346     (void)event;
347     return DM_OK;
348 }
349 
GetGroupType(std::vector<DmDeviceInfo> & deviceList)350 int32_t DeviceManagerServiceImpl::GetGroupType(std::vector<DmDeviceInfo> &deviceList)
351 {
352     (void)deviceList;
353     return DM_OK;
354 }
355 
GetUdidHashByNetWorkId(const char * networkId,std::string & deviceId)356 int32_t DeviceManagerServiceImpl::GetUdidHashByNetWorkId(const char *networkId, std::string &deviceId)
357 {
358     (void)networkId;
359     (void)deviceId;
360     return DM_OK;
361 }
362 
ImportAuthCode(const std::string & pkgName,const std::string & authCode)363 int32_t DeviceManagerServiceImpl::ImportAuthCode(const std::string &pkgName, const std::string &authCode)
364 {
365     (void)pkgName;
366     (void)authCode;
367     return DM_OK;
368 }
369 
ExportAuthCode(std::string & authCode)370 int32_t DeviceManagerServiceImpl::ExportAuthCode(std::string &authCode)
371 {
372     (void)authCode;
373     return DM_OK;
374 }
375 
RegisterPinHolderCallback(const std::string & pkgName)376 int32_t DeviceManagerServiceImpl::RegisterPinHolderCallback(const std::string &pkgName)
377 {
378     (void)pkgName;
379     return DM_OK;
380 }
381 
CreatePinHolder(const std::string & pkgName,const PeerTargetId & targetId,DmPinType pinType,const std::string & payload)382 int32_t DeviceManagerServiceImpl::CreatePinHolder(const std::string &pkgName, const PeerTargetId &targetId,
383     DmPinType pinType, const std::string &payload)
384 {
385     (void)pkgName;
386     (void)targetId;
387     (void)pinType;
388     (void)payload;
389     return DM_OK;
390 }
391 
DestroyPinHolder(const std::string & pkgName,const PeerTargetId & targetId,DmPinType pinType,const std::string & payload)392 int32_t DeviceManagerServiceImpl::DestroyPinHolder(const std::string &pkgName, const PeerTargetId &targetId,
393     DmPinType pinType, const std::string &payload)
394 {
395     (void)pkgName;
396     (void)targetId;
397     (void)pinType;
398     (void)payload;
399     return DM_OK;
400 }
401 
BindTarget(const std::string & pkgName,const PeerTargetId & targetId,const std::map<std::string,std::string> & bindParam)402 int32_t DeviceManagerServiceImpl::BindTarget(const std::string &pkgName, const PeerTargetId &targetId,
403     const std::map<std::string, std::string> &bindParam)
404 {
405     (void)pkgName;
406     (void)targetId;
407     (void)bindParam;
408     return DM_OK;
409 }
410 
GetAppTrustDeviceIdList(std::string pkgname)411 std::unordered_map<std::string, DmAuthForm> DeviceManagerServiceImpl::GetAppTrustDeviceIdList(
412     std::string pkgname)
413 {
414     (void)pkgname;
415     std::unordered_map<std::string, DmAuthForm> tmp;
416     return tmp;
417 }
418 
OnUnbindSessionOpened(int32_t sessionId,PeerSocketInfo info)419 void DeviceManagerServiceImpl::OnUnbindSessionOpened(int32_t sessionId, PeerSocketInfo info)
420 {
421     (void)sessionId;
422     (void)info;
423 }
424 
OnUnbindSessionCloseed(int32_t sessionId)425 void DeviceManagerServiceImpl::OnUnbindSessionCloseed(int32_t sessionId)
426 {
427     (void)sessionId;
428 }
429 
OnUnbindBytesReceived(int32_t sessionId,const void * data,uint32_t dataLen)430 void DeviceManagerServiceImpl::OnUnbindBytesReceived(int32_t sessionId, const void *data, uint32_t dataLen)
431 {
432     (void)sessionId;
433     (void)data;
434     (void)dataLen;
435 }
436 
LoadHardwareFwkService()437 void DeviceManagerServiceImpl::LoadHardwareFwkService()
438 {
439 }
440 
DpAclAdd(const std::string & udid)441 int32_t DeviceManagerServiceImpl::DpAclAdd(const std::string &udid)
442 {
443     (void)udid;
444     return DM_OK;
445 }
446 
IsSameAccount(const std::string & udid)447 int32_t DeviceManagerServiceImpl::IsSameAccount(const std::string &udid)
448 {
449     (void)udid;
450     return DM_OK;
451 }
452 
AccountCommonEventCallback(int32_t userId,std::string commonEventType)453 void DeviceManagerServiceImpl::AccountCommonEventCallback(int32_t userId, std::string commonEventType)
454 {
455     (void)userId;
456     (void)commonEventType;
457 }
458 
ScreenCommonEventCallback(std::string commonEventType)459 void DeviceManagerServiceImpl::ScreenCommonEventCallback(std::string commonEventType)
460 {
461     (void)commonEventType;
462 }
463 
CheckIsSameAccount(const DmAccessCaller & caller,const std::string & srcUdid,const DmAccessCallee & callee,const std::string & sinkUdid)464 int32_t DeviceManagerServiceImpl::CheckIsSameAccount(const DmAccessCaller &caller, const std::string &srcUdid,
465     const DmAccessCallee &callee, const std::string &sinkUdid)
466 {
467     (void)caller;
468     (void)srcUdid;
469     (void)callee;
470     (void)sinkUdid;
471     return DM_OK;
472 }
473 
CheckAccessControl(const DmAccessCaller & caller,const std::string & srcUdid,const DmAccessCallee & callee,const std::string & sinkUdid)474 int32_t DeviceManagerServiceImpl::CheckAccessControl(const DmAccessCaller &caller, const std::string &srcUdid,
475     const DmAccessCallee &callee, const std::string &sinkUdid)
476 {
477     (void)caller;
478     (void)srcUdid;
479     (void)callee;
480     (void)sinkUdid;
481     return DM_OK;
482 }
483 
HandleDeviceNotTrust(const std::string & udid)484 void DeviceManagerServiceImpl::HandleDeviceNotTrust(const std::string &udid)
485 {
486     (void)udid;
487     return;
488 }
489 
HandleIdentAccountLogout(const std::string & udid,int32_t userId,const std::string & accountId)490 void DeviceManagerServiceImpl::HandleIdentAccountLogout(const std::string &udid, int32_t userId,
491     const std::string &accountId)
492 {
493     (void)udid;
494     (void)userId;
495     (void)accountId;
496 }
497 
HandleUserRemoved(int32_t preUserId)498 void DeviceManagerServiceImpl::HandleUserRemoved(int32_t preUserId)
499 {
500     (void)preUserId;
501 }
502 
GetDeviceIdAndBindType(int32_t userId,const std::string & accountId)503 std::map<std::string, int32_t> DeviceManagerServiceImpl::GetDeviceIdAndBindType(int32_t userId,
504     const std::string &accountId)
505 {
506     (void)userId;
507     (void)accountId;
508     return std::map<std::string, int32_t> {};
509 }
510 
StopAuthenticateDevice(const std::string & pkgName)511 int32_t DeviceManagerServiceImpl::StopAuthenticateDevice(const std::string &pkgName)
512 {
513     (void)pkgName;
514     return 0;
515 }
516 
HandleDeviceScreenStatusChange(DmDeviceInfo & devInfo)517 void DeviceManagerServiceImpl::HandleDeviceScreenStatusChange(DmDeviceInfo &devInfo)
518 {
519     (void)devInfo;
520     return;
521 }
522 
HandleCredentialAuthStatus(const std::string & proofInfo,uint16_t deviceTypeId,int32_t errcode)523 void DeviceManagerServiceImpl::HandleCredentialAuthStatus(const std::string &proofInfo, uint16_t deviceTypeId,
524     int32_t errcode)
525 {
526     (void)proofInfo;
527     (void)deviceTypeId;
528     (void)errcode;
529     return;
530 }
531 
CreateDMServiceObject(void)532 extern "C" IDeviceManagerServiceImpl *CreateDMServiceObject(void)
533 {
534     return new DeviceManagerServiceImpl;
535 }
536 } // namespace DistributedHardware
537 } // namespace OHOS