• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 #ifndef AUTH_SESSION_JSON_MOCK_H
17 #define AUTH_SESSION_JSON_MOCK_H
18 
19 #include <gmock/gmock.h>
20 
21 #include "auth_device_common_key_struct.h"
22 #include "auth_hichain_adapter.h"
23 #include "auth_identity_service_adapter.h"
24 #include "auth_pre_link.h"
25 #include "auth_session_fsm.h"
26 #include "auth_session_json.h"
27 #include "auth_session_message.h"
28 #include "bus_center_info_key.h"
29 #include "common_list.h"
30 #include "lnn_cipherkey_manager_struct.h"
31 #include "lnn_common_utils.h"
32 #include "lnn_feature_capability.h"
33 #include "lnn_lane_interface.h"
34 #include "lnn_node_info.h"
35 #include "softbus_adapter_socket.h"
36 #include "softbus_common.h"
37 #include "wifi_direct_manager.h"
38 
39 namespace OHOS {
40 class AuthSessionJsonInterface {
41 public:
AuthSessionJsonInterface()42     AuthSessionJsonInterface() {};
~AuthSessionJsonInterface()43     virtual ~AuthSessionJsonInterface() {};
44     virtual int32_t LnnGetUdidByBrMac(const char *brMac, char *udid, uint32_t udidLen) = 0;
45     virtual int32_t LnnGetLocalStrInfo(InfoKey key, char *info, uint32_t len) = 0;
46     virtual int32_t LnnGetLocalStrInfoByIfnameIdx(InfoKey key, char *info, uint32_t len, int32_t ifIdx) = 0;
47     virtual int32_t FindAuthPreLinkNodeById(uint32_t requestId, AuthPreLinkNode *reuseNode) = 0;
48     virtual int32_t LnnGetLocalNodeInfoSafe(NodeInfo *info) = 0;
49     virtual bool IsFeatureSupport(uint64_t feature, FeatureCapability capaBit) = 0;
50     virtual bool IsSupportFeatureByCapaBit(uint32_t feature, AuthCapability capaBit) = 0;
51     virtual bool IsPotentialTrustedDeviceDp(const char *deviceIdHash, bool isOnlyPointToPoint) = 0;
52     virtual bool IsSupportUDIDAbatement(void) = 0;
53     virtual bool IsNeedUDIDAbatement(const AuthSessionInfo *info) = 0;
54     virtual bool IsPotentialTrustedDevice(TrustedRelationIdType idType, const char *deviceId, bool isPrecise,
55         bool isPointToPoint) = 0;
56     virtual bool IsAuthPreLinkNodeExist(uint32_t requestId) = 0;
57     virtual int32_t GetFd(uint64_t connId) = 0;
58     virtual int32_t AddToAuthPreLinkList(uint32_t requestId, int32_t fd, ConnectionAddr *connAddr) = 0;
59     virtual bool GetSessionKeyProfile(int32_t sessionKeyId, uint8_t *sessionKey, uint32_t *length) = 0;
60     virtual int32_t LnnGetAuthPort(const NodeInfo *info, int32_t ifnameIdx) = 0;
61     virtual int32_t LnnGetSessionPort(const NodeInfo *info, int32_t ifnameIdx) = 0;
62     virtual int32_t PostAuthData(uint64_t connId, bool toServer, const AuthDataHead *head, const uint8_t *data) = 0;
63     virtual int32_t EncryptInner(const SessionKeyList *list, AuthLinkType type, const InDataInfo *inDataInfo,
64         uint8_t **outData, uint32_t *outLen);
65     virtual int32_t AuthManagerGetSessionKey(int64_t authSeq, const AuthSessionInfo *info,
66         SessionKey *sessionKey) = 0;
67     virtual int32_t AddSessionKey(SessionKeyList *list, int32_t index, const SessionKey *key, AuthLinkType type,
68         bool isOldKey) = 0;
69     virtual int32_t SetSessionKeyAvailable(SessionKeyList *list, int32_t index) = 0;
70     virtual int64_t AuthDeviceGetIdByConnInfo(const AuthConnInfo *connInfo, bool isServer) = 0;
71     virtual uint32_t AuthGetDecryptSize(uint32_t inLen) = 0;
72     virtual int32_t AuthDeviceDecrypt(AuthHandle *authHandle, const uint8_t *inData, uint32_t inLen, uint8_t *outData,
73         uint32_t *outLen) = 0;
74     virtual int32_t AuthManagerSetSessionKey(int64_t authSeq, AuthSessionInfo *info, const SessionKey *sessionKey,
75         bool isConnect, bool isOldKey) = 0;
76     virtual uint64_t GenerateLaneId(const char *localUdid, const char *remoteUdid, LaneLinkType linkType) = 0;
77     virtual int32_t UpdateLaneResourceLaneId(uint64_t oldLaneId, uint64_t newLaneId, const char *peerUdid) = 0;
78     virtual int32_t DecryptInner(const SessionKeyList *list, AuthLinkType type, const InDataInfo *inDataInfo,
79         uint8_t **outData, uint32_t *outLen) = 0;
80     virtual int32_t DataDecompress(uint8_t *in, uint32_t inLen, uint8_t **out, uint32_t *outLen) = 0;
81     virtual const NodeInfo *LnnGetLocalNodeInfo(void) = 0;
82     virtual int32_t LnnGetProxyPort(const NodeInfo *info, int32_t ifnameIdx) = 0;
83     virtual const char *LnnGetBtMac(const NodeInfo *info) = 0;
84     virtual const char *LnnGetP2pMac(const NodeInfo *info) = 0;
85     virtual const char *LnnGetDeviceName(const DeviceBasicInfo *info) = 0;
86     virtual char *LnnConvertIdToDeviceType(uint16_t typeId) = 0;
87     virtual int32_t LnnGetLocalNumInfo(InfoKey key, int32_t *info) = 0;
88     virtual int32_t InitSoftbusChain(SoftbusCertChain *softbusCertChain) = 0;
89     virtual int32_t LnnGetDeviceDisplayName(const char *nickName, const char *defaultName, char *deviceName,
90         uint32_t len) = 0;
91     virtual int32_t VerifyCertificate(SoftbusCertChain *softbusCertChain, const NodeInfo *nodeInfo,
92         const AuthSessionInfo *info) = 0;
93     virtual int32_t LnnConvertDeviceTypeToId(const char *deviceType, uint16_t *typeId) = 0;
94     virtual int32_t LnnEncryptAesGcm(AesGcmInputParam *in, int32_t keyIndex, uint8_t **out, uint32_t *outLen) = 0;
95     virtual int32_t AuthFindLatestNormalizeKey(const char *udidHash, AuthDeviceKeyInfo *deviceKey,
96         bool clearOldKey) = 0;
97     virtual int32_t AuthFindDeviceKey(const char *udidHash, int32_t keyType, AuthDeviceKeyInfo *deviceKey) = 0;
98     virtual int32_t LnnRetrieveDeviceInfoByNetworkId(const char *networkId, NodeInfo *info) = 0;
99     virtual AuthManager *GetAuthManagerByAuthId(int64_t authId) = 0;
100     virtual int32_t GetLatestSessionKey(const SessionKeyList *list, AuthLinkType type, int32_t *index,
101         SessionKey *key) = 0;
102     virtual int32_t LnnDecryptAesGcm(AesGcmInputParam *in, uint8_t **out, uint32_t *outLen) = 0;
103     virtual int32_t LnnGetUnifiedDeviceName(char *unifiedName, uint32_t len) = 0;
104     virtual int32_t LnnSetLocalStrInfo(InfoKey key, const char *info) = 0;
105     virtual const char *LnnGetDeviceUdid(const NodeInfo *info) = 0;
106     virtual uint64_t LnnGetSupportedProtocols(const NodeInfo *info) = 0;
107     virtual int32_t GetExtData(char *value, uint32_t len) = 0;
108     virtual bool PackCipherKeySyncMsg(void *json) = 0;
109     virtual int32_t LnnGetP2pRole(const NodeInfo *info) = 0;
110     virtual int32_t LnnGetStaFrequency(const NodeInfo *info) = 0;
111     virtual int32_t LnnUpdateLocalBroadcastCipherKey(BroadcastCipherKey *broadcastKey) = 0;
112     virtual bool LnnHasDiscoveryType(const NodeInfo *info, DiscoveryType type) = 0;
113     virtual int32_t AuthFindNormalizeKeyByServerSide(const char *udidHash, bool isServer,
114         AuthDeviceKeyInfo *deviceKey) = 0;
115     virtual int32_t SoftBusGenerateStrHash(const unsigned char *str, uint32_t len, unsigned char *hash) = 0;
116     virtual int32_t SoftBusSocketGetPeerName(int32_t socketFd, SoftBusSockAddr *addr) = 0;
117     virtual int32_t LnnGetLocalByteInfo(InfoKey key, uint8_t *info, uint32_t len) = 0;
118     virtual bool LnnIsDefaultOhosAccount(void) = 0;
119     virtual char *IdServiceGetCredIdFromCredList(int32_t userId, const char *credList) = 0;
120     virtual int32_t IdServiceQueryCredential(int32_t userId, const char *udidHash, const char *accountidHash,
121         bool isSameAccount, char **credList) = 0;
122     virtual int32_t AuthIdServiceQueryCredential(int32_t peerUserId, const char *udidHash, const char *accountidHash,
123         bool isSameAccount, char **credList) = 0;
124     virtual void IdServiceDestroyCredentialList(char **returnData) = 0;
125     virtual int32_t GetActiveOsAccountIds(void) = 0;
126     virtual bool IsSKIdInvalid(int32_t sessionKeyId, const char *accountHash, const char *udidShortHash,
127         int32_t userId) = 0;
128     virtual bool IsTrustedDeviceFromAccess(const char *peerAccountHash, const char *peerUdid,
129         int32_t peerUserId) = 0;
130 };
131 
132 class AuthSessionJsonInterfaceMock : public AuthSessionJsonInterface {
133 public:
134     AuthSessionJsonInterfaceMock();
135     ~AuthSessionJsonInterfaceMock() override;
136     MOCK_METHOD3(LnnGetUdidByBrMac, int32_t (const char *, char *, uint32_t));
137     MOCK_METHOD3(LnnGetLocalStrInfo, int32_t (InfoKey, char *, uint32_t));
138     MOCK_METHOD4(LnnGetLocalStrInfoByIfnameIdx, int32_t(InfoKey, char *, uint32_t, int32_t));
139     MOCK_METHOD2(FindAuthPreLinkNodeById, int32_t (uint32_t, AuthPreLinkNode *));
140     MOCK_METHOD1(LnnGetLocalNodeInfoSafe, int32_t (NodeInfo *));
141     MOCK_METHOD2(IsFeatureSupport, bool (uint64_t, FeatureCapability));
142     MOCK_METHOD2(IsSupportFeatureByCapaBit, bool (uint32_t, AuthCapability));
143     MOCK_METHOD2(IsPotentialTrustedDeviceDp, bool (const char *, bool));
144     MOCK_METHOD0(IsSupportUDIDAbatement, bool (void));
145     MOCK_METHOD1(IsNeedUDIDAbatement, bool (const AuthSessionInfo *));
146     MOCK_METHOD4(IsPotentialTrustedDevice, bool (TrustedRelationIdType, const char *, bool, bool));
147     MOCK_METHOD1(IsAuthPreLinkNodeExist, bool (uint32_t));
148     MOCK_METHOD1(GetFd, int32_t (uint64_t));
149     MOCK_METHOD3(AddToAuthPreLinkList, int32_t (uint32_t, int32_t, ConnectionAddr *));
150     MOCK_METHOD3(GetSessionKeyProfile, bool (int32_t, uint8_t *, uint32_t *));
151     MOCK_METHOD2(LnnGetAuthPort, int32_t (const NodeInfo *, int32_t));
152     MOCK_METHOD2(LnnGetSessionPort, int32_t (const NodeInfo *, int32_t));
153     MOCK_METHOD4(PostAuthData, int32_t (uint64_t, bool, const AuthDataHead *, const uint8_t *));
154     MOCK_METHOD5(EncryptInner,
155         int32_t (const SessionKeyList *, AuthLinkType, const InDataInfo *, uint8_t **, uint32_t *));
156     MOCK_METHOD3(AuthManagerGetSessionKey, int32_t (int64_t, const AuthSessionInfo *, SessionKey *));
157     MOCK_METHOD5(AddSessionKey, int32_t (SessionKeyList *, int32_t, const SessionKey *, AuthLinkType, bool));
158     MOCK_METHOD2(SetSessionKeyAvailable, int32_t (SessionKeyList *, int32_t));
159     MOCK_METHOD2(AuthDeviceGetIdByConnInfo, int64_t(const AuthConnInfo *, bool));
160     MOCK_METHOD1(AuthGetDecryptSize, uint32_t (uint32_t));
161     MOCK_METHOD5(AuthDeviceDecrypt, int32_t (AuthHandle *, const uint8_t *, uint32_t, uint8_t *, uint32_t *));
162     MOCK_METHOD5(AuthManagerSetSessionKey, int32_t (int64_t, AuthSessionInfo *, const SessionKey *, bool, bool));
163     MOCK_METHOD3(GenerateLaneId, uint64_t (const char *, const char *, LaneLinkType));
164     MOCK_METHOD3(UpdateLaneResourceLaneId, int32_t(uint64_t, uint64_t, const char *));
165     MOCK_METHOD5(DecryptInner, int32_t (const SessionKeyList *, AuthLinkType, const InDataInfo *, uint8_t **,
166         uint32_t *));
167     MOCK_METHOD4(DataDecompress, int32_t (uint8_t *, uint32_t, uint8_t **, uint32_t *));
168     MOCK_METHOD0(LnnGetLocalNodeInfo, const NodeInfo * (void));
169     MOCK_METHOD2(LnnGetProxyPort, int32_t (const NodeInfo *, int32_t));
170     MOCK_METHOD1(LnnGetBtMac, const char * (const NodeInfo *));
171     MOCK_METHOD1(LnnGetP2pMac, const char * (const NodeInfo *));
172     MOCK_METHOD1(LnnGetDeviceName, const char * (const DeviceBasicInfo *));
173     MOCK_METHOD1(LnnConvertIdToDeviceType, char * (uint16_t));
174     MOCK_METHOD2(LnnGetLocalNumInfo, int32_t (InfoKey, int32_t *));
175     MOCK_METHOD1(InitSoftbusChain, int32_t (SoftbusCertChain *));
176     MOCK_METHOD4(LnnGetDeviceDisplayName, int32_t (const char *, const char *, char *, uint32_t));
177     MOCK_METHOD3(VerifyCertificate, int32_t (SoftbusCertChain *, const NodeInfo *, const AuthSessionInfo *));
178     MOCK_METHOD2(LnnConvertDeviceTypeToId, int32_t (const char *, uint16_t *));
179     MOCK_METHOD4(LnnEncryptAesGcm, int32_t (AesGcmInputParam *, int32_t, uint8_t **, uint32_t *));
180     MOCK_METHOD3(AuthFindLatestNormalizeKey, int32_t (const char *, AuthDeviceKeyInfo *, bool));
181     MOCK_METHOD3(AuthFindDeviceKey, int32_t (const char *, int32_t, AuthDeviceKeyInfo *));
182     MOCK_METHOD2(LnnRetrieveDeviceInfoByNetworkId, int32_t (const char *, NodeInfo *));
183     MOCK_METHOD1(GetAuthManagerByAuthId, AuthManager * (int64_t));
184     MOCK_METHOD4(GetLatestSessionKey, int32_t (const SessionKeyList *, AuthLinkType, int32_t *, SessionKey *));
185     MOCK_METHOD3(LnnDecryptAesGcm, int32_t (AesGcmInputParam *, uint8_t **, uint32_t *));
186     MOCK_METHOD2(LnnGetUnifiedDeviceName, int32_t (char *, uint32_t));
187     MOCK_METHOD2(LnnSetLocalStrInfo, int32_t (InfoKey, const char *));
188     MOCK_METHOD1(LnnGetDeviceUdid, const char * (const NodeInfo *));
189     MOCK_METHOD1(LnnGetSupportedProtocols, uint64_t (const NodeInfo *));
190     MOCK_METHOD2(GetExtData, int32_t (char *, uint32_t));
191     MOCK_METHOD1(PackCipherKeySyncMsg, bool (void *));
192     MOCK_METHOD1(LnnGetP2pRole, int32_t (const NodeInfo *));
193     MOCK_METHOD1(LnnGetStaFrequency, int32_t (const NodeInfo *));
194     MOCK_METHOD1(LnnUpdateLocalBroadcastCipherKey, int32_t (BroadcastCipherKey *));
195     MOCK_METHOD2(LnnHasDiscoveryType, bool (const NodeInfo *, DiscoveryType));
196     MOCK_METHOD3(AuthFindNormalizeKeyByServerSide, int32_t (const char *, bool, AuthDeviceKeyInfo *));
197     MOCK_METHOD3(SoftBusGenerateStrHash, int32_t (const unsigned char *, uint32_t, unsigned char *));
198     MOCK_METHOD2(SoftBusSocketGetPeerName, int32_t (int32_t, SoftBusSockAddr *));
199     MOCK_METHOD3(LnnGetLocalByteInfo, int32_t (InfoKey key, uint8_t *info, uint32_t len));
200     MOCK_METHOD0(LnnIsDefaultOhosAccount, bool (void));
201     MOCK_METHOD2(IdServiceGetCredIdFromCredList, char * (int32_t userId, const char *credList));
202     MOCK_METHOD5(IdServiceQueryCredential, int32_t (int32_t userId, const char *udidHash,
203         const char *accountidHash, bool isSameAccount, char **credList));
204     MOCK_METHOD5(AuthIdServiceQueryCredential, int32_t (int32_t peerUserId, const char *udidHash,
205         const char *accountidHash, bool isSameAccount, char **credList));
206     MOCK_METHOD1(IdServiceDestroyCredentialList, void (char **returnData));
207     MOCK_METHOD0(GetActiveOsAccountIds, int32_t(void));
208     MOCK_METHOD4(IsSKIdInvalid, bool (int32_t, const char *, const char *, int32_t));
209     MOCK_METHOD3(IsTrustedDeviceFromAccess, bool (const char *, const char *, int32_t));
210 };
211 
212 extern "C" {
213 void DelSessionKeyProfile(int32_t sessionKeyId);
214 void DestroySessionKeyList(SessionKeyList *list);
215 void RefreshRelationShip(const char *remoteUuid, const char *remoteMac);
216 struct WifiDirectManager *GetWifiDirectManager(void);
217 void FreeSoftbusChain(SoftbusCertChain *softbusCertChain);
218 void LnnDumpRemotePtk(const char *oldPtk, const char *newPtk, const char *log);
219 void AuthGetLatestIdByUuid(const char *uuid, AuthLinkType type, bool isMeta, AuthHandle *authHandle);
220 void DelDupAuthManager(AuthManager *auth);
221 void ProcessCipherKeySyncInfo(const void *json, const char *networkId);
222 void AuthUpdateCreateTime(const char *udidHash, int32_t keyType, bool isServer);
223 }
224 }
225 #endif // AUTH_SESSION_JSON_MOCK_H