• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2025 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 "lnn_node_info.h"
17 
18 #include <string.h>
19 
20 #include <securec.h>
21 
22 #include "anonymizer.h"
23 #include "lnn_log.h"
24 #include "softbus_adapter_crypto.h"
25 #include "softbus_error_code.h"
26 #include "softbus_utils.h"
27 
28 #define DYNAMIC_LEVEL_INVALID 0xFFFF
29 #define STATIC_LEVEL_INVALID 0xFFFF
30 #define SWITCH_LEVEL_INVALID 0xFFFFFFFF
31 #define SWTICH_LENGTH_INVALID 0xFFFF
32 #define SWITCH_MAX_LENGTH 24
33 
LnnHasDiscoveryType(const NodeInfo * info,DiscoveryType type)34 bool LnnHasDiscoveryType(const NodeInfo *info, DiscoveryType type)
35 {
36     if (info == NULL || type >= DISCOVERY_TYPE_COUNT) {
37         LNN_LOGE(LNN_LEDGER, "para error");
38         return false;
39     }
40     if (((uint32_t)info->discoveryType & (1 << (uint32_t)type)) != 0) {
41         return true;
42     }
43     return false;
44 }
45 
LnnGetDeviceUdid(const NodeInfo * info)46 const char *LnnGetDeviceUdid(const NodeInfo *info)
47 {
48     if (info == NULL) {
49         return NULL;
50     }
51     return info->deviceInfo.deviceUdid;
52 }
53 
LnnSetDeviceUdid(NodeInfo * info,const char * udid)54 int32_t LnnSetDeviceUdid(NodeInfo *info, const char *udid)
55 {
56     if (info == NULL || udid == NULL) {
57         return SOFTBUS_INVALID_PARAM;
58     }
59     if (strncpy_s(info->deviceInfo.deviceUdid, UDID_BUF_LEN, udid, strlen(udid)) != EOK) {
60         LNN_LOGE(LNN_LEDGER, "STR COPY ERROR");
61         return SOFTBUS_MEM_ERR;
62     }
63     return SOFTBUS_OK;
64 }
65 
LnnGetDeviceUuid(const NodeInfo * info)66 const char *LnnGetDeviceUuid(const NodeInfo *info)
67 {
68     if (info == NULL) {
69         return NULL;
70     }
71     return info->uuid;
72 }
73 
LnnSetDiscoveryType(NodeInfo * info,DiscoveryType type)74 int32_t LnnSetDiscoveryType(NodeInfo *info, DiscoveryType type)
75 {
76     if (info == NULL || type >= DISCOVERY_TYPE_COUNT) {
77         LNN_LOGE(LNN_LEDGER, "para error");
78         return SOFTBUS_INVALID_PARAM;
79     }
80     info->discoveryType = (uint32_t)info->discoveryType | (1 << (uint32_t)type);
81     return SOFTBUS_OK;
82 }
83 
LnnClearDiscoveryType(NodeInfo * info,DiscoveryType type)84 int32_t LnnClearDiscoveryType(NodeInfo *info, DiscoveryType type)
85 {
86     if (info == NULL || type >= DISCOVERY_TYPE_COUNT) {
87         LNN_LOGE(LNN_LEDGER, "para error");
88         return SOFTBUS_INVALID_PARAM;
89     }
90     info->discoveryType = (uint32_t)info->discoveryType & ~(1 << (uint32_t)type);
91     return SOFTBUS_OK;
92 }
93 
LnnIsNodeOnline(const NodeInfo * info)94 bool LnnIsNodeOnline(const NodeInfo *info)
95 {
96     if (info == NULL) {
97         LNN_LOGE(LNN_LEDGER, "para error");
98         return false;
99     }
100     return (info->status == STATUS_ONLINE);
101 }
102 
LnnSetNodeConnStatus(NodeInfo * info,ConnectStatus status)103 void LnnSetNodeConnStatus(NodeInfo *info, ConnectStatus status)
104 {
105     if (info == NULL) {
106         LNN_LOGE(LNN_LEDGER, "para error");
107         return;
108     }
109     info->status = status;
110 }
111 
LnnGetBtMac(const NodeInfo * info)112 const char *LnnGetBtMac(const NodeInfo *info)
113 {
114     if (info == NULL) {
115         LNN_LOGE(LNN_LEDGER, "para error");
116         return DEFAULT_MAC;
117     }
118     return info->connectInfo.macAddr;
119 }
120 
LnnSetBtMac(NodeInfo * info,const char * mac)121 void LnnSetBtMac(NodeInfo *info, const char *mac)
122 {
123     if (info == NULL || mac == NULL) {
124         LNN_LOGE(LNN_LEDGER, "PARA ERROR");
125         return;
126     }
127     if (strncpy_s(info->connectInfo.macAddr, MAC_LEN, mac, strlen(mac)) != EOK) {
128         LNN_LOGE(LNN_LEDGER, "str copy error");
129     }
130     return;
131 }
132 
LnnGetBleMac(const NodeInfo * info)133 const char *LnnGetBleMac(const NodeInfo *info)
134 {
135     if (info == NULL) {
136         LNN_LOGE(LNN_LEDGER, "PARA ERROR");
137         return DEFAULT_MAC;
138     }
139     return info->connectInfo.bleMacAddr;
140 }
141 
LnnSetBleMac(NodeInfo * info,const char * mac)142 void LnnSetBleMac(NodeInfo *info, const char *mac)
143 {
144     if (info == NULL || mac == NULL) {
145         LNN_LOGE(LNN_LEDGER, "PARA ERROR");
146         return;
147     }
148     if (strcpy_s(info->connectInfo.bleMacAddr, MAC_LEN, mac) != EOK) {
149         LNN_LOGE(LNN_LEDGER, "str copy error");
150     }
151 }
152 
LnnGetNetIfName(const NodeInfo * info,int32_t ifnameIdx)153 const char *LnnGetNetIfName(const NodeInfo *info, int32_t ifnameIdx)
154 {
155     if (info == NULL || isIfnameIdxInvalid(ifnameIdx)) {
156         LNN_LOGE(LNN_LEDGER, "para error");
157         return DEFAULT_IFNAME;
158     }
159     return info->connectInfo.ifInfo[ifnameIdx].netIfName;
160 }
161 
LnnSetNetIfName(NodeInfo * info,const char * netIfName,int32_t ifnameIdx)162 void LnnSetNetIfName(NodeInfo *info, const char *netIfName, int32_t ifnameIdx)
163 {
164     if (info == NULL || netIfName == NULL || isIfnameIdxInvalid(ifnameIdx)) {
165         LNN_LOGE(LNN_LEDGER, "PARA ERROR");
166         return;
167     }
168     if (strncpy_s(info->connectInfo.ifInfo[ifnameIdx].netIfName, NET_IF_NAME_LEN,
169         netIfName, strlen(netIfName)) != EOK) {
170         LNN_LOGE(LNN_LEDGER, "str copy error");
171     }
172 }
173 
LnnGetWiFiIp(const NodeInfo * info,int32_t ifnameIdx)174 const char *LnnGetWiFiIp(const NodeInfo *info, int32_t ifnameIdx)
175 {
176     if (info == NULL || isIfnameIdxInvalid(ifnameIdx)) {
177         LNN_LOGE(LNN_LEDGER, "PARA error");
178         return DEFAULT_IP;
179     }
180     return info->connectInfo.ifInfo[ifnameIdx].deviceIp;
181 }
182 
LnnSetWiFiIp(NodeInfo * info,const char * ip,int32_t ifnameIdx)183 void LnnSetWiFiIp(NodeInfo *info, const char *ip, int32_t ifnameIdx)
184 {
185     if (info == NULL || ip == NULL || isIfnameIdxInvalid(ifnameIdx)) {
186         LNN_LOGE(LNN_LEDGER, "PARA ERROR");
187         return;
188     }
189     if (strncpy_s(info->connectInfo.ifInfo[ifnameIdx].deviceIp, sizeof(info->connectInfo.ifInfo[ifnameIdx].deviceIp),
190         ip, strlen(ip)) != EOK) {
191         LNN_LOGE(LNN_LEDGER, "STR COPY ERROR");
192     }
193 }
194 
LnnGetMasterUdid(const NodeInfo * info)195 const char *LnnGetMasterUdid(const NodeInfo *info)
196 {
197     if (info == NULL) {
198         LNN_LOGE(LNN_LEDGER, "PARA ERROR");
199         return NULL;
200     }
201     return info->masterUdid;
202 }
203 
LnnSetMasterUdid(NodeInfo * info,const char * udid)204 int32_t LnnSetMasterUdid(NodeInfo *info, const char *udid)
205 {
206     if (info == NULL || udid == NULL) {
207         LNN_LOGE(LNN_LEDGER, "PARA ERROR");
208         return SOFTBUS_INVALID_PARAM;
209     }
210     if (strncpy_s(info->masterUdid, UDID_BUF_LEN, udid, strlen(udid)) != EOK) {
211         LNN_LOGE(LNN_LEDGER, "STR COPY ERROR");
212         return SOFTBUS_STRCPY_ERR;
213     }
214     return SOFTBUS_OK;
215 }
216 
LnnGetAuthPort(const NodeInfo * info,int32_t ifnameIdx)217 int32_t LnnGetAuthPort(const NodeInfo *info, int32_t ifnameIdx)
218 {
219     if (info == NULL || isIfnameIdxInvalid(ifnameIdx)) {
220         LNN_LOGE(LNN_LEDGER, "para error");
221         return SOFTBUS_INVALID_PARAM;
222     }
223     return info->connectInfo.ifInfo[ifnameIdx].authPort;
224 }
225 
LnnSetAuthPort(NodeInfo * info,int32_t port,int32_t ifnameIdx)226 int32_t LnnSetAuthPort(NodeInfo *info, int32_t port, int32_t ifnameIdx)
227 {
228     if (info == NULL || isIfnameIdxInvalid(ifnameIdx)) {
229         LNN_LOGE(LNN_LEDGER, "para error");
230         return SOFTBUS_INVALID_PARAM;
231     }
232     info->connectInfo.ifInfo[ifnameIdx].authPort = port;
233     return SOFTBUS_OK;
234 }
235 
LnnGetSessionPort(const NodeInfo * info,int32_t ifnameIdx)236 int32_t LnnGetSessionPort(const NodeInfo *info, int32_t ifnameIdx)
237 {
238     if (info == NULL || isIfnameIdxInvalid(ifnameIdx)) {
239         LNN_LOGE(LNN_LEDGER, "para error");
240         return SOFTBUS_INVALID_PARAM;
241     }
242     return info->connectInfo.ifInfo[ifnameIdx].sessionPort;
243 }
244 
LnnSetSessionPort(NodeInfo * info,int32_t port,int32_t ifnameIdx)245 int32_t LnnSetSessionPort(NodeInfo *info, int32_t port, int32_t ifnameIdx)
246 {
247     if (info == NULL || isIfnameIdxInvalid(ifnameIdx)) {
248         LNN_LOGE(LNN_LEDGER, "para error");
249         return SOFTBUS_INVALID_PARAM;
250     }
251     info->connectInfo.ifInfo[ifnameIdx].sessionPort = port;
252     return SOFTBUS_OK;
253 }
254 
LnnGetProxyPort(const NodeInfo * info,int32_t ifnameIdx)255 int32_t LnnGetProxyPort(const NodeInfo *info, int32_t ifnameIdx)
256 {
257     if (info == NULL || isIfnameIdxInvalid(ifnameIdx)) {
258         LNN_LOGE(LNN_LEDGER, "para error");
259         return SOFTBUS_INVALID_PARAM;
260     }
261     return info->connectInfo.ifInfo[ifnameIdx].proxyPort;
262 }
263 
LnnSetProxyPort(NodeInfo * info,int32_t port,int32_t ifnameIdx)264 int32_t LnnSetProxyPort(NodeInfo *info, int32_t port, int32_t ifnameIdx)
265 {
266     if (info == NULL || isIfnameIdxInvalid(ifnameIdx)) {
267         LNN_LOGE(LNN_LEDGER, "para error");
268         return SOFTBUS_INVALID_PARAM;
269     }
270     info->connectInfo.ifInfo[ifnameIdx].proxyPort = port;
271     return SOFTBUS_OK;
272 }
273 
LnnSetP2pRole(NodeInfo * info,int32_t p2pRole)274 int32_t LnnSetP2pRole(NodeInfo *info, int32_t p2pRole)
275 {
276     if (info == NULL) {
277         LNN_LOGE(LNN_LEDGER, "invalid param");
278         return SOFTBUS_INVALID_PARAM;
279     }
280     info->p2pInfo.p2pRole = p2pRole;
281     return SOFTBUS_OK;
282 }
283 
LnnGetP2pRole(const NodeInfo * info)284 int32_t LnnGetP2pRole(const NodeInfo *info)
285 {
286     if (info == NULL) {
287         LNN_LOGE(LNN_LEDGER, "invalid param");
288         return 0;
289     }
290     return info->p2pInfo.p2pRole;
291 }
292 
LnnSetWifiCfg(NodeInfo * info,const char * wifiCfg)293 int32_t LnnSetWifiCfg(NodeInfo *info, const char *wifiCfg)
294 {
295     if (info == NULL || wifiCfg == NULL) {
296         LNN_LOGE(LNN_LEDGER, "invalid param");
297         return SOFTBUS_INVALID_PARAM;
298     }
299     if (strcpy_s(info->p2pInfo.wifiCfg, sizeof(info->p2pInfo.wifiCfg), wifiCfg) != EOK) {
300         LNN_LOGE(LNN_LEDGER, "strcpy_s wifi cfg err");
301         return SOFTBUS_MEM_ERR;
302     }
303     return SOFTBUS_OK;
304 }
305 
LnnGetWifiCfg(const NodeInfo * info)306 const char *LnnGetWifiCfg(const NodeInfo *info)
307 {
308     if (info == NULL) {
309         LNN_LOGE(LNN_LEDGER, "invalid param");
310         return NULL;
311     }
312     return info->p2pInfo.wifiCfg;
313 }
314 
LnnSetChanList5g(NodeInfo * info,const char * chanList5g)315 int32_t LnnSetChanList5g(NodeInfo *info, const char *chanList5g)
316 {
317     if (info == NULL || chanList5g == NULL) {
318         LNN_LOGE(LNN_LEDGER, "invalid param");
319         return SOFTBUS_INVALID_PARAM;
320     }
321     if (strcpy_s(info->p2pInfo.chanList5g, sizeof(info->p2pInfo.chanList5g), chanList5g) != EOK) {
322         LNN_LOGE(LNN_LEDGER, "strcpy_s chan list 5g err");
323         return SOFTBUS_MEM_ERR;
324     }
325     return SOFTBUS_OK;
326 }
327 
LnnGetChanList5g(const NodeInfo * info)328 const char *LnnGetChanList5g(const NodeInfo *info)
329 {
330     if (info == NULL) {
331         LNN_LOGE(LNN_LEDGER, "invalid param");
332         return NULL;
333     }
334     return info->p2pInfo.chanList5g;
335 }
336 
LnnSetStaFrequency(NodeInfo * info,int32_t staFrequency)337 int32_t LnnSetStaFrequency(NodeInfo *info, int32_t staFrequency)
338 {
339     if (info == NULL) {
340         LNN_LOGE(LNN_LEDGER, "invalid param");
341         return SOFTBUS_INVALID_PARAM;
342     }
343     info->p2pInfo.staFrequency = staFrequency;
344     return SOFTBUS_OK;
345 }
346 
LnnGetStaFrequency(const NodeInfo * info)347 int32_t LnnGetStaFrequency(const NodeInfo *info)
348 {
349     if (info == NULL) {
350         LNN_LOGE(LNN_LEDGER, "invalid param");
351         return 0;
352     }
353     return info->p2pInfo.staFrequency;
354 }
355 
LnnSetP2pMac(NodeInfo * info,const char * p2pMac)356 int32_t LnnSetP2pMac(NodeInfo *info, const char *p2pMac)
357 {
358     if (info == NULL || p2pMac == NULL) {
359         LNN_LOGE(LNN_LEDGER, "invalid param");
360         return SOFTBUS_INVALID_PARAM;
361     }
362     if (strcpy_s(info->p2pInfo.p2pMac, sizeof(info->p2pInfo.p2pMac), p2pMac) != EOK) {
363         LNN_LOGE(LNN_LEDGER, "strcpy_s p2p mac err");
364         return SOFTBUS_MEM_ERR;
365     }
366     return SOFTBUS_OK;
367 }
368 
LnnGetP2pMac(const NodeInfo * info)369 const char *LnnGetP2pMac(const NodeInfo *info)
370 {
371     if (info == NULL) {
372         LNN_LOGE(LNN_LEDGER, "invalid param");
373         return NULL;
374     }
375     return info->p2pInfo.p2pMac;
376 }
377 
LnnGetWifiDirectAddr(const NodeInfo * info)378 const char *LnnGetWifiDirectAddr(const NodeInfo *info)
379 {
380     if (info == NULL) {
381         LNN_LOGE(LNN_LEDGER, "invalid param");
382         return NULL;
383     }
384     return info->wifiDirectAddr;
385 }
386 
LnnSetDataChangeFlag(NodeInfo * info,uint16_t dataChangeFlag)387 int32_t LnnSetDataChangeFlag(NodeInfo *info, uint16_t dataChangeFlag)
388 {
389     if (info == NULL) {
390         LNN_LOGE(LNN_LEDGER, "invalid param");
391         return SOFTBUS_INVALID_PARAM;
392     }
393     info->dataChangeFlag = dataChangeFlag;
394     return SOFTBUS_OK;
395 }
396 
LnnGetDataChangeFlag(const NodeInfo * info)397 uint16_t LnnGetDataChangeFlag(const NodeInfo *info)
398 {
399     if (info == NULL) {
400         LNN_LOGE(LNN_LEDGER, "invalid param");
401         return 0;
402     }
403     return info->dataChangeFlag;
404 }
405 
LnnGetDataDynamicLevel(const NodeInfo * info)406 uint16_t LnnGetDataDynamicLevel(const NodeInfo *info)
407 {
408     if (info == NULL) {
409         LNN_LOGE(LNN_LEDGER, "invalid param");
410         return DYNAMIC_LEVEL_INVALID;
411     }
412     return info->dataDynamicLevel;
413 }
414 
LnnSetDataDynamicLevel(NodeInfo * info,uint16_t dataDynamicLevel)415 int32_t LnnSetDataDynamicLevel(NodeInfo *info, uint16_t dataDynamicLevel)
416 {
417     if (info == NULL) {
418         LNN_LOGE(LNN_LEDGER, "invalid param");
419         return SOFTBUS_INVALID_PARAM;
420     }
421     info->dataDynamicLevel = dataDynamicLevel;
422     return SOFTBUS_OK;
423 }
424 
LnnGetDataStaticLevel(const NodeInfo * info)425 uint16_t LnnGetDataStaticLevel(const NodeInfo *info)
426 {
427     if (info == NULL) {
428         LNN_LOGE(LNN_LEDGER, "invalid param");
429         return STATIC_LEVEL_INVALID;
430     }
431     return info->dataStaticLevel;
432 }
433 
LnnSetDataStaticLevel(NodeInfo * info,uint16_t dataStaticLevel)434 int32_t LnnSetDataStaticLevel(NodeInfo *info, uint16_t dataStaticLevel)
435 {
436     if (info == NULL) {
437         LNN_LOGE(LNN_LEDGER, "invalid param");
438         return SOFTBUS_INVALID_PARAM;
439     }
440     info->dataStaticLevel = dataStaticLevel;
441     return SOFTBUS_OK;
442 }
443 
LnnGetDataSwitchLevel(const NodeInfo * info)444 uint32_t LnnGetDataSwitchLevel(const NodeInfo *info)
445 {
446     if (info == NULL) {
447         LNN_LOGE(LNN_LEDGER, "invalid param");
448         return SWITCH_LEVEL_INVALID;
449     }
450     return info->dataSwitchLevel;
451 }
452 
LnnSetDataSwitchLevel(NodeInfo * info,uint32_t dataSwitchLevel)453 int32_t LnnSetDataSwitchLevel(NodeInfo *info, uint32_t dataSwitchLevel)
454 {
455     if (info == NULL) {
456         LNN_LOGE(LNN_LEDGER, "invalid param");
457         return SOFTBUS_INVALID_PARAM;
458     }
459     info->dataSwitchLevel = dataSwitchLevel;
460     return SOFTBUS_OK;
461 }
462 
LnnGetDataSwitchLength(const NodeInfo * info)463 uint16_t LnnGetDataSwitchLength(const NodeInfo *info)
464 {
465     if (info == NULL) {
466         LNN_LOGE(LNN_LEDGER, "invalid param");
467         return SWTICH_LENGTH_INVALID;
468     }
469     return info->dataSwitchLength;
470 }
471 
LnnSetDataSwitchLength(NodeInfo * info,uint16_t dataSwitchLength)472 int32_t LnnSetDataSwitchLength(NodeInfo *info, uint16_t dataSwitchLength)
473 {
474     if (info == NULL) {
475         LNN_LOGE(LNN_LEDGER, "invalid param");
476         return SOFTBUS_INVALID_PARAM;
477     }
478     info->dataSwitchLength = dataSwitchLength;
479     return SOFTBUS_OK;
480 }
481 
LnnSetP2pGoMac(NodeInfo * info,const char * goMac)482 int32_t LnnSetP2pGoMac(NodeInfo *info, const char *goMac)
483 {
484     if (info == NULL || goMac == NULL) {
485         LNN_LOGE(LNN_LEDGER, "invalid param");
486         return SOFTBUS_INVALID_PARAM;
487     }
488 
489     if (strcpy_s(info->p2pInfo.goMac, sizeof(info->p2pInfo.goMac), goMac) != EOK) {
490         LNN_LOGE(LNN_LEDGER, "strcpy_s go mac err");
491         return SOFTBUS_MEM_ERR;
492     }
493     return SOFTBUS_OK;
494 }
495 
LnnGetP2pGoMac(const NodeInfo * info)496 const char *LnnGetP2pGoMac(const NodeInfo *info)
497 {
498     if (info == NULL) {
499         LNN_LOGE(LNN_LEDGER, "invalid param");
500         return NULL;
501     }
502     return info->p2pInfo.goMac;
503 }
504 
LnnGetSupportedProtocols(const NodeInfo * info)505 uint64_t LnnGetSupportedProtocols(const NodeInfo *info)
506 {
507     if (info == NULL) {
508         LNN_LOGE(LNN_LEDGER, "para error");
509         return 0;
510     }
511     return info->supportedProtocols;
512 }
513 
LnnSetSupportedProtocols(NodeInfo * info,uint64_t protocols)514 int32_t LnnSetSupportedProtocols(NodeInfo *info, uint64_t protocols)
515 {
516     if (info == NULL) {
517         LNN_LOGE(LNN_LEDGER, "para error");
518         return SOFTBUS_INVALID_PARAM;
519     }
520     info->supportedProtocols = protocols;
521     return SOFTBUS_OK;
522 }
523 
LnnSetWifiDirectAddr(NodeInfo * info,const char * wifiDirectAddr)524 int32_t LnnSetWifiDirectAddr(NodeInfo *info, const char *wifiDirectAddr)
525 {
526     if (info == NULL || wifiDirectAddr == NULL) {
527         LNN_LOGE(LNN_LEDGER, "invalid param");
528         return SOFTBUS_INVALID_PARAM;
529     }
530     if (strcpy_s(info->wifiDirectAddr, sizeof(info->wifiDirectAddr), wifiDirectAddr) != EOK) {
531         LNN_LOGE(LNN_LEDGER, "strcpy_s wifidirect addr err");
532         return SOFTBUS_MEM_ERR;
533     }
534     return SOFTBUS_OK;
535 }
536 
LnnSetStaticCapability(NodeInfo * info,uint8_t * cap,uint32_t len)537 int32_t LnnSetStaticCapability(NodeInfo *info, uint8_t *cap, uint32_t len)
538 {
539     if (info == NULL || cap == NULL) {
540         LNN_LOGE(LNN_LEDGER, "param is null");
541         return SOFTBUS_INVALID_PARAM;
542     }
543     if (len <= 0 || len > STATIC_CAP_LEN) {
544         LNN_LOGE(LNN_LEDGER, "length error");
545         return SOFTBUS_INVALID_PARAM;
546     }
547     if (memcpy_s(info->staticCapability, STATIC_CAP_LEN, cap, len) != EOK) {
548         LNN_LOGE(LNN_LEDGER, "memcpy static cap err");
549         return SOFTBUS_MEM_ERR;
550     }
551     return SOFTBUS_OK;
552 }
553 
LnnGetStaticCapability(NodeInfo * info,uint8_t * cap,uint32_t len)554 int32_t LnnGetStaticCapability(NodeInfo *info, uint8_t *cap, uint32_t len)
555 {
556     if (info == NULL || cap == NULL) {
557         LNN_LOGE(LNN_LEDGER, "param err");
558         return SOFTBUS_INVALID_PARAM;
559     }
560     if (len < 0 || len > STATIC_CAP_LEN) {
561         LNN_LOGE(LNN_LEDGER, "param err");
562         return SOFTBUS_INVALID_PARAM;
563     }
564     if (memcpy_s(cap, len, info->staticCapability, info->staticCapLen) != EOK) {
565         LNN_LOGE(LNN_LEDGER, "memcpy static cap err");
566         return SOFTBUS_MEM_ERR;
567     }
568     return SOFTBUS_OK;
569 }
570 
LnnSetUserIdCheckSum(NodeInfo * info,uint8_t * data,uint32_t len)571 int32_t LnnSetUserIdCheckSum(NodeInfo *info, uint8_t *data, uint32_t len)
572 {
573     if (info == NULL || data == NULL) {
574         LNN_LOGE(LNN_LEDGER, "param is null");
575         return SOFTBUS_INVALID_PARAM;
576     }
577     if (len != USERID_CHECKSUM_LEN) {
578         LNN_LOGE(LNN_LEDGER, "length error");
579         return SOFTBUS_INVALID_PARAM;
580     }
581     if (memcpy_s(info->userIdCheckSum, USERID_CHECKSUM_LEN, data, len) != EOK) {
582         LNN_LOGE(LNN_LEDGER, "memcpy useridchecksum err");
583         return SOFTBUS_MEM_ERR;
584     }
585     return SOFTBUS_OK;
586 }
587 
LnnGetUserIdCheckSum(NodeInfo * info,uint8_t * data,uint32_t len)588 int32_t LnnGetUserIdCheckSum(NodeInfo *info, uint8_t *data, uint32_t len)
589 {
590     if (info == NULL || data == NULL) {
591         LNN_LOGE(LNN_LEDGER, "param err");
592         return SOFTBUS_INVALID_PARAM;
593     }
594     if (len != USERID_CHECKSUM_LEN) {
595         LNN_LOGE(LNN_LEDGER, "param err");
596         return SOFTBUS_INVALID_PARAM;
597     }
598     if (memcpy_s(data, len, info->userIdCheckSum, len) != EOK) {
599         LNN_LOGE(LNN_LEDGER, "memcpy useridchecksum err");
600         return SOFTBUS_MEM_ERR;
601     }
602     return SOFTBUS_OK;
603 }
604 
LnnSetPtk(NodeInfo * info,const char * remotePtk)605 int32_t LnnSetPtk(NodeInfo *info, const char *remotePtk)
606 {
607     if (info == NULL || remotePtk == NULL) {
608         LNN_LOGE(LNN_LEDGER, "invalid param");
609         return SOFTBUS_INVALID_PARAM;
610     }
611     if (memcpy_s(info->remotePtk, PTK_DEFAULT_LEN, remotePtk, PTK_DEFAULT_LEN) != EOK) {
612         LNN_LOGE(LNN_LEDGER, "memcpy ptk err");
613         return SOFTBUS_MEM_ERR;
614     }
615     return SOFTBUS_OK;
616 }
617 
LnnDumpRemotePtk(const char * oldPtk,const char * newPtk,const char * log)618 void LnnDumpRemotePtk(const char *oldPtk, const char *newPtk, const char *log)
619 {
620     char ptkStr[PTK_STR_LEN] = { 0 };
621     char oldPtkStr[PTK_STR_LEN] = { 0 };
622 
623     if (log == NULL) {
624         return;
625     }
626     if (newPtk != NULL &&
627         ConvertBytesToUpperCaseHexString(ptkStr, PTK_STR_LEN, (unsigned char *)newPtk, PTK_DEFAULT_LEN) != SOFTBUS_OK) {
628         LNN_LOGE(LNN_LEDGER, "convert new ptk fail");
629     }
630     if (oldPtk != NULL &&
631         ConvertBytesToUpperCaseHexString(oldPtkStr, PTK_STR_LEN, (unsigned char *)oldPtk, PTK_DEFAULT_LEN) !=
632         SOFTBUS_OK) {
633         LNN_LOGE(LNN_LEDGER, "convert old ptk fail");
634     }
635     char *anonyPtk = NULL;
636     char *anonyOldPtk = NULL;
637     LnnAnonymizePtk(ptkStr, PTK_STR_LEN, &anonyPtk);
638     LnnAnonymizePtk(oldPtkStr, PTK_STR_LEN, &anonyOldPtk);
639     LNN_LOGI(LNN_LEDGER, "log=%{public}s, dump newPtk=%{public}s, oldPtk=%{public}s",
640         log, AnonymizeWrapper(anonyPtk), AnonymizeWrapper(anonyOldPtk));
641     AnonymizeFree(anonyPtk);
642     AnonymizeFree(anonyOldPtk);
643     (void)memset_s(ptkStr, PTK_STR_LEN, 0, PTK_STR_LEN);
644     (void)memset_s(oldPtkStr, PTK_STR_LEN, 0, PTK_STR_LEN);
645 }
646 
LnnDumpNodeInfo(const NodeInfo * deviceInfo,const char * log)647 void LnnDumpNodeInfo(const NodeInfo *deviceInfo, const char *log)
648 {
649     if (deviceInfo == NULL || log == NULL) {
650         LNN_LOGE(LNN_LEDGER, "invalid param");
651         return;
652     }
653     char *anonyNetworkId = NULL;
654     char *anonyUdid = NULL;
655     char *anonyDeviceName = NULL;
656     char *anonyBtMac = NULL;
657     Anonymize(deviceInfo->networkId, &anonyNetworkId);
658     Anonymize(deviceInfo->deviceInfo.deviceUdid, &anonyUdid);
659     AnonymizeDeviceName(deviceInfo->deviceInfo.deviceName, &anonyDeviceName);
660     Anonymize(deviceInfo->connectInfo.macAddr, &anonyBtMac);
661     LNN_LOGI(LNN_LEDGER, "log=%{public}s, stateVersion=%{public}d, networkId=%{public}s, udid=%{public}s, "
662         "deviceName=%{public}s, btMac=%{public}s, networkIdTimestamp=%{public}" PRId64, log, deviceInfo->stateVersion,
663         AnonymizeWrapper(anonyNetworkId), AnonymizeWrapper(anonyUdid), AnonymizeWrapper(anonyDeviceName),
664         AnonymizeWrapper(anonyBtMac), deviceInfo->networkIdTimestamp);
665     AnonymizeFree(anonyNetworkId);
666     AnonymizeFree(anonyUdid);
667     AnonymizeFree(anonyDeviceName);
668     AnonymizeFree(anonyBtMac);
669 }
670 
LnnSetScreenStatus(NodeInfo * info,bool isScreenOn)671 int32_t LnnSetScreenStatus(NodeInfo *info, bool isScreenOn)
672 {
673     if (info == NULL) {
674         LNN_LOGE(LNN_LEDGER, "invalid param");
675         return SOFTBUS_INVALID_PARAM;
676     }
677     info->isScreenOn = isScreenOn;
678     LNN_LOGI(LNN_LEDGER, "set local screen status to %{public}s", isScreenOn ? "on" : "off");
679     return SOFTBUS_OK;
680 }
681 
isIfnameIdxInvalid(int32_t ifnameIdx)682 bool isIfnameIdxInvalid(int32_t ifnameIdx)
683 {
684     return (ifnameIdx < MIN_IF || ifnameIdx > MAX_IF) ? true : false;
685 }
686 
LnnAnonymizePtk(const char * ptk,uint32_t len,char ** anonymizedStr)687 void LnnAnonymizePtk(const char *ptk, uint32_t len, char **anonymizedStr)
688 {
689     if (ptk == NULL || len != PTK_STR_LEN || anonymizedStr == NULL) {
690         LNN_LOGE(LNN_LEDGER, "Invalid parameter");
691         return;
692     }
693     char emptyByte[PTK_DEFAULT_LEN] = { 0 };
694     char emptyStr[PTK_STR_LEN] = { 0 };
695     if (ConvertBytesToHexString(emptyStr, PTK_STR_LEN, (unsigned char *)emptyByte, PTK_DEFAULT_LEN) != SOFTBUS_OK) {
696         LNN_LOGE(LNN_LEDGER, "convert emptyByte to string fail.");
697         return;
698     }
699     if (memcmp(ptk, emptyStr, PTK_STR_LEN) == 0) {
700         Anonymize(ptk, anonymizedStr);
701         return;
702     }
703     uint8_t ptkHash[SHA_256_HASH_LEN] = { 0 };
704     if (SoftBusGenerateStrHash((const unsigned char *)ptk, len, ptkHash) != SOFTBUS_OK) {
705         LNN_LOGE(LNN_LEDGER, "generate ptkHash fail");
706         return;
707     }
708     char ptkStr[PTK_STR_LEN] = { 0 };
709     if (ConvertBytesToHexString(ptkStr, PTK_STR_LEN, (unsigned char *)ptkHash, SHA_256_HASH_LEN) != SOFTBUS_OK) {
710         LNN_LOGE(LNN_LEDGER, "convert ptk to string fail.");
711         (void)memset_s(ptkHash, SHA_256_HASH_LEN, 0, SHA_256_HASH_LEN);
712         return;
713     }
714     Anonymize(ptkStr, anonymizedStr);
715     (void)memset_s(ptkHash, SHA_256_HASH_LEN, 0, SHA_256_HASH_LEN);
716     (void)memset_s(ptkStr, PTK_STR_LEN, 0, PTK_STR_LEN);
717 }
718 
LnnAnonymizeBroadcastCipher(const char * broadcastCipher,uint32_t len,char ** anonymizedStr)719 void LnnAnonymizeBroadcastCipher(const char *broadcastCipher, uint32_t len, char **anonymizedStr)
720 {
721     if (broadcastCipher == NULL || len != SESSION_KEY_STR_LEN || anonymizedStr == NULL) {
722         LNN_LOGE(LNN_LEDGER, "Invalid parameter");
723         return;
724     }
725     unsigned char emptyByte[SESSION_KEY_LENGTH] = { 0 };
726     char emptyStr[SESSION_KEY_STR_LEN] = { 0 };
727     if (ConvertBytesToHexString(emptyStr, SESSION_KEY_STR_LEN, emptyByte, SESSION_KEY_LENGTH) != SOFTBUS_OK) {
728         LNN_LOGE(LNN_LEDGER, "convert emptyByte to string fail.");
729         return;
730     }
731     if (memcmp(broadcastCipher, emptyStr, SESSION_KEY_STR_LEN) == 0) {
732         Anonymize(broadcastCipher, anonymizedStr);
733         return;
734     }
735     uint8_t broadcastCipherHash[SHA_256_HASH_LEN] = { 0 };
736     if (SoftBusGenerateStrHash((const unsigned char *)broadcastCipher, len, broadcastCipherHash) != SOFTBUS_OK) {
737         LNN_LOGE(LNN_LEDGER, "generate broadcastCipherHash fail");
738         return;
739     }
740     char hashStr[SESSION_KEY_STR_LEN] = { 0 };
741     if (ConvertBytesToHexString(hashStr, SESSION_KEY_STR_LEN, broadcastCipherHash, SHA_256_HASH_LEN) != SOFTBUS_OK) {
742         LNN_LOGE(LNN_LEDGER, "convert broadcastCipher to string fail.");
743         (void)memset_s(broadcastCipherHash, SHA_256_HASH_LEN, 0, SHA_256_HASH_LEN);
744         return;
745     }
746     Anonymize(hashStr, anonymizedStr);
747     (void)memset_s(broadcastCipherHash, SHA_256_HASH_LEN, 0, SHA_256_HASH_LEN);
748     (void)memset_s(hashStr, SESSION_KEY_STR_LEN, 0, SESSION_KEY_STR_LEN);
749 }
750 
LnnAnonymizeIrk(const char * irk,uint32_t len,char ** anonymizedStr)751 void LnnAnonymizeIrk(const char *irk, uint32_t len, char **anonymizedStr)
752 {
753     if (irk == NULL || len != LFINDER_IRK_STR_LEN || anonymizedStr == NULL) {
754         LNN_LOGE(LNN_LEDGER, "Invalid parameter");
755         return;
756     }
757     uint8_t emptyByte[LFINDER_IRK_LEN] = { 0 };
758     char emptyStr[LFINDER_IRK_STR_LEN] = { 0 };
759     if (ConvertBytesToHexString(emptyStr, LFINDER_IRK_STR_LEN, emptyByte, LFINDER_IRK_LEN) != SOFTBUS_OK) {
760         LNN_LOGE(LNN_LEDGER, "convert emptyByte to string fail.");
761         return;
762     }
763     if (memcmp(irk, emptyStr, LFINDER_IRK_STR_LEN) == 0) {
764         Anonymize(irk, anonymizedStr);
765         return;
766     }
767     uint8_t irkHash[SHA_256_HASH_LEN] = { 0 };
768     if (SoftBusGenerateStrHash((const unsigned char *)irk, len, irkHash) != SOFTBUS_OK) {
769         LNN_LOGE(LNN_LEDGER, "generate irkHash fail");
770         return;
771     }
772     char irkStr[LFINDER_IRK_STR_LEN] = { 0 };
773     if (ConvertBytesToHexString(irkStr, LFINDER_IRK_STR_LEN, (unsigned char *)irkHash, LFINDER_IRK_LEN) != SOFTBUS_OK) {
774         LNN_LOGE(LNN_LEDGER, "convert irk to string fail.");
775         (void)memset_s(irkHash, SHA_256_HASH_LEN, 0, SHA_256_HASH_LEN);
776         return;
777     }
778     Anonymize(irkStr, anonymizedStr);
779     (void)memset_s(irkHash, SHA_256_HASH_LEN, 0, SHA_256_HASH_LEN);
780     (void)memset_s(irkStr, LFINDER_IRK_STR_LEN, 0, LFINDER_IRK_STR_LEN);
781 }