Provisionning protocol —— PDUs
Provisionning protocol
Provisionning PDUs
配置PDUs是供应者和设备之间相互交流的数据格式,它在通用供应层进行传输。
配置PDU的第一个字节是类型控制,定义PUD参数的格式。
格式定义如下:
控制域 | 大小(bits) | 描述 |
---|---|---|
固定值 | 2 | 0b00 |
类型 | 6 | 定义PDU类型 |
参数 | 有效值 | 参数信息 |
PUD类型:
类型 | 名称 | 描述 |
---|---|---|
0x00 | 配置邀请 | 邀请设备加入mesh网络 |
0x01 | 配置能力 | 指示设备的相应能力 |
0x02 | 配置开始 | 基于设备的能力,供应者选择合适的方法开始整个过程 |
0x03 | 配置公共** | 包含设备或者供应者的公工** |
0x04 | 配置输入完成 | 指示用户完成输入 |
0x05 | 配置确认 | 供应者或设备回复一个确认值 |
0x06 | 配置随机 | 设备或供应者的配置随机值 |
0x07 | 配置数据 | 包含每个元素的单播地址,网络**,网络**索引,标志和IV索引 |
0x08 | 配置完成 | 指示配置过程完成 |
0x09 | 配置失败 | 指示配置过程失败 |
其他值 | RFU | 保留 |
Provisioning Invite(0x00)
供应者发送该PDU邀请设备加入网络,开始配置过程。参数的格式定义如下:
Field | Size(octets) | Notes |
---|---|---|
Attention Duration | 1 | Attention Timer state |
Provisioning capabilities(0x01)
设备发送该PDU给供应者,来指示它支持的配置能力。参数格式如下:
Field | Size(octets) | Notes |
---|---|---|
Number of Elements | 1 | 设备支持的元素个数 |
Algorithms | 2 | 指出的算法和其他能力 |
Public Key Type | 1 | 支持的公钥类型 |
Static OOB Type | 1 | 支持的静态OOB类型 |
Output OOB Size | 1 | 支持的最大OOB数 |
Output OOB Action | 2 | 支持的输出OOB动作 |
Input OOB Size | 1 | 支持输入OOB的最大字节数 |
Input OOB Action | 2 | 支持的输入OOB操作 |
Provisioning start(0x02)
预配器发送此PDU,以指示其已从预配功能PDU中选择相应方法并开始配置。参数格式如下:
Field | Size(octets) | Notes |
---|---|---|
Algorithm | 1 | 用于配置的算法 |
Public Key | 1 | 使用的公钥 |
Authentication Method | 1 | 使用的验证方法 |
Authentication Action | 1 | 选择的输入00B操作,输出OOB操作,或者0x00 |
Authentication Size | 1 | 使用的输出OOB的大小或使用的输入OOB的大小或0x00 |
Provisioning public key(0x03)
供应者发送此PDU,以传递要在ECDH计算中使用的公钥。参数格式如下:
Field | Size(octets) | Notes |
---|---|---|
Public Key X | 32 | The X component of public key for the FIPS P-256 algorithm |
Public Key Y | 32 | The Y component of public key for the FIPS P-256 algorithm |
Provisioning Input complete(0x04)
当用户完成输入操作后,设备发送该PDU,无额外参数。
Provisioning confirmation(0x05)
供应者或设备发送该PDU给对端设备,来确认目前交换的OOB验证值。参数格式如下:
Field | Size(octets) | Notes |
---|---|---|
confirmation | 16 | 目前为止交换的OOB验证值 |
Provisioning random(0x06)
供应者或设备发送该PDU来进一步验证确认。参数格式如下:
Field | Size(octets) | Notes |
---|---|---|
random | 16 | 确认的最终输入 |
Provisioning data(0x07)
供应者通过该PDU发送配置数据给设备。参数格式如下:
Field | Size(octets) | Notes |
---|---|---|
Encrypted Provisioning Data | 25 | 包含加密验证过的网络**,**索引,**刷新标志,IV更新标志,当前IV索引和元素单播地址 |
Provisioning Data MIC | 8 | PDU完整性检查 |
Provisioning complete(0x08)
设备发送此PDU表示它已成功接收并处理了配置数据。
Provisioning failed(0x09)
如果设备无法处理收到的配置协议PDU,则发送该PDU。参数格式如下:
Field | Size(octets) | Notes |
---|---|---|
error code | 1 | 配置协议中的特定错误 |
Error Code:
Value | Name | Description |
---|---|---|
0x00 | Prohibited | 禁用 |
0x01 | Invalid PDU | 设备无法识别配置协议PDU |
0x02 | Invalid Format | 协议PDU的参数超出预期值,或者PDU的长度与预期值不同 |
0x03 | Unexpected PDU | 在此过程,预计不会收到收到的PDU |
0x04 | Confirmation Failed | 确认值未成功验证 |
0x05 | Out of Resources | 由于设备中资源不足,无法继续执行供应协议 |
0x06 | Decryption Failed | 数据块未成功解密 |
0x07 | Unexpected Error | 意外错误 |
0x08 | Cannot Assign Addresses | 无法给元素分配单播地址 |
最后附图