11b8d9b87Sopenharmony_ci# Copyright (C) 2022-2023 Huawei Device Co., Ltd.
21b8d9b87Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
31b8d9b87Sopenharmony_ci# you may not use this file except in compliance with the License.
41b8d9b87Sopenharmony_ci# You may obtain a copy of the License at
51b8d9b87Sopenharmony_ci#
61b8d9b87Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
71b8d9b87Sopenharmony_ci#
81b8d9b87Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
91b8d9b87Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
101b8d9b87Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
111b8d9b87Sopenharmony_ci# See the License for the specific language governing permissions and
121b8d9b87Sopenharmony_ci# limitations under the License.
131b8d9b87Sopenharmony_ci
141b8d9b87Sopenharmony_ciimport("//base/security/crypto_framework/common/common.gni")
151b8d9b87Sopenharmony_ciimport("//base/security/crypto_framework/frameworks/frameworks.gni")
161b8d9b87Sopenharmony_ciimport("//build/ohos.gni")
171b8d9b87Sopenharmony_ci
181b8d9b87Sopenharmony_ciohos_shared_library("cj_cryptoframework_ffi") {
191b8d9b87Sopenharmony_ci  branch_protector_ret = "pac_ret"
201b8d9b87Sopenharmony_ci  include_dirs = [ "include" ]
211b8d9b87Sopenharmony_ci  include_dirs += framework_inc_path
221b8d9b87Sopenharmony_ci
231b8d9b87Sopenharmony_ci  if (os_level == "standard") {
241b8d9b87Sopenharmony_ci    sanitize = {
251b8d9b87Sopenharmony_ci      cfi = true
261b8d9b87Sopenharmony_ci      cfi_cross_dso = true
271b8d9b87Sopenharmony_ci      debug = false
281b8d9b87Sopenharmony_ci    }
291b8d9b87Sopenharmony_ci  }
301b8d9b87Sopenharmony_ci
311b8d9b87Sopenharmony_ci  cflags = [
321b8d9b87Sopenharmony_ci    "-DHILOG_ENABLE",
331b8d9b87Sopenharmony_ci    "-fPIC",
341b8d9b87Sopenharmony_ci    "-g3",
351b8d9b87Sopenharmony_ci  ]
361b8d9b87Sopenharmony_ci
371b8d9b87Sopenharmony_ci  if (!defined(defines)) {
381b8d9b87Sopenharmony_ci    defines = []
391b8d9b87Sopenharmony_ci  }
401b8d9b87Sopenharmony_ci
411b8d9b87Sopenharmony_ci  if (!ohos_indep_compiler_enable && !build_ohos_sdk &&
421b8d9b87Sopenharmony_ci      product_name != "qemu-arm-linux-min" &&
431b8d9b87Sopenharmony_ci      product_name != "rk3568_mini_system") {
441b8d9b87Sopenharmony_ci    deps = [ "${framework_path}:crypto_framework_lib" ]
451b8d9b87Sopenharmony_ci    external_deps = [
461b8d9b87Sopenharmony_ci      "bounds_checking_function:libsec_shared",
471b8d9b87Sopenharmony_ci      "hilog:libhilog",
481b8d9b87Sopenharmony_ci      "napi:ace_napi",
491b8d9b87Sopenharmony_ci      "napi:cj_bind_ffi",
501b8d9b87Sopenharmony_ci      "napi:cj_bind_native",
511b8d9b87Sopenharmony_ci    ]
521b8d9b87Sopenharmony_ci    sources = [
531b8d9b87Sopenharmony_ci      "src/asy_key_generator_impl.cpp",
541b8d9b87Sopenharmony_ci      "src/asy_key_spec_generator_impl.cpp",
551b8d9b87Sopenharmony_ci      "src/cipher_impl.cpp",
561b8d9b87Sopenharmony_ci      "src/crypto_ffi.cpp",
571b8d9b87Sopenharmony_ci      "src/dh_key_util_impl.cpp",
581b8d9b87Sopenharmony_ci      "src/ecc_key_util_impl.cpp",
591b8d9b87Sopenharmony_ci      "src/kdf_impl.cpp",
601b8d9b87Sopenharmony_ci      "src/key_agreement_impl.cpp",
611b8d9b87Sopenharmony_ci      "src/key_impl.cpp",
621b8d9b87Sopenharmony_ci      "src/key_pair_impl.cpp",
631b8d9b87Sopenharmony_ci      "src/mac_impl.cpp",
641b8d9b87Sopenharmony_ci      "src/md_impl.cpp",
651b8d9b87Sopenharmony_ci      "src/pri_key_impl.cpp",
661b8d9b87Sopenharmony_ci      "src/pub_key_impl.cpp",
671b8d9b87Sopenharmony_ci      "src/random_impl.cpp",
681b8d9b87Sopenharmony_ci      "src/sign_impl.cpp",
691b8d9b87Sopenharmony_ci      "src/sm2_crypto_util_impl.cpp",
701b8d9b87Sopenharmony_ci      "src/sym_key_generator_impl.cpp",
711b8d9b87Sopenharmony_ci      "src/sym_key_impl.cpp",
721b8d9b87Sopenharmony_ci      "src/verify_impl.cpp",
731b8d9b87Sopenharmony_ci    ]
741b8d9b87Sopenharmony_ci  } else {
751b8d9b87Sopenharmony_ci    defines += [ "PREVIEWER" ]
761b8d9b87Sopenharmony_ci    sources = [ "src/crypto_mock.cpp" ]
771b8d9b87Sopenharmony_ci    external_deps = [ "napi:cj_bind_ffi" ]
781b8d9b87Sopenharmony_ci  }
791b8d9b87Sopenharmony_ci
801b8d9b87Sopenharmony_ci  if (is_ohos) {
811b8d9b87Sopenharmony_ci    defines += [ "OHOS_PLATFORM" ]
821b8d9b87Sopenharmony_ci  }
831b8d9b87Sopenharmony_ci
841b8d9b87Sopenharmony_ci  if (is_mingw) {
851b8d9b87Sopenharmony_ci    defines += [ "WINDOWS_PLATFORM" ]
861b8d9b87Sopenharmony_ci  }
871b8d9b87Sopenharmony_ci
881b8d9b87Sopenharmony_ci  innerapi_tags = [ "platformsdk" ]
891b8d9b87Sopenharmony_ci
901b8d9b87Sopenharmony_ci  subsystem_name = "security"
911b8d9b87Sopenharmony_ci  part_name = "crypto_framework"
921b8d9b87Sopenharmony_ci}
93