OpenHarmony 移植安全子系统

安全子系统提供网络设备连接、认证鉴权等功能,依赖mbedtls实现硬件随机数以及联网功能。

由于每个厂商芯片硬件与实现硬件随机数的方式不同,需要适配硬件随机数接口。

移植指导

OpenHarmony提供了mbedtls的开源三方库,路径为“//third_party/mbedtls”。此库中提供了“mbedtls_platform_entropy_poll”、“mbedtls_hardclock_poll”、“mbedtls_havege_poll”、“mbedtls_hardware_poll”等几种产生随机数的方式。厂商需要根据芯片适配“mbedtls_hardware_poll”方式。

移植实例

  1. “config.json”添加文件系统。
    路径:“vendor/MyVendorCompany/MyProduct/config.json” 修改如下:
   {
     "subsystem": "security",
     "components": [
       { "component": "hichainsdk", "features":[] },
       { "component": "huks", "features":[]}
     ]
   },
  1. 配置宏,打开硬件随机数接口相关代码。
    根据mbedtls的编译文件可以看出,配置宏的位置在”MBEDTLS_CONFIG_FILE=<../port/config/config_liteos_m.h>”文件中。 路径:“third_party/mbedtls/BUILD.gn”
   if (ohos_kernel_type == "liteos_m") {
     defines += [
       "__unix__",
       "MBEDTLS_CONFIG_FILE=&lt;../port/config/config_liteos_m.h&gt;",
     ]
   }

根据代码我们可以看出需要配置“MBEDTLS_NO_PLATFORM_ENTROPY”、“MBEDTLS_ENTROPY_HARDWARE_ALT”两个宏,才能编译硬件随机数的相关代码。

路径:“third_party/mbedtls/library/entropy.c”

   #if !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
   #if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
       mbedtls_entropy_add_source( ctx, mbedtls_platform_entropy_poll, NULL,
                                   MBEDTLS_ENTROPY_MIN_PLATFORM,
                                   MBEDTLS_ENTROPY_SOURCE_STRONG );
   #endif
   ......
   #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
       mbedtls_entropy_add_source( ctx, mbedtls_hardware_poll, NULL,
                                   MBEDTLS_ENTROPY_MIN_HARDWARE,
                                   MBEDTLS_ENTROPY_SOURCE_STRONG );
   #endif
   ......
   #endif /* MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES */
   }
  1. 适配硬件随机数接口
    接口定义如下:

路径:“third_party/mbedtls/include/mbedtls/entropy_poll.h”

   int mbedtls_hardware_poll( void *data,unsigned char *output, size_t len, size_t *olen );

表1 安全子系统配置项

配置项意义
disable_huks_binary是否编译HUKS源码。
(1) 默认值: false,不编译HUKS源码。
(2) 其他值: true,编译HUKS源码。
disable_authenticate是否需要裁剪hichain认证功能。
(1) 默认值: true,不裁剪。
(2) 其他值: false,裁剪hichain认证功能。
huks_use_lite_storage是否采用轻量化存储方案。无文件系统、仅有flash存储的设备,可采用轻量化存储方案。
(1) 默认值: true,使用轻量化存储。
(2) 其他值: false,不使用轻量化存储。
huks_use_hardware_root_key是否使用硬件根密钥。设备存在硬件根密钥能力时,需要根据自身能力适配硬件根密钥方案;HUKS提供的RKC方案仅为模拟实现。
(1) 默认值:false,默认值,默认无硬件根密钥。
(2) 其他值:true,设备具有硬件根密钥相关能力时,应自行适配。
huks_config_file是否使用HUKS默认配置文件。
(1) 默认值:””:使用HUKS默认配置文件hks_config.h。
(2) 其他文件:产品可在HUKS支持能力集合中自行选择所要支持的特性。

说明:
在添加安全子系统时,可直接通过配置feature来选择安全子系统特性。

&gt; {
&gt;   "subsystem": "security",
&gt;   "components": [
&gt;     { "component": "hichainsdk", "features":[] },
&gt;     { "component": "huks", "features":
&gt;       [
&gt;         "disable_huks_binary = false",
&gt;         "disable_authenticate = false"
&gt;       ]
&gt;     }
&gt;   ]
&gt; },
阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=21694,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?