From fe0f2f97091b765f6f6a1e363b6c6dcaacfb08fe Mon Sep 17 00:00:00 2001 From: wangyb0625 Date: Wed, 23 Feb 2022 17:06:15 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=8E=92=E6=9F=A5deviceInfo=E4=B8=AD?= =?UTF-8?q?=E7=9A=84Id=E6=98=AFnetworkId=E8=BF=98=E6=98=AFUDID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/devicemanagerservice/BUILD.gn | 1 + .../native_cpp/include/dm_device_info.h | 1 + .../kits/js/src/native_devicemanager_js.cpp | 2 + services/devicemanagerservice/BUILD.gn | 2 + .../dependency/softbus/softbus_connector.h | 9 ++ .../dependency/softbus/softbus_connector.cpp | 121 +++++++++++++++++- 6 files changed, 134 insertions(+), 2 deletions(-) diff --git a/ext/mini/services/devicemanagerservice/BUILD.gn b/ext/mini/services/devicemanagerservice/BUILD.gn index 633bc46ac..cae2bb37f 100644 --- a/ext/mini/services/devicemanagerservice/BUILD.gn +++ b/ext/mini/services/devicemanagerservice/BUILD.gn @@ -95,6 +95,7 @@ if (defined(ohos_lite)) { "//foundation/distributedschedule/samgr_lite/samgr", "//third_party/bounds_checking_function:libsec_static", "//third_party/mbedtls", + "//third_party/mbedtls:mbedtls_shared", "//utils/native/lite:utils", ] } diff --git a/interfaces/inner_kits/native_cpp/include/dm_device_info.h b/interfaces/inner_kits/native_cpp/include/dm_device_info.h index b17b597b1..bf37c5ab5 100644 --- a/interfaces/inner_kits/native_cpp/include/dm_device_info.h +++ b/interfaces/inner_kits/native_cpp/include/dm_device_info.h @@ -49,6 +49,7 @@ typedef struct DmDeviceInfo { char deviceId[DM_MAX_DEVICE_ID_LEN]; char deviceName[DM_MAX_DEVICE_NAME_LEN]; uint16_t deviceTypeId; + std::string networkId; } DmDeviceInfo; typedef struct DmAuthParam { diff --git a/interfaces/kits/js/src/native_devicemanager_js.cpp b/interfaces/kits/js/src/native_devicemanager_js.cpp index bb96c37a7..2679ae001 100644 --- a/interfaces/kits/js/src/native_devicemanager_js.cpp +++ b/interfaces/kits/js/src/native_devicemanager_js.cpp @@ -398,6 +398,7 @@ void DeviceManagerNapi::OnDeviceStateChange(DmNapiDevStateChangeAction action, napi_value device = nullptr; napi_create_object(env_, &device); SetValueUtf8String(env_, "deviceId", deviceInfo.deviceId, device); + SetValueUtf8String(env_, "networkId", deviceInfo.networkId, device); SetValueUtf8String(env_, "deviceName", deviceInfo.deviceName, device); SetValueInt32(env_, "deviceType", (int)deviceInfo.deviceTypeId, device); @@ -415,6 +416,7 @@ void DeviceManagerNapi::OnDeviceFound(uint16_t subscribeId, const DmDeviceInfo & napi_value device = nullptr; napi_create_object(env_, &device); SetValueUtf8String(env_, "deviceId", deviceInfo.deviceId, device); + SetValueUtf8String(env_, "networkId", deviceInfo.networkId, device); SetValueUtf8String(env_, "deviceName", deviceInfo.deviceName, device); SetValueInt32(env_, "deviceType", (int)deviceInfo.deviceTypeId, device); diff --git a/services/devicemanagerservice/BUILD.gn b/services/devicemanagerservice/BUILD.gn index cde4b3193..62f6934e3 100644 --- a/services/devicemanagerservice/BUILD.gn +++ b/services/devicemanagerservice/BUILD.gn @@ -51,6 +51,7 @@ if (defined(ohos_lite)) { "${common_path}/include/ipc/model", "//base/security/deviceauth/interfaces/innerkits", "//third_party/json/include", + "//third_party/mbedtls/include/mbedtls", "//base/account/os_account/interfaces/innerkits/osaccount/native/include", ] } @@ -101,6 +102,7 @@ if (defined(ohos_lite)) { "//foundation/aafwk/standard/services/abilitymgr:abilityms", "//foundation/ace/ace_engine/interfaces/innerkits/ui_service_manager:ui_service_mgr", "//foundation/windowmanager/wm:libwm", + "//third_party/mbedtls:mbedtls_shared", ] external_deps = [ diff --git a/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h b/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h index a7f5f3aa7..e8225ae47 100644 --- a/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h +++ b/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h @@ -29,6 +29,14 @@ #include "softbus_discovery_callback.h" #include "softbus_session.h" #include "softbus_state_callback.h" +//#include "mbedtls/base64.h" +// #include "mbedtls/ctr_drbg.h" +// #include "mbedtls/entropy.h" +// #include "mbedtls/gcm.h" +// #include "mbedtls/md.h" +// #include "mbedtls/platform.h" +#include "md.h" +#include "platform.h" namespace OHOS { namespace DistributedHardware { @@ -72,6 +80,7 @@ private: static int32_t CovertNodeBasicInfoToDmDevice(const NodeBasicInfo &nodeBasicInfo, DmDeviceInfo &dmDeviceInfo); static void CovertDeviceInfoToDmDevice(const DeviceInfo &deviceInfo, DmDeviceInfo &dmDeviceInfo); static ConnectionAddr *GetConnectAddrByType(DeviceInfo *deviceInfo, ConnectionAddrType type); + static int32_t GetUdidHash(uint8_t *udid, int32_t udiddataLen, uint8_t outudiddData[32]); private: enum PulishStatus { diff --git a/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp b/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp index 4ece01e32..52d184c56 100644 --- a/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp +++ b/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp @@ -399,15 +399,34 @@ ConnectionAddr *SoftbusConnector::GetConnectAddr(const std::string &deviceId, st int32_t SoftbusConnector::CovertNodeBasicInfoToDmDevice(const NodeBasicInfo &nodeBasicInfo, DmDeviceInfo &dmDeviceInfo) { (void)memset_s(&dmDeviceInfo, sizeof(DmDeviceInfo), 0, sizeof(DmDeviceInfo)); - if (memcpy_s(dmDeviceInfo.deviceId, sizeof(dmDeviceInfo.deviceId), nodeBasicInfo.networkId, - std::min(sizeof(dmDeviceInfo.deviceId), sizeof(nodeBasicInfo.networkId))) != DM_OK) { + + uint8_t mUdid[UDID_BUF_LEN] = {0}; + const char *networkId; + int32_t ret = + GetNodeKeyInfo(DM_PKG_NAME.c_str(), networkId, NodeDeviceInfoKey::NODE_KEY_UDID, mUdid, UDID_BUF_LEN); + if (ret != DM_OK) { + LOGE("GetUdidByNetworkId GetNodeKeyInfo failed"); + return DM_FAILED; + } + + uint8_t outudiddData[32]; + if(GetUdidHash(mUdid,sizeof(mUdid),outudiddData) != DM_OK) { + LOGE("GetUdidHash is failed"); + return DM_FAILED; + } + // dmDeviceInfo.deviceId = (char*)outudiddData; + + if (memcpy_s(dmDeviceInfo.deviceId, sizeof(dmDeviceInfo.deviceId),outudiddData, + std::min(sizeof(dmDeviceInfo.deviceId), sizeof(outudiddData))) != DM_OK) { LOGE("copy data failed"); } + if (memcpy_s(dmDeviceInfo.deviceName, sizeof(dmDeviceInfo.deviceName), nodeBasicInfo.deviceName, std::min(sizeof(dmDeviceInfo.deviceName), sizeof(nodeBasicInfo.deviceName))) != DM_OK) { LOGE("copy data failed"); } dmDeviceInfo.deviceTypeId = nodeBasicInfo.deviceTypeId; + dmDeviceInfo.networkId = nodeBasicInfo.networkId; return DM_OK; } @@ -423,6 +442,104 @@ void SoftbusConnector::CovertDeviceInfoToDmDevice(const DeviceInfo &deviceInfo, LOGE("copy data failed"); } dmDeviceInfo.deviceTypeId = deviceInfo.devType; + dmDeviceInfo.networkId = {0}; +} + +/* +int32_t SoftbusConnector::GetUdidHash(uint8_t *udiddata, int32_t udiddataLen, uint8_t outudiddData[32]) +{ + uint8_t digest[32]; + + mbedtls_md_context_t ctx; + const mbedtls_md_info_t *info; + + mbedtls_md_init(&ctx); + info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); + + mbedtls_md_setup(&ctx, info, 0); + mbedtls_printf("\n md info setup, name: %s, digest size: %d\n", + mbedtls_md_get_name(info), mbedtls_md_get_size(info)); + + mbedtls_md_starts(&ctx); + mbedtls_md_update(&ctx, udiddata, strlen(udiddata)); + mbedtls_md_finish(&ctx, digest); + + // dump_buf("\n md sha-256 digest:", digest, sizeof(digest)); + // static void dump_buf(char *info, uint8_t *buf, uint32_t len) + // { + // mbedtls_printf("%s", info); + // for (int i = 0; i < len; i++) { + // mbedtls_printf("%s%02X%s", i % 16 == 0 ? "\n\t":" ", + // buf[i], i == len - 1 ? "\n":""); + // } + // mbedtls_printf("\n"); + // } + + + mbedtls_printf("%s", "\n md sha-256 digest:"); + for (int i = 0; i < sizeof(digest); i++) { + mbedtls_printf("%s%02X%s", i % 16 == 0 ? "\n\t":" ", + digest[i], i == sizeof(digest) - 1 ? "\n":""); + } + mbedtls_printf("\n"); + + + mbedtls_md_free(&ctx); + return 0; +} +*/ + +int32_t SoftbusConnector::GetUdidHash(uint8_t *udid, int32_t udiddataLen, uint8_t outudiddData[32]) +{ + if (udid == nullptr || *udid < 0) { + LOGE("udid is nullptr or dataLen: %d", udiddataLen); + return DM_POINT_NULL; + } + mbedtls_md_context_t ctx; + const mbedtls_md_info_t *info; + + mbedtls_md_init(&ctx); + info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); + + if (info == nullptr) { + LOGE("info is nullptr"); + return DM_POINT_NULL; + } + + int32_t ret = DM_OK; + do { + ret = mbedtls_md_setup(&ctx, info, 0); + if (ret != 0) { + LOGE("mbedtls_md_setup is fail"); + ret = DM_FAILED; + break; + } + + ret = mbedtls_md_starts(&ctx); + if (ret != 0) { + LOGE("mbedtls_md_starts is fail"); + ret = DM_FAILED; + break; + } + + ret = mbedtls_md_update(&ctx, udid, udiddataLen); + if (ret != 0) { + LOGE("mbedtls_md_update is fail"); + ret = DM_FAILED; + break; + } + + ret = mbedtls_md_finish(&ctx, outudiddData); + if (ret != 0) { + LOGE("mbedtls_md_finish is fail"); + ret = DM_FAILED; + break; + } + ret = DM_OK; + } while (0); + + mbedtls_md_free(&ctx); + return ret; } void SoftbusConnector::OnPublishSuccess(int32_t publishId) -- Gitee From adcbd46060ae55dec29147a9eb727c096e265930 Mon Sep 17 00:00:00 2001 From: wangyb0625 Date: Wed, 23 Feb 2022 17:25:08 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=8E=92=E6=9F=A5deviceInfo=E4=B8=AD?= =?UTF-8?q?=E7=9A=84Id=E6=98=AFnetworkId=E8=BF=98=E6=98=AFUDID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/devicemanagerservice/BUILD.gn | 1 + .../native_cpp/include/dm_device_info.h | 1 + .../kits/js/src/native_devicemanager_js.cpp | 2 + services/devicemanagerservice/BUILD.gn | 2 + .../dependency/softbus/softbus_connector.h | 9 +++ .../dependency/softbus/softbus_connector.cpp | 77 ++++++++++++++++++- 6 files changed, 90 insertions(+), 2 deletions(-) diff --git a/ext/mini/services/devicemanagerservice/BUILD.gn b/ext/mini/services/devicemanagerservice/BUILD.gn index 633bc46ac..cae2bb37f 100644 --- a/ext/mini/services/devicemanagerservice/BUILD.gn +++ b/ext/mini/services/devicemanagerservice/BUILD.gn @@ -95,6 +95,7 @@ if (defined(ohos_lite)) { "//foundation/distributedschedule/samgr_lite/samgr", "//third_party/bounds_checking_function:libsec_static", "//third_party/mbedtls", + "//third_party/mbedtls:mbedtls_shared", "//utils/native/lite:utils", ] } diff --git a/interfaces/inner_kits/native_cpp/include/dm_device_info.h b/interfaces/inner_kits/native_cpp/include/dm_device_info.h index b17b597b1..bf37c5ab5 100644 --- a/interfaces/inner_kits/native_cpp/include/dm_device_info.h +++ b/interfaces/inner_kits/native_cpp/include/dm_device_info.h @@ -49,6 +49,7 @@ typedef struct DmDeviceInfo { char deviceId[DM_MAX_DEVICE_ID_LEN]; char deviceName[DM_MAX_DEVICE_NAME_LEN]; uint16_t deviceTypeId; + std::string networkId; } DmDeviceInfo; typedef struct DmAuthParam { diff --git a/interfaces/kits/js/src/native_devicemanager_js.cpp b/interfaces/kits/js/src/native_devicemanager_js.cpp index bb96c37a7..2679ae001 100644 --- a/interfaces/kits/js/src/native_devicemanager_js.cpp +++ b/interfaces/kits/js/src/native_devicemanager_js.cpp @@ -398,6 +398,7 @@ void DeviceManagerNapi::OnDeviceStateChange(DmNapiDevStateChangeAction action, napi_value device = nullptr; napi_create_object(env_, &device); SetValueUtf8String(env_, "deviceId", deviceInfo.deviceId, device); + SetValueUtf8String(env_, "networkId", deviceInfo.networkId, device); SetValueUtf8String(env_, "deviceName", deviceInfo.deviceName, device); SetValueInt32(env_, "deviceType", (int)deviceInfo.deviceTypeId, device); @@ -415,6 +416,7 @@ void DeviceManagerNapi::OnDeviceFound(uint16_t subscribeId, const DmDeviceInfo & napi_value device = nullptr; napi_create_object(env_, &device); SetValueUtf8String(env_, "deviceId", deviceInfo.deviceId, device); + SetValueUtf8String(env_, "networkId", deviceInfo.networkId, device); SetValueUtf8String(env_, "deviceName", deviceInfo.deviceName, device); SetValueInt32(env_, "deviceType", (int)deviceInfo.deviceTypeId, device); diff --git a/services/devicemanagerservice/BUILD.gn b/services/devicemanagerservice/BUILD.gn index cde4b3193..62f6934e3 100644 --- a/services/devicemanagerservice/BUILD.gn +++ b/services/devicemanagerservice/BUILD.gn @@ -51,6 +51,7 @@ if (defined(ohos_lite)) { "${common_path}/include/ipc/model", "//base/security/deviceauth/interfaces/innerkits", "//third_party/json/include", + "//third_party/mbedtls/include/mbedtls", "//base/account/os_account/interfaces/innerkits/osaccount/native/include", ] } @@ -101,6 +102,7 @@ if (defined(ohos_lite)) { "//foundation/aafwk/standard/services/abilitymgr:abilityms", "//foundation/ace/ace_engine/interfaces/innerkits/ui_service_manager:ui_service_mgr", "//foundation/windowmanager/wm:libwm", + "//third_party/mbedtls:mbedtls_shared", ] external_deps = [ diff --git a/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h b/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h index a7f5f3aa7..97dc51057 100644 --- a/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h +++ b/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h @@ -29,6 +29,14 @@ #include "softbus_discovery_callback.h" #include "softbus_session.h" #include "softbus_state_callback.h" +#include "base64.h" +#include "ctr_drbg.h" +#include "entropy.h" +#include "gcm.h" +#include "md.h" +#include "platform.h" +#include "md.h" +#include "platform.h" namespace OHOS { namespace DistributedHardware { @@ -72,6 +80,7 @@ private: static int32_t CovertNodeBasicInfoToDmDevice(const NodeBasicInfo &nodeBasicInfo, DmDeviceInfo &dmDeviceInfo); static void CovertDeviceInfoToDmDevice(const DeviceInfo &deviceInfo, DmDeviceInfo &dmDeviceInfo); static ConnectionAddr *GetConnectAddrByType(DeviceInfo *deviceInfo, ConnectionAddrType type); + static int32_t GetUdidHash(uint8_t *udid, int32_t udiddataLen, uint8_t outudiddData[32]); private: enum PulishStatus { diff --git a/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp b/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp index 4ece01e32..f1bd72e59 100644 --- a/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp +++ b/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp @@ -399,15 +399,34 @@ ConnectionAddr *SoftbusConnector::GetConnectAddr(const std::string &deviceId, st int32_t SoftbusConnector::CovertNodeBasicInfoToDmDevice(const NodeBasicInfo &nodeBasicInfo, DmDeviceInfo &dmDeviceInfo) { (void)memset_s(&dmDeviceInfo, sizeof(DmDeviceInfo), 0, sizeof(DmDeviceInfo)); - if (memcpy_s(dmDeviceInfo.deviceId, sizeof(dmDeviceInfo.deviceId), nodeBasicInfo.networkId, - std::min(sizeof(dmDeviceInfo.deviceId), sizeof(nodeBasicInfo.networkId))) != DM_OK) { + + uint8_t mUdid[UDID_BUF_LEN] = {0}; + const char *networkId; + int32_t ret = + GetNodeKeyInfo(DM_PKG_NAME.c_str(), networkId, NodeDeviceInfoKey::NODE_KEY_UDID, mUdid, UDID_BUF_LEN); + if (ret != DM_OK) { + LOGE("GetUdidByNetworkId GetNodeKeyInfo failed"); + return DM_FAILED; + } + + uint8_t outudiddData[32]; + if(GetUdidHash(mUdid,sizeof(mUdid),outudiddData) != DM_OK) { + LOGE("GetUdidHash is failed"); + return DM_FAILED; + } + // dmDeviceInfo.deviceId = (char*)outudiddData; + + if (memcpy_s(dmDeviceInfo.deviceId, sizeof(dmDeviceInfo.deviceId),outudiddData, + std::min(sizeof(dmDeviceInfo.deviceId), sizeof(outudiddData))) != DM_OK) { LOGE("copy data failed"); } + if (memcpy_s(dmDeviceInfo.deviceName, sizeof(dmDeviceInfo.deviceName), nodeBasicInfo.deviceName, std::min(sizeof(dmDeviceInfo.deviceName), sizeof(nodeBasicInfo.deviceName))) != DM_OK) { LOGE("copy data failed"); } dmDeviceInfo.deviceTypeId = nodeBasicInfo.deviceTypeId; + dmDeviceInfo.networkId = nodeBasicInfo.networkId; return DM_OK; } @@ -423,6 +442,60 @@ void SoftbusConnector::CovertDeviceInfoToDmDevice(const DeviceInfo &deviceInfo, LOGE("copy data failed"); } dmDeviceInfo.deviceTypeId = deviceInfo.devType; + dmDeviceInfo.networkId = {0}; +} + +int32_t SoftbusConnector::GetUdidHash(uint8_t *udid, int32_t udiddataLen, uint8_t outudiddData[32]) +{ + if (udid == nullptr || *udid < 0) { + LOGE("udid is nullptr or dataLen: %d", udiddataLen); + return DM_POINT_NULL; + } + mbedtls_md_context_t ctx; + const mbedtls_md_info_t *info; + + mbedtls_md_init(&ctx); + info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); + + if (info == nullptr) { + LOGE("info is nullptr"); + return DM_POINT_NULL; + } + + int32_t ret = DM_OK; + do { + ret = mbedtls_md_setup(&ctx, info, 0); + if (ret != 0) { + LOGE("mbedtls_md_setup is fail"); + ret = DM_FAILED; + break; + } + + ret = mbedtls_md_starts(&ctx); + if (ret != 0) { + LOGE("mbedtls_md_starts is fail"); + ret = DM_FAILED; + break; + } + + ret = mbedtls_md_update(&ctx, udid, udiddataLen); + if (ret != 0) { + LOGE("mbedtls_md_update is fail"); + ret = DM_FAILED; + break; + } + + ret = mbedtls_md_finish(&ctx, outudiddData); + if (ret != 0) { + LOGE("mbedtls_md_finish is fail"); + ret = DM_FAILED; + break; + } + ret = DM_OK; + } while (0); + + mbedtls_md_free(&ctx); + return ret; } void SoftbusConnector::OnPublishSuccess(int32_t publishId) -- Gitee From f231883257706fb133f47395d014fd46d2ad245f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=A7=BB=E6=B3=A2?= Date: Thu, 24 Feb 2022 02:04:43 +0000 Subject: [PATCH 3/3] update services/devicemanagerservice/include/dependency/softbus/softbus_connector.h. --- .../dependency/softbus/softbus_connector.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h b/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h index 56ae478b3..bc7c56a54 100644 --- a/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h +++ b/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h @@ -36,14 +36,14 @@ #include "gcm.h" #include "md.h" #include "platform.h" -======= -//#include "mbedtls/base64.h" -// #include "mbedtls/ctr_drbg.h" -// #include "mbedtls/entropy.h" -// #include "mbedtls/gcm.h" -// #include "mbedtls/md.h" -// #include "mbedtls/platform.h" ->>>>>>> fe0f2f97091b765f6f6a1e363b6c6dcaacfb08fe + +#include "base64.h" +#include "ctr_drbg.h" +#include "entropy.h" +#include "gcm.h" +#include "md.h" +#include "platform.h" + #include "md.h" #include "platform.h" -- Gitee