近端安全互联样例使用指导

这篇具有很好参考价值的文章主要介绍了近端安全互联样例使用指导。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

样例介绍

本样例基于rk3568开发板,通过封装openharmony安全子系统deviceauth组件提供的能力,实现了一组可用于设备间快速建立可信认证和连接的接口,通过预先定义关系网,在设备初始化阶段完成端端设备间的认证,构建安全的数据传输通道。

场景介绍

本样例可以作为一个SDK集成到设备版本中,供上层业务APP或IOT SDK使用,具体应用场景可参考下图:

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

场景1:在城市鸿蒙的智慧管廊场景中,可以通过近端安全互联组件进行设备间可信认证与连接,当燃气监测仪监测到燃气泄漏时,及时对现场进行有效处理。例如:场景内甲烷浓度超标,但是风机没有正常启动,容易造成火灾,导致人员伤亡。在集成近端安全互联组件后,近端设备间可以建立安全的连接,当发生燃气泄漏时,可以实现电磁阀自动关闭、风机自动开启,避免管廊内发生火灾。

场景2:在交通鸿蒙的智慧隧道场景中,可以通过近端安全互联组件进行设备间可信认证与连接,当气体检测仪检测到浓度超标时,近端设备可以自动运行,及时处理现场,避免人工处理错过最佳时间,产生二次伤害。例如:隧道内的气体检测仪检测到浓度超标,但是风机未启动,导致有毒有害气体无法排出,造成人员伤亡。在集成近端安全互联组件后,近端设备间可以组建安全的通信网络,当隧道内气体浓度超标时,检测仪可以直接发送指令给风机,通知风机启动,及时将有毒有害气体排出隧道。

基于上述场景,产生了如下需求:近端设备间实现安全的组网和通信,能够自发进行联动。

本样例以rk3568开发板作为载体,实现设备的近端安全互联与通信,可以应用于上述场景,有效解决该场景中存在的问题。

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

样例实现的功能包括:

  • 同局域网设备间的互联

  • 获取设备预置的PIN码

  • 基于PIN码和deviceauth模块实现设备互信认证

  • 点对点设备间数据安全传输

本样例可以配合IOT SDK一起使用,IOT SDK主要承担设备注册与PIN码管理的功能,使用者也可以根据自身的实际情况选择用业务APP代替。

IOT SDK源码可以从如下地址获取:https://github.com/huaweicloud/huaweicloud-iot-device-sdk-c

约束与限制

特别说明

  • 本样例仅适用于端端设备间需要保持长连接的场景,除非本端业务主动断开与对端设备的连接,样例本身不会自动超时断开。

  • 设备间连接断开后,当再次连接时会重新进行设备认证,因此会获得新的会话密钥。

  • 保持长连接可以保障设备间数据传输的及时性,但也存在一些安全隐患,比如会话密钥不会进行更新,时间太长就存在泄露的风险,如果对该安全风险比较敏感,请勿使用本样例。

硬件说明

通过测试,rk3568开发板在作为服务端时,最多可连接100台客户端,在作为客户端时,最多可连接100台服务端。

本样例仅选取两块rk3568开发板进行介绍与演示,其中一块作为服务端,一块作为客户端。

环境准备

硬件准备

安装windows 10及以上操作系统的PC主机

两台rk3568开发板

构建环境

首先需要在PC主机上安装Ubuntu操作系统,以提供基础的编译环境,安装方法可参考:https://developer.huawei.com/consumer/cn/training/course/video/C101639987816176315

然后完成Ubuntu基础环境的配置,可参考:https://developer.huawei.com/consumer/cn/training/course/video/C101639988048536240

在Ubuntu系统中下载源码前请先执行如下指令安装所需的工具:

sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs liblz4-tool libssl-dev libtinfo-dev libtinfo5 openjdk-17-jre-headless libc6 libstdc++6 default-jdk u-boot-tools mtools mtd-utils scons gcc-arm-linux-gnueabi

该样例适配的源码版本为:Openharmony-3.1-Release,请确保下载代码时分支选择正确。

