From b852f44efaa8176d64ebda81b9900206c91a345c Mon Sep 17 00:00:00 2001 From: "beiling.xie" Date: Wed, 14 Sep 2022 00:18:59 +0800 Subject: [PATCH] Support to generate Udid from SN file Signed-off-by: beiling.xie --- dsoftbus/depend/BUILD.gn | 20 +++++ dsoftbus/depend/syspara/include/parameter.h | 20 +++++ dsoftbus/depend/syspara/syspara.c | 86 +++++++++++++++++++ ...001-support-deviceauth-for-openeuler.patch | 44 ++-------- 4 files changed, 133 insertions(+), 37 deletions(-) create mode 100644 dsoftbus/depend/syspara/include/parameter.h create mode 100644 dsoftbus/depend/syspara/syspara.c diff --git a/dsoftbus/depend/BUILD.gn b/dsoftbus/depend/BUILD.gn index 174ff9c9..72bf2893 100644 --- a/dsoftbus/depend/BUILD.gn +++ b/dsoftbus/depend/BUILD.gn @@ -66,3 +66,23 @@ group("appexecfwk_core") { group("libaccesstoken_sdk") { } + +config("syspara_config") { + include_dirs = [ + "syspara/include", + ] +} + +ohos_shared_library("syspara") { + include_dirs = [ + "syspara/include", + ] + sources = [ + "syspara/syspara.c", + ] + public_configs = [ ":syspara_config" ] + deps = [ + "//third_party/bounds_checking_function:libsec_shared", + "//third_party/mbedtls:mbedtls_shared", + ] +} diff --git a/dsoftbus/depend/syspara/include/parameter.h b/dsoftbus/depend/syspara/include/parameter.h new file mode 100644 index 00000000..f565bf14 --- /dev/null +++ b/dsoftbus/depend/syspara/include/parameter.h @@ -0,0 +1,20 @@ +#ifndef SYSPARA_PARAMETER_H +#define SYSPARA_PARAMETER_H + +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif +#endif /* __cplusplus */ + +int GetDevUdid(char *udid, int size); + +char * GetDeviceType(void); + +#ifdef __cplusplus +#if __cplusplus +} +#endif +#endif /* __cplusplus */ + +#endif /* SYSPARA_PARAMETER_H */ diff --git a/dsoftbus/depend/syspara/syspara.c b/dsoftbus/depend/syspara/syspara.c new file mode 100644 index 00000000..677c5d3f --- /dev/null +++ b/dsoftbus/depend/syspara/syspara.c @@ -0,0 +1,86 @@ +#include +#include "securec.h" +#include "parameter.h" +#include "sha256.h" + +#define SN_FILE "/etc/SN" +#define SN_LEN 65 +#define UDID_LEN 65 +#define DEV_BUF_LENGTH 3 +#define HASH_LENGTH 32 +static char *deviceType = "UNKNOWN"; + +static int GetHash(const char *input, char *output, int size) +{ + char buf[DEV_BUF_LENGTH] = { 0 }; + unsigned char hash[HASH_LENGTH] = { 0 }; + mbedtls_sha256_context context; + + mbedtls_sha256_init(&context); + mbedtls_sha256_starts_ret(&context, 0); + mbedtls_sha256_update_ret(&context, (const unsigned char*)input, strlen(input)); + mbedtls_sha256_finish_ret(&context, hash); + + for (size_t i = 0; i < HASH_LENGTH; i++) { + unsigned char value = hash[i]; + memset_s(buf, DEV_BUF_LENGTH, 0, DEV_BUF_LENGTH); + sprintf_s(buf, sizeof(buf), "%02X", value); + if (strcat_s(output, size, buf) != 0) { + return -1; + } + } + return 0; +} + +int GetDevUdid(char *udid, int size) +{ + FILE *fp; + char *realPath = NULL; + char sn[SN_LEN] = {0}; + char out[UDID_LEN] = {0}; + int ret; + + realPath = realpath(SN_FILE, NULL); + if (realPath == NULL) { + printf("realpath fail.\n"); + goto err_realpath; + } + + fp = fopen(realPath, "r"); + if (fp == NULL) { + printf("open SN fail.\n"); + goto err_fopen; + } + + ret = fscanf_s(fp, "%s", sn, SN_LEN); + if (ret < 1) { + printf("get sn fail.\n"); + goto err_out; + } + + ret = GetHash(sn, out, UDID_LEN); + if (ret < 0) { + printf("get hash fail.\n"); + goto err_out; + } + + ret = sprintf_s(udid, size, "%s", out); + if (ret <= 0) { + printf("sprintf_s error.\n"); + goto err_out; + } + + fclose(fp); + return 0; +err_out: + fclose(fp); +err_fopen: + free(realPath); +err_realpath: + return -1; +} + +char * GetDeviceType(void) +{ + return deviceType; +} diff --git a/dsoftbus/hichain/deviceauth/0001-support-deviceauth-for-openeuler.patch b/dsoftbus/hichain/deviceauth/0001-support-deviceauth-for-openeuler.patch index 208ed4f2..8bfb0ef7 100644 --- a/dsoftbus/hichain/deviceauth/0001-support-deviceauth-for-openeuler.patch +++ b/dsoftbus/hichain/deviceauth/0001-support-deviceauth-for-openeuler.patch @@ -1,19 +1,18 @@ -From 6a65c13ee13522f5d3c3a9f298ef35fe0162f9aa Mon Sep 17 00:00:00 2001 -From: "beiling.xie" -Date: Tue, 19 Jul 2022 12:01:01 +0800 +From 6a4234339518e8be293aacee4aeef6aaa38d7e69 Mon Sep 17 00:00:00 2001 +From: "beiling.xie" +Date: Wed, 14 Sep 2022 00:12:20 +0800 Subject: [PATCH] support deviceauth for openeuler Signed-off-by: beiling.xie --- deps_adapter/BUILD.gn | 3 ++- - deps_adapter/os_adapter/impl/src/linux/hc_dev_info.c | 7 +++++-- deps_adapter/os_adapter/interfaces/linux/hc_log.h | 8 ++++---- services/BUILD.gn | 2 +- .../src/permission_adapter/permission_adapter.cpp | 11 +++++++---- - 5 files changed, 19 insertions(+), 12 deletions(-) + 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/deps_adapter/BUILD.gn b/deps_adapter/BUILD.gn -index 28df2d9..9324baf 100644 +index 28df2d9..906b8ca 100644 --- a/deps_adapter/BUILD.gn +++ b/deps_adapter/BUILD.gn @@ -118,10 +118,11 @@ if (defined(ohos_lite)) { @@ -21,43 +20,14 @@ index 28df2d9..9324baf 100644 deps = [ "//base/security/huks/interfaces/innerkits/huks_standard/main:libhukssdk", - "//base/startup/syspara_lite/interfaces/innerkits/native/syspara:syspara", -+# "//base/startup/syspara_lite/interfaces/innerkits/native/syspara:syspara", ++ "//depend:syspara", "//third_party/cJSON:cjson_static", "//third_party/openssl:libcrypto_static", "//utils/native/base:utils", -+ "//third_party/bounds_checking_function:libsec_shared" ++ "//third_party/bounds_checking_function:libsec_shared", ] external_deps = [ "hiviewdfx_hilog_native:libhilog" ] } -diff --git a/deps_adapter/os_adapter/impl/src/linux/hc_dev_info.c b/deps_adapter/os_adapter/impl/src/linux/hc_dev_info.c -index 800b7cf..c16f2f5 100644 ---- a/deps_adapter/os_adapter/impl/src/linux/hc_dev_info.c -+++ b/deps_adapter/os_adapter/impl/src/linux/hc_dev_info.c -@@ -16,19 +16,22 @@ - #include "hc_dev_info.h" - #include "hal_error.h" - #include "hc_log.h" --#include "parameter.h" -+//#include "parameter.h" - #include "securec.h" - - #ifdef __cplusplus - extern "C" { - #endif - -+#define DEFAULT_UDID_NAME "ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00ABCDEF00" -+ - int32_t HcGetUdid(uint8_t *udid, int32_t udidLen) - { - if (udid == NULL || udidLen < INPUT_UDID_LEN || udidLen > MAX_INPUT_UDID_LEN) { - return HAL_ERR_INVALID_PARAM; - } -- int32_t res = GetDevUdid((char *)udid, udidLen); -+// int32_t res = GetDevUdid((char *)udid, udidLen); -+ int32_t res = strncpy_s((char *)udid, udidLen, DEFAULT_UDID_NAME, strlen(DEFAULT_UDID_NAME)); - if (res != 0) { - LOGE("[OS]: GetDevUdid fail! res: %d", res); - return HAL_FAILED; diff --git a/deps_adapter/os_adapter/interfaces/linux/hc_log.h b/deps_adapter/os_adapter/interfaces/linux/hc_log.h index 7cfd649..f881d1e 100644 --- a/deps_adapter/os_adapter/interfaces/linux/hc_log.h -- Gitee