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