From c7fe7e1422af2a0b4fdbd7e514f8b8c6054170e8 Mon Sep 17 00:00:00 2001
From: "beiling.xie" <xiekunxunn@huawei.com>
Date: Tue, 19 Jul 2022 21:01:41 +0800
Subject: [PATCH] support huks for openeuler

Signed-off-by: beiling.xie <xiekunxun@huawei.com>
---
 frameworks/huks_standard/main/BUILD.gn            |  1 +
 .../huks_standard/main/core/src/hks_verifier.c    | 10 ++++++----
 .../crypto_engine/openssl/src/hks_openssl_kdf.c   |  4 +++-
 .../huks_standard/main/os_dependency/BUILD.gn     | 15 ++++++++++-----
 .../main/os_dependency/log/hks_log.c              | 14 +++++++-------
 interfaces/innerkits/huks_standard/main/BUILD.gn  |  1 +
 .../huks_service/main/os_dependency/BUILD.gn      |  2 +-
 .../huks_service/main/os_dependency/idl/BUILD.gn  |  6 +++---
 utils/file_operator/hks_file_operator.c           |  6 +++---
 9 files changed, 35 insertions(+), 24 deletions(-)

diff --git a/frameworks/huks_standard/main/BUILD.gn b/frameworks/huks_standard/main/BUILD.gn
index 83d7750..cd899cd 100755
--- a/frameworks/huks_standard/main/BUILD.gn
+++ b/frameworks/huks_standard/main/BUILD.gn
@@ -20,6 +20,7 @@ group("huks_standard_frameworks") {
       "//base/security/huks/frameworks/huks_standard/main/core:libhuks_core_standard_static",
       "//base/security/huks/frameworks/huks_standard/main/crypto_engine:libhuks_crypto_engine_standard_static",
       "//base/security/huks/frameworks/huks_standard/main/os_dependency:libhuks_os_dependency_standard_static",
+      "//base/security/huks/services/huks_standard/huks_service/main/os_dependency:libhuks_service_os_dependency_standard_static",
     ]
   }
 }
