Provisioning:Provisioner(比如天猫精灵)把一个Device加入一个Mesh网络成为一个Node的过程。
Provisioning Data:Network Key,current IV index 和unicast address(对应每个Element)。一个Mesh网络中可以有多个Provisoner,为了简单,实际一般就一个Provisioner。
在Provisioning的过程中,每个设备都会提供自己的Device UUID(128bits,可以通过当前时间随机产生,避免地址冲突)给Provisioner用来唯一标识自己(因为这个时候设备还没有被分配16bits的unicast address)。Provisioning承载在PB-ADV或者PB-GATT(不支持PB-ADV的设备选择使用)之上。Provisioning流程如下图所示。
整个Provisioning过程如下图所示,包含5个步骤:beaconing,
invitation, exchanging public keys, authentication, and distribution of the
provisioning data,其中2a和2b通过交换Public Key(32字节Public Key X+32字节Public Key Y=64字节),产生ECDHSecret,公式如下:ECDHSecret = P-256(private key, peer public
key) ;3a,3b和3c是认证过程。
在Provisioning过程中,设备可以选择支持Attention Timer机制,来提醒用户该设备正在注册Mesh网络,不同设备可以有不同提醒方式,比如通过灯闪烁或者马达发出噪声来提醒。这样的好处是,如果有多个设备等待注册网络,则可以提醒用户当前是哪个设备在注册网络。