源码获取方式可参考开源社区文档 http://www.openharmony.cn/download ,选择第一种获取方式,并使用以下命令替换文档中的下载命令:

repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

编译验证

下载源码后,需要先编译rk3568版本通过,以确保编译环境正常可用。

切换到源码根目录,执行如下命令,安装编译器及二进制工具:

bash build/prebuilts\_download.sh

接着执行如下命令进行版本编译:

./build.sh --product-name rk3568 --ccache

编译完成后,日志中显示如下,则表示编译成功:

\=====build rk3568 successful.

编译生成的镜像文件在 out/rk3568/packages/phone/images/ 目录下。

集成样例

样例源码介绍

样例源码存放在00_src目录下,各个目录中的文件功能如下表:

目录 功能说明
dconnectcaseone 基于openharmony安全子系统deviceauth组件开发的分布式安全通信样例,可用于多个设备间基于预先定义的关系网完成可信认证与连接,构建安全的数据传输通道
test 用于验证样例功能可用的业务程序示例代码,使用者可以参考该代码定制自己的业务程序
figures 用于存放readme文件中的图片资源

修改社区源码

基于rk3568设备集成编译该样例时,需要按照如下步骤修改源码(+表示增加行,-表示删除行):

  • 修改base/security/deviceauth/common_lib/impl/src/clib_types.c文件内容:
 void *ClibMalloc(uint32_t size, char val)
 {
-    if (size == 0 || size > CLIB_MAX_MALLOC_SIZE) {
+    if (size == 0) {
         return NULL;
     }
     void* addr = malloc(size);
  • 修改base/security/deviceauth/common_lib/interfaces/clib_types.h文件内容:
 #define NULL 0
 #endif
 
-#define CLIB_MAX_MALLOC_SIZE 4096 /* 4K */
-
 #ifdef __cplusplus
 extern "C" {
 #endif
  • 修改build/prebuilts_download.sh文件内容:
-node_js_ver=v12.18.4
+node_js_ver='v12.18.4'
 node_js_name=node-${node_js_ver}-${host_platform}-x64
 node_js_pkg=${node_js_name}.tar.gz
  • 修改third_party/jsframework/package.json文件内容:
     "sinon": "^9.2.2",
     "ts-node": "^9.0.0",
     "tslib": "^2.0.3",
-    "typescript": "^4.1.2"
+    "typescript": "4.1.3"
   }
 }

接着按照如下流程将样例集成到rk3568产品版本中:

  • 在社区源码的vendor目录下新建目录kits,并将00_src目录下的所有文件放到kits目录下。

  • 修改build/subsystem_config.json文件,增加如下内容,新增一个subsystem:

"kits": {
  "path": "vendor/kits",
  "name": "kits"
},
  • 修改productdefine/common/products/rk3568.json文件,在parts中新增kits中的两个部件:
"type": "standard",
  "product_build_path": "device/hihope/build",
  "parts":{
      "kits:dconnectcaseone":{},
      "kits:test":{},
      "ace:ace_engine_standard":{},

编译镜像

切换到源码根目录,执行如下命令,进行编译构建:

./build.sh --product-name rk3568 --ccache

编译成功后,在 /out/rk3568 目录中通过如下指令检查是否包含本样例:

find ./out/rk3568 -name "libdconnectcaseone.z.so"

通过如下指令检查是否包含测试用业务程序:

find ./out/rk3568/kits -name "demo"

如果找不到样例对应的so文件,请检查00_src目录下的文件是否全部放到了kits目录下(请注意:ohos.build文件也是必需的)。

烧录镜像

环境准备

从 out/rk3568/packages/phone/images/ 目录下复制编译成功的rk3568镜像文件到PC的windows环境中。

然后按照如下流程配置PC的HDC环境:

  • 切换到Ubuntu环境中的源码根目录,执行如下命令,编译ohos-sdk包:
    ./build.sh --product-name ohos-sdk --ccache
  • 编译完成后,从out/sdk/ohos-sdk/windows/ 目录下将toolchains目录整个复制出来,放到D盘根目录下。

  • 将toolchains目录中的hdc_std.exe文件重命名为hdc.exe,方便后续使用,如下图所示:

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

  • 在环境变量-系统变量-Path中新建一项,值设置为D:\toolchains,之后可以在cmd窗口中直接使用HDC指令:

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

烧录指导

请参考如下链接进行烧录:

https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/docs/%E7%83%A7%E5%BD%95%E6%8C%87%E5%AF%BC%E6%96%87%E6%A1%A3.md

烧录验证

烧录完成后,开发板正常启动进入桌面(若未正常启动,需检查烧录是否失败)。

保持USB线仍为连接状态,在PC上开启一个cmd窗口,执行 hdc list targets,可以看到对应设备的序列号,如下图:

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

接着按下图所示指令执行,可以看到输出libdconnectcaseone.z.so的详细信息,则表示烧录成功:

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

另外,业务程序对应的可执行文件可通过如下方式找到:

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

使用说明

开发板烧录镜像完成后,可以通过HDC指令进入设备的shell界面,切换到/system/bin目录下,通过ls -l demo指令可以看到可执行文件demo,就是我们的测试用业务程序。

将两台设备连接网络,通过ifconfig指令查看设备的IP地址,按照下图所示的操作将其中一台设备初始化为服务端,另一台初始化为客户端,在执行客户端初始化时两端设备会自动进行绑定和认证,可以新开一个shell窗口查看认证过程中的日志。

服务端初始化(上边为初始化操作指令,下边为样例打印的日志):

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

客户端初始化(上边为初始化操作指令,下边为样例打印的日志):

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

可信认证(左侧为服务端,右侧为客户端,认证会在初始化客户端时自动触发):

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

收发数据(左侧为服务端,右侧为客户端):

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

接口列表

本样例将枚举及宏定义、回调函数、对外接口的定义内容放置于下面的头文件中:

dconnectcaseone/interface/include/dconncaseone_interface.h

回调函数

接口名 描述
typedef void (*SendDataCallback)(const char *device, uint32_t result) 数据发送回调函数
typedef void (*ReceiveDataCallback)(const char *deviceId, const char *receiveData, uint32_t datelen) 数据接收回调函数
typedef bool (*IsValidIP)(const char *ip) 校验当前连接服务端的
客户端IP地址是否合法
typedef bool (*IsValidDeviceID)(const char *deviceID) 校验当前连接服务端的
客户端的设备ID是否合法
typedef char *( *GetAuthKey)(const char *targetDeviceID) 获取对应设备的PIN码
typedef char *( *GetDeviceID)() 获取本设备ID

样例接口

接口名 描述
DCONN_API_PUBLIC uint32_t InitDConnCaseOne(uint32_t type, const char *ipAry, char *errorIp); 初始化样例。初始化类型:INIT_SERVICE/INIT_CLIENT
ipAry:IP地址字符串
初始化服务端时仅可传入一个 IP 地址
初始化客户端时可传入多个,以半角逗号分隔
DCONN_API_PUBLIC void RegisterCallback(const CallbackParam *callback); 注册回调函数
DCONN_API_PUBLIC uint32_t DConnSendData(const char *targetDeviceId, const char *data, uint32_t dataLen); 发送数据
DCONN_API_PUBLIC void UnRegisterCallback(); 取消注册回调函数
DCONN_API_PUBLIC void CloseDConnCaseOne(); 关闭样例
DCONN_API_PUBLIC const char *GetDConnVersion(); 获取样例版本号

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

近端安全互联样例使用指导,HarmonyOS,OpenHarmony,移动开发,安全,Openharmony,鸿蒙开发,移动开发,harmonyos,鸿蒙系统文章来源地址https://www.toymoban.com/news/detail-857245.html

到了这里,关于近端安全互联样例使用指导的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能

    OpenSL ES 全称为 Open Sound Library for Embedded Systems,是一个嵌入式、跨平台、免费的音频处理库。为嵌入式移动多媒体设备上的应用开发者提供标准化、高性能、低延迟的 API。HarmonyOS 的 Native API 基于Khronos Group开发的OpenSL ES 1.0.1 API 规范实现,开发者可以通过OpenSLES.h和O

    2024年02月03日
    浏览(27)
  • HarmonyOS/OpenHarmony元服务开发-卡片使用动效能力

    ArkTS卡片开放了使用动画效果的能力,支持显式动画、属性动画、组件内转场能力。需要注意的是,ArkTS卡片使用动画效果时具有以下限制:   以下示例代码实现了按钮旋转的动画效果:

    2024年02月15日
    浏览(25)
  • HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:使用低代码进行开发

    OpenHarmony低代码开发方式,具有丰富的UI界面编辑功能,遵循JS、TS开发规范 ,通过可视化界面开发方式快速构建布局,可有效降低用户的时间成本和提升用户构建UI界面的效率。 说明 支持使用低代码进行JS/eTS页面开发,本章节以开发eTS页面为例,介绍低代码功能及使用方法。

    2024年02月19日
    浏览(44)
  • HarmonyOS/OpenHarmony应用开发-Stage模型UIAbility组件使用(六)

    本文将从如下场景分别介绍设备内UIAbility间的交互方式。 启动应用内的UIAbility。启动应用内的UIAbility并获取返回结果。启动其他应用的UIAbility。启动其他应用的UIAbility并获取返回结果。启动UIAbility的指定页面。通过Call调用实现UIAbility交互(仅对系统应用开放)。 当使用隐式

    2024年02月16日
    浏览(36)
  • HarmonyOS/OpenHarmony应用开发-Stage模型UIAbility组件使用(五)

    UIAbility组件间交互(设备内) UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,该UIAbility可以是应用内的其他UIAbility,也可以是其他应用的UIAbility(例如启动三方支付UIAbility)。 本文将从如下场景分别介绍设备内UIAbility间的交互

    2024年02月16日
    浏览(34)
  • HarmonyOS/OpenHarmony应用开发-Stage模型UIAbility组件使用(一)

    一、UIAbility组件概述 1.概述 UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。 UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口;一个UIAbility组件中可以通过多个页面来实现一个功能模块。每一个UIAbility组件实例,都对应于一个最近任务列表中的

    2024年02月11日
    浏览(42)
  • HarmonyOS/OpenHarmony(Stage模型)卡片开发应用上下文Context使用场景一

    1.获取应用文件路径 基类Context提供了获取应用文件路径的能力,ApplicationContext、AbilityStageContext、UIAbilityContext和ExtensionContext均继承该能力。应用文件路径属于应用沙箱路径。上述各类Context获取的应用文件路径有所不同。 通过ApplicationContext获取应用级别的应用文件路径,此路

    2024年02月11日
    浏览(41)
  • HarmonyOS/OpenHarmony(Stage模型)卡片开发应用上下文Context使用场景二

    3.创建其他应用或其他Module的Context 基类Context提供创建其他应用或其他Module的Context的方法为createModuleContext(moduleName:string),创建其他应用或者其他Module的Context,从而通过该Context获取相应的资源信息(例如获取其他Module的获取应用开发路径信息)。 调用createModuleContext(moduleNa

    2024年02月11日
    浏览(43)
  • HarmonyOS Codelab 优秀样例——溪村小镇(ArkTS)

    溪村小镇是一款展示溪流背坡村园区风貌的应用,包括园区内的导航功能,小火车行车状态查看,以及各区域的风景展览介绍,主要用于展示HarmonyOS的ArkUI能力和动画效果。具体包括如下功能: 打开应用时进入启动页,启动页轮播展示溪村小镇风景图,之后进入应用首页。

    2024年02月09日
    浏览(19)
  • OpenHarmony 蓝区覆盖率搭建指导

    蓝区覆盖率搭建指导 下载所需环境 安装所需第三方库 配置lcov分支覆盖选项 修改配置文件中的两项使其支持分支覆盖统计 编译覆盖率版本 寻找所包含源代码.c最终生成动态库、静态库、可执行文件的gn文件,可以在**.gn 或者 .gni 一路搜索 .c 文件,直到找到生成动态库、静态

    2024年02月20日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包