diff --git a/frameworks/huks_standard/main/core/src/hks_verifier.c b/frameworks/huks_standard/main/core/src/hks_verifier.c
index 149137d..a65f27e 100755
--- a/frameworks/huks_standard/main/core/src/hks_verifier.c
+++ b/frameworks/huks_standard/main/core/src/hks_verifier.c
@@ -250,8 +250,9 @@ static int32_t ExtractTlvLength(const uint8_t *in, uint32_t inLen, uint32_t *hea
     uint8_t *buf = (uint8_t *)in;
     uint32_t length = 0; /* length of the payload */
 
-    uint32_t tmp;
-    HKS_ASN1_DECODE_BYTE(buf, tmp); /* get type */
+//    uint32_t tmp;
+//    HKS_ASN1_DECODE_BYTE(buf, tmp); /* get type */
+    buf++;
     if (buf[0] < ASN_1_MIN_VAL_1_EXTRA_LEN_BYTE) {
         /* Current byte tells the length */
         HKS_ASN1_DECODE_BYTE(buf, length);
@@ -301,8 +302,9 @@ static int32_t ExtractTlvData(const uint8_t *in, uint32_t inLen, uint8_t *out, u
     uint8_t *buf = (uint8_t *)in;
     uint32_t length = 0; /* length of the payload */
 
-    uint32_t tmp;
-    HKS_ASN1_DECODE_BYTE(buf, tmp); /* get type */
+//    uint32_t tmp;
+//    HKS_ASN1_DECODE_BYTE(buf, tmp); /* get type */
+    buf++;
     if (buf[0] < ASN_1_MIN_VAL_1_EXTRA_LEN_BYTE) {
         /* Current byte tells the length */
         HKS_ASN1_DECODE_BYTE(buf, length);
diff --git a/frameworks/huks_standard/main/crypto_engine/openssl/src/hks_openssl_kdf.c b/frameworks/huks_standard/main/crypto_engine/openssl/src/hks_openssl_kdf.c
index 258b206..5db3e4d 100755
--- a/frameworks/huks_standard/main/crypto_engine/openssl/src/hks_openssl_kdf.c
+++ b/frameworks/huks_standard/main/crypto_engine/openssl/src/hks_openssl_kdf.c
@@ -57,6 +57,7 @@ int32_t HksOpensslHkdf(const struct HksBlob *mainKey, const struct HksKeySpec *d
     EVP_PKEY_CTX *pctx;
     pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, NULL);
     int32_t ret = HKS_FAILURE;
+
     do {
         if (EVP_PKEY_derive_init(pctx) <= 0) {
             HksLogOpensslError();
@@ -78,7 +79,8 @@ int32_t HksOpensslHkdf(const struct HksBlob *mainKey, const struct HksKeySpec *d
             HksLogOpensslError();
             break;
         }
-        if (EVP_PKEY_derive(pctx, derivedKey->data, (size_t *)&derivedKey->size) <= 0) {
+        size_t new = derivedKey->size;
+	if (EVP_PKEY_derive(pctx, derivedKey->data, &new) <= 0) {
             HksLogOpensslError();
             break;
         }
diff --git a/frameworks/huks_standard/main/os_dependency/BUILD.gn b/frameworks/huks_standard/main/os_dependency/BUILD.gn
index 7d03e55..6da94a5 100755
--- a/frameworks/huks_standard/main/os_dependency/BUILD.gn
+++ b/frameworks/huks_standard/main/os_dependency/BUILD.gn
@@ -26,6 +26,8 @@ ohos_static_library("libhuks_os_dependency_standard_static") {
   public_configs = [ ":huks_config" ]
   include_dirs = [
     "log",
+    "sysinfo/include",
+    "../../../../services/huks_standard/huks_service/main/core/include/",
     "//utils/native/base/include",
     "//utils/system/safwk/native/include",
   ]
@@ -35,17 +37,20 @@ ohos_static_library("libhuks_os_dependency_standard_static") {
     "_HUKS_LOG_ENABLE_",
   ]
   sources = [
-    "./ipc/src/hks_client_service_ipc.c",
-    "./ipc/src/hks_ipc_check.c",
-    "./ipc/src/hks_ipc_serialization.c",
-    "./ipc/src/hks_ipc_slice.c",
-    "./ipc/src/hks_request.cpp",
+#    "./ipc/src/hks_client_service_ipc.c",
+#    "./ipc/src/hks_ipc_check.c",
+#    "./ipc/src/hks_ipc_serialization.c",
+#    "./ipc/src/hks_ipc_slice.c",
+#    "./ipc/src/hks_request.cpp",
+    "./ipc/src/hks_client_service_passthrough.c",
+    "./sysinfo/src/hks_get_process_info_passthrough.c",
     "./log/hks_log.c",
     "./posix/hks_mem.c",
   ]
   deps = [
     "//base/security/huks/frameworks/huks_standard/main/common:libhuks_common_standard_static",
     "//utils/native/base:utils",
+    "//third_party/bounds_checking_function:libsec_shared",
   ]
   external_deps = [
     "hiviewdfx_hilog_native:libhilog",
diff --git a/frameworks/huks_standard/main/os_dependency/log/hks_log.c b/frameworks/huks_standard/main/os_dependency/log/hks_log.c
index ef7d264..5beadab 100755
--- a/frameworks/huks_standard/main/os_dependency/log/hks_log.c
+++ b/frameworks/huks_standard/main/os_dependency/log/hks_log.c
@@ -22,8 +22,8 @@
 
 #undef LOG_DOMAIN
 #undef LOG_TAG
-static const unsigned int LOG_DOMAIN = 0xD002F01;
-static const char* LOG_TAG = "HUKS";
+//static const unsigned int LOG_DOMAIN = 0xD002F01;
+//static const char* LOG_TAG = "HUKS";
 
 #define MAX_LOG_BUFF_LEN 512
 
@@ -48,16 +48,16 @@ void HksLog(uint32_t logLevel, const char *funcName, uint32_t lineNo, const char
 
     switch (logLevel) {
         case HKS_LOG_LEVEL_I:
-            HILOG_INFO(LOG_CORE, "%{public}s[%{public}u]: %{public}s\n", funcName, lineNo, buf);
+            HILOG_INFO(LOG_CORE, "%s[%u]: %s\n", funcName, lineNo, buf);
             break;
         case HKS_LOG_LEVEL_E:
-            HILOG_ERROR(LOG_CORE, "%{public}s[%{public}u]: %{public}s\n", funcName, lineNo, buf);
+            HILOG_ERROR(LOG_CORE, "%s[%u]: %s\n", funcName, lineNo, buf);
             break;
         case HKS_LOG_LEVEL_W:
-            HILOG_WARN(LOG_CORE, "%{public}s[%{public}u]: %{public}s\n", funcName, lineNo, buf);
+            HILOG_WARN(LOG_CORE, "%s[%u]: %s\n", funcName, lineNo, buf);
             break;
         case HKS_LOG_LEVEL_D:
-            HILOG_DEBUG(LOG_CORE, "%{public}s[%{public}u]: %{private}s\n", funcName, lineNo, buf);
+            HILOG_DEBUG(LOG_CORE, "%s[%u]: %s\n", funcName, lineNo, buf);
             break;
         default:
             HKS_FREE_PTR(buf);
@@ -65,4 +65,4 @@ void HksLog(uint32_t logLevel, const char *funcName, uint32_t lineNo, const char
     }
 
     HKS_FREE_PTR(buf);
-}
\ No newline at end of file
+}
diff --git a/interfaces/innerkits/huks_standard/main/BUILD.gn b/interfaces/innerkits/huks_standard/main/BUILD.gn
index 1ca1e02..88e620d 100755
--- a/interfaces/innerkits/huks_standard/main/BUILD.gn
+++ b/interfaces/innerkits/huks_standard/main/BUILD.gn
@@ -41,6 +41,7 @@ if (os_level == "standard") {
     deps = [
       "//base/security/huks/frameworks/huks_standard/main:huks_standard_frameworks",
       "//base/security/huks/utils/crypto_adapter:libhuks_utils_client_service_adapter_static",
+       "//base/security/huks/services/huks_standard/huks_engine/main/core:huks_engine_core_standard",
     ]
   }
 }
diff --git a/services/huks_standard/huks_service/main/os_dependency/BUILD.gn b/services/huks_standard/huks_service/main/os_dependency/BUILD.gn
index 931d20c..01078b7 100755
--- a/services/huks_standard/huks_service/main/os_dependency/BUILD.gn
+++ b/services/huks_standard/huks_service/main/os_dependency/BUILD.gn
@@ -34,7 +34,7 @@ ohos_static_library("libhuks_service_os_dependency_standard_static") {
   ]
   sources = [
     "posix/hks_rwlock.c",
-    "sa/hks_sa.cpp",
+#    "sa/hks_sa.cpp",
   ]
   deps = [
     "//base/security/huks/frameworks/huks_standard/main/common:libhuks_common_standard_static",
diff --git a/services/huks_standard/huks_service/main/os_dependency/idl/BUILD.gn b/services/huks_standard/huks_service/main/os_dependency/idl/BUILD.gn
index e86a491..3ffcfa1 100755
--- a/services/huks_standard/huks_service/main/os_dependency/idl/BUILD.gn
+++ b/services/huks_standard/huks_service/main/os_dependency/idl/BUILD.gn
@@ -32,9 +32,9 @@ ohos_static_library("libhuks_service_idl_standard_static") {
     "_HUKS_LOG_ENABLE_",
   ]
   sources = [
-    "ipc/hks_ipc_serialization.c",
-    "ipc/hks_ipc_service.c",
-    "ipc/hks_response.cpp",
+#    "ipc/hks_ipc_serialization.c",
+#    "ipc/hks_ipc_service.c",
+#    "ipc/hks_response.cpp",
     "passthrough/huks_access.c",
     "passthrough/huks_core_dynamic_hal.c",
   ]
diff --git a/utils/file_operator/hks_file_operator.c b/utils/file_operator/hks_file_operator.c
index 5543c38..5c2e704 100755
--- a/utils/file_operator/hks_file_operator.c
+++ b/utils/file_operator/hks_file_operator.c
@@ -93,7 +93,7 @@ static uint32_t FileRead(const char *fileName, uint32_t offset, uint8_t *buf, ui
     }
 
     char filePath[PATH_MAX + 1] = {0};
-    (void)realpath(fileName, filePath);
+    char *path __attribute__((unused)) = realpath(fileName, filePath);
     if (strstr(filePath, "../") != NULL) {
         HKS_LOG_E("invalid filePath, path %s", filePath);
         return 0;
@@ -137,7 +137,7 @@ static int32_t FileWrite(const char *fileName, uint32_t offset, const uint8_t *b
     if (memcpy_s(filePath, sizeof(filePath) - 1, fileName, strlen(fileName)) != EOK) {
         return HKS_ERROR_BAD_STATE;
     }
-    (void)realpath(fileName, filePath);
+    char *path __attribute__((unused)) = realpath(fileName, filePath);
     if (strstr(filePath, "../") != NULL) {
         HKS_LOG_E("invalid filePath, path %s", filePath);
         return HKS_ERROR_INVALID_KEY_FILE;
@@ -519,4 +519,4 @@ uint32_t HksFileSize(const char *path, const char *fileName)
 int32_t HksGetFileName(const char *path, const char *fileName, char *fullFileName, uint32_t fullFileNameLen)
 {
     return GetFileName(path, fileName, fullFileName, fullFileNameLen);
-}
\ No newline at end of file
+}
-- 
2.25.1

