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 |   60 +++++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 37 insertions(+), 23 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 a227a2a..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,6 +15,7 @@
 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;
@@ -27,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;
 
@@ -170,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())) {
                     //闇�瑕佽В瀵�
@@ -181,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"));
                                 }
@@ -205,27 +208,30 @@
                     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(updateLocalSecret)) {
+                } 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");
-                                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) {
@@ -235,17 +241,25 @@
                     try {
                         DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceDeleteResponse>() {
                         }.getType());
-                        HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), new HDLLinkCallBack() {
-                            @Override
-                            public void onSuccess(String msg) {
-                                LogUtils.i("deleteNetwork onSucceed");
-                            }
+                        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");
-                            }
-                        });
+                                @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