当前位置: 首页 > article >正文

iOS Matter 操作证书签发方案

在 Matter 配网和操作中,为了信息交互的安全,在配网时,Commissioner自身需要完整的证书,同时需要向设备安装操作证书。

Matter 证书包含:

  • RCA: 根证书

  • ICA: 中间证书,可选

  • NOC: 操作证书(注意有以下两种操作证书)

    • MTRDeviceController操作证书: MTRDeviceController 使用的 NOC
    • 设备操作证书:发送给设备的NOC

MTRDeviceController初始化

必须要的参数

ipk: 16字节,对 fabric 有效,随机数。

VendorID: 厂商ID

keyPair: 基于 RCA 或者 commissioner NOC(如果指定的话) 的公私钥对。还要用私钥实现相关加密方法。

证书签发方式

在 Apple 提供的 Matter.framework 框架中,提供三种不同的证书签发方案。

  1. 本地自动签发(开源中DarWin 示例工程方案),只需要指定FabricID 即可完成整个证书的自动签发,缺点:本设备有效,同步难。

  2. 本地指定 RCA, ICA,NOC(以上三个证书可以本地保存,也可以云端请求),后续自动根据证书参数生成设备 NOC. 缺点:不安全

  3. 所有证书云端签发: Commissioner初始化之前,从云端获取RCA, ICA,NOC。自行实现 nocChinIsser ,根据 CSR 信息由云端生成设备的 NOC。缺点:依赖网络和云端证书。

还需要指定 paa 列表,可以参考dcl (csa-iot.org)否则会出现设备不信任回调。

节点操作凭证过程

截屏2023-03-31 11.33.16

设备节点操作证书是基于 CSR 信息签发。可以由本地默认签发,也可以通过服务器签发。

服务器签发

服务器签发需要自定义签发器,并且遵守MTROperationalCertificateIssuer并回调设备节点操作证书。

- (void)issueOperationalCertificateForRequest:(MTROperationalCSRInfo *)csrInfo
                              attestationInfo:(MTRDeviceAttestationInfo *)attestationInfo
                                   controller:(MTRDeviceController *)controller
                                   completion:(void (^)(MTROperationalCertificateChain * _Nullable info,
                                                        NSError * _Nullable error))completion  API_AVAILABLE(ios(16.4)){
                                     // 基于csr信息 在云端或者自行签发设备的操作证书。
 }

为MTRDeviceController设置操作证书签发器

// iOS 16.4
MTRDeviceControllerStartupParams * params = [[MTRDeviceControllerStartupParams alloc] initWithIPK:ipk operationalKeypair:keypair operationalCertificate:nocCertificate intermediateCertificate:icaCertificate rootCertificate:rootCertificate];
//xxxIssuer *issuer =   签发器实体
//dispatch_queue_t nocIssuerQueue =  签发队列
[params setOperationalCertificateIssuer:issuer];
[params setOperationalCertificateIssuerQueue:nocIssuerQueue];

http://www.kler.cn/a/13463.html

相关文章:

  • go 语言中 struct 中 json 是代表什么意思
  • IPWorks VoIP 2022 Crack
  • 在OLED上显示各种各样的数据(文字、字母、图片)
  • PWM控制直流电机
  • 【FPGA实验1】FPGA点灯工程师养成记
  • 什么是BASE最终一致性
  • 高压放大器应用之无损检测
  • ASRock Z690 Extreme WiFi 6E i7 13700KF电脑 Hackintosh 黑苹果efi引导文件
  • 用python获取当前目录下的创建时间超过3天的所有python文件
  • 靶机精讲:BNE0x03Simple
  • 月收入过万是什么水平?在90年代可是“万人户”
  • Docker容器部署
  • 微信为什么使用 SQLite 保存聊天记录
  • Java线程基础知识
  • Hive msck 描述
  • matlab数据归一化与反归一化处理
  • 信息安全复习四:置换密码乘积密码隐写术
  • Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)
  • 【NestJs】数据库重构
  • 德赛西威上海车展重磅发布Smart Solution 2.0,有哪些革新点?