From d49e1c7813b25c2bd9701b7bb70dc2add4505030 Mon Sep 17 00:00:00 2001 From: 562935844@qq.com Date: 星期五, 15 九月 2023 17:36:31 +0800 Subject: [PATCH] 更新密钥增加判空 --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java | 66 +++++++++++++++++++++++++------- 1 files changed, 51 insertions(+), 15 deletions(-) diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java index e5eebc8..15bc3bc 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java @@ -15,8 +15,10 @@ import com.hdl.sdk.common.utils.LogUtils; import com.hdl.sdk.common.utils.SPUtils; import com.hdl.sdk.common.utils.gson.GsonConvert; +import com.hdl.sdk.connect.HDLLink; import com.hdl.sdk.connect.bean.LinkResponse; import com.hdl.sdk.connect.bean.request.AuthenticateRequest; +import com.hdl.sdk.connect.bean.response.DeviceDeleteResponse; import com.hdl.sdk.connect.bean.response.DeviceInfoResponse; import com.hdl.sdk.connect.callback.HDLLinkCallBack; import com.hdl.sdk.connect.config.HDLLinkConfig; @@ -26,8 +28,9 @@ import com.hdl.sdk.socket.codec.ByteToMessageDecoder; import java.util.ArrayList; -import java.util.Base64; import java.util.List; + +import android.util.Base64; import kotlin.ParameterName; @@ -169,6 +172,7 @@ } LinkResponse response = new LinkResponse(); response.setSource_ipAddress(ipaddress); + Log.d("panlili", "----->source_ipAddress= " + ipaddress); response.setTopic(topic); if (HDLLinkConfig.getInstance().ifNeedEncrypt(response.getTopic())) { //闇�瑕佽В瀵� @@ -180,7 +184,7 @@ //涔嬪墠鐨勭増鏈繖鍧楁槸鏄庢枃鐨� if (!topic.contains("heartbeat_reply")) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) - LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n" + Base64.getEncoder().encodeToString(body)); + LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n" + Base64.encodeToString(body, Base64.NO_WRAP)); else { LogUtils.e("瑙e瘑澶辫触锛屾暟鎹唴瀹规槸锛歕r\n" + new String(body, "utf-8")); } @@ -194,39 +198,71 @@ response.setData(bodyString); LogUtils.i("鎺ユ敹鍒版暟鎹�:" + response.getTopic() + "\r\n" + response.getData()); - String receivetopic = String.format(TopicConstant.LINK_BROADCAST, HDLLinkConfig.getInstance().getGatewayId()); + String updateLocalSecret = String.format(TopicConstant.LINK_BROADCAST, HDLLinkConfig.getInstance().getGatewayId()); + String deleteNetwork = ""; + if (HDLLinkConfig.getInstance().getDeviceInfoBean() != null) { + deleteNetwork = String.format(TopicConstant.DELETE_NOTIFY, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID()); + } if (response.getTopic().equals("/user/all/custom/gateway/search")) { HDLAuthSocket.getInstance().UploadGatewayInfo(new HDLLinkCallBack() { @Override public void onSuccess(String msg) { - LogUtils.i("UploadGatewayInfo onSucceed"); +// LogUtils.i("UploadGatewayInfo onSucceed"); } @Override public void onError(HDLLinkException e) { - LogUtils.i("UploadGatewayInfo onError"); +// LogUtils.i("UploadGatewayInfo onError"); } }); - } else if (response.getTopic().equals(receivetopic)) { + } else if (response.getTopic().equals(updateLocalSecret) || response.getTopic().equals(TopicConstant.LINK_BROADCAST)) { try { DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceInfoResponse>() { }.getType()); - if (!TextUtils.isEmpty(deviceInfoResponse.getObjects().getLocalSecret())) { - byte[] baseBytes = Base64.getDecoder().decode(deviceInfoResponse.getObjects().getLocalSecret()); - String mackey = ""; - if (!TextUtils.isEmpty(SPUtils.getString("auth_mackey_key", ""))) { - mackey = SPUtils.getString("auth_mackey_key", ""); - byte[] bodyBytes = AesUtil.aesDecrypt(baseBytes, mackey.substring(mackey.length() - 16)); - String localSecret = new String(bodyBytes, "utf-8"); - Log.d("panlili", "LinkMessageDecoder.java:----->localSecret= " + localSecret); - HDLLinkConfig.getInstance().setLocalSecret(localSecret); + if (deviceInfoResponse != null && deviceInfoResponse.getObjects() != null) { + if (!TextUtils.isEmpty(deviceInfoResponse.getObjects().getLocalSecret())) { + byte[] baseBytes = Base64.decode(deviceInfoResponse.getObjects().getLocalSecret(), Base64.NO_WRAP); + String mackey = ""; + if (!TextUtils.isEmpty(SPUtils.getString("auth_mackey_key", ""))) { + mackey = SPUtils.getString("auth_mackey_key", ""); + byte[] bodyBytes = AesUtil.aesDecrypt(baseBytes, mackey.substring(mackey.length() - 16)); + String localSecret = new String(bodyBytes, "utf-8"); + Log.d("panlili", "鏇存柊瀵嗛挜----->localSecret= " + localSecret); + HDLLinkConfig.getInstance().setLocalSecret(localSecret); + } } } } catch (Exception e) { LogUtils.i("LinkMessageDecoder.java:getLocalSecret----->e= " + e.getMessage()); } + } else if (response.getTopic().equals(deleteNetwork)) { + try { + DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceDeleteResponse>() { + }.getType()); + if (deviceDeleteResponse != null && deviceDeleteResponse.getObjects() != null) { + HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), new HDLLinkCallBack() { + @Override + public void onSuccess(String msg) { + LogUtils.i("deleteNetwork onSucceed"); + if (HDLLink.getInstance().listener != null) { + HDLLink.getInstance().listener.onSuccess(msg); + } + } + + @Override + public void onError(HDLLinkException e) { + LogUtils.i("deleteNetwork onError"); + if (HDLLink.getInstance().listener != null) { + HDLLink.getInstance().listener.onFailure(); + } + } + }); + } + } catch (Exception e) { + LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage()); + } } //闈炴甯告暟鎹紝杩斿洖 -- Gitblit v1.8.0