diff --git a/ext/mini/services/devicemanagerservice/BUILD.gn b/ext/mini/services/devicemanagerservice/BUILD.gn index 633bc46accb3b7596e0118f48cac1f23694db27f..cae2bb37ff0403e049c00cb4b7cf664180e27a56 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 b17b597b186a7fcf4c7105f14860de42683ebb63..bf37c5ab5d459c8613df9abd31c431e2785af8d1 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 bb96c37a7044c5a55a282bc3077f4f9ed3ee30f6..2679ae001eef0974ae18f54a32a7315447e7f28b 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 cde4b3193c839c7d977c0188478d1d6adbfb58ef..62f6934e349ea94edc7c767505b2bb8d2b92943b 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 a7f5f3aa7a9c193955841495ec4693df583cdb06..bc7c56a549ce8cae2eb44752114806cbba772abb 100644 --- a/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h +++ b/services/devicemanagerservice/include/dependency/softbus/softbus_connector.h @@ -29,6 +29,23 @@ #include "softbus_discovery_callback.h" #include "softbus_session.h" #include "softbus_state_callback.h" +<<<<<<< HEAD +#include "base64.h" +#include "ctr_drbg.h" +#include "entropy.h" +#include "gcm.h" +#include "md.h" +#include "platform.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 +89,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 4ece01e321d9abed10799d25318b18acd538fada..5e8174f3e799826ec637a036e16c2c70aaadb6ca 100644 --- a/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp +++ b/services/devicemanagerservice/src/dependency/softbus/softbus_connector.cpp @@ -399,15 +399,38 @@ 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; +<<<<<<< HEAD + +======= + +>>>>>>> fe0f2f97091b765f6f6a1e363b6c6dcaacfb08fe + 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 +446,144 @@ void SoftbusConnector::CovertDeviceInfoToDmDevice(const DeviceInfo &deviceInfo, LOGE("copy data failed"); } dmDeviceInfo.deviceTypeId = deviceInfo.devType; + dmDeviceInfo.networkId = {0}; +} + +<<<<<<< HEAD +int32_t SoftbusConnector::GetUdidHash(uint8_t *udid, int32_t udiddataLen, uint8_t outudiddData[32]) +{ +======= +/* +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]) +{ +>>>>>>> fe0f2f97091b765f6f6a1e363b6c6dcaacfb08fe + 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); +<<<<<<< HEAD + +======= + +>>>>>>> fe0f2f97091b765f6f6a1e363b6c6dcaacfb08fe + 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"); +<<<<<<< HEAD + 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); +======= + 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); +>>>>>>> fe0f2f97091b765f6f6a1e363b6c6dcaacfb08fe + return ret; } void SoftbusConnector::OnPublishSuccess(int32_t publishId)