本文描述ID²接口在设备端如何使用。ID² Client SDK封装了底层对ID²载体和接口的操作细节,应用只需调用该接口进行相关操作,即可访问设备端的ID²服务。

初始化

  • 函数原型:int id2_client_init(void)。
  • 功能描述:ID² Client SDK初始化。使用ID²设备端其它API之前,需先调用该API进行初始化操作。
  • 参数描述:无。
  • 返回值:成功时返回0;其他返回值,请参考设备端错误码

获取ID²

  • 函数原型:int id2_client_get_id(uint8_t* id, uint32_t* len)。
  • 功能描述:获取ID²字符串。
  • 参数描述:
    参数 参数类型 描述
    id 输出参数 存放ID²字符串的起始地址,长度不小于24个字节。
    len 输入参数和输出参数 输入参数为ID²的buf长度,输出参数为ID²字符串的实际长度。
  • 返回值:成功时返回0;其他返回值,请参考设备端错误码

以挑战应答模式获取设备认证码

  • 函数原型:int id2_client_get_challenge_auth_code(const char* challenge, const uint8_t* extra, uint32_t extra_len, uint8_t* auth_code, uint32_t* auth_code_len)。
  • 功能描述:基于挑战应答模式生成设备端认证码。可选择携带额外数据extra,携带的extra数据参与设备认证码的签名运算。
  • 参数描述:
    参数 参数类型 描述
    challenge 输入参数 挑战字起始地址,由SP Server从ID² Server获取。
    extra 输入参数 可选参数。额外数据起始地址,由Device和SP Server根据某种约定分别生成。
    extra_len 输入参数 额外数据长度,最大长度512字节。
    auth_code 输出参数 设备认证码起始地址,长度不小于256字节。
    auth_code_len 输入参数和输出参数 输入参数为authCode的buf长度,输出参数为设备认证码的实际长度。
  • 返回值:成功时返回0;其他返回值,请参考设备端错误码
  • 交互流程图:1

以时间戳模式获取设备认证码

  • 函数原型:int id2_client_get_timestamp_auth_code(const char* timestamp, const uint8_t* extra, uint32_t extra_len, uint8_t* auth_code, uint32_t* auth_code_len)。
  • 功能描述:基于时间戳模式生成设备端认证码,可选择携带额外数据extra,携带的extra数据参与设备认证码的签名运算。时间戳可以由设备端RTC生成,或者由SP Server携带发送给设备端。
  • 参数描述:
    参数 参数类型 描述
    timestamp 输入参数 当前系统时间(从1970年1月1日午夜开始经过的毫秒数),时间戳格式,如1500954672653。
    extra 输入参数 可选参数。额外数据起始地址,由Device和SP Server根据某种约定分别生成。
    extra_len 输入参数 额外数据长度,最大长度512字节。
    auth_code 输出参数 设备认证码起始地址,长度不小于256字节。
    auth_code_len 输入参数和输出参数 输入参数为authCode的buf长度,输出参数为设备认证码的实际长度。
  • 返回值:成功时返回0;其他返回值,请参考设备端错误码
  • 交互流程图:2

ID²解密

  • 函数原型:int id2_client_decrypt(const uint8_t* in, uint32_t in_len, uint8_t* out, uint32_t* out_len)。
  • 功能描述:使用ID²解密指定的数据。
  • 参数描述:
    参数 参数类型 描述
    in 输入参数 待解密的数据起始地址。数据如果是base64编码,需要先进行base64解码。
    in_len 输入参数 待解密的数据长度,不超过512字节。
    out 输出参数 解密后的数据起始地址。
    out_len 输入参数和输出参数 输入参数为参数out的buf长度,输出参数为解密后的数据长度。
  • 返回值:成功时返回0;其他返回值,请参考设备端错误码

获取设备烧录状态

  • 函数原型:irot_result_t id2_client_get_prov_stat(bool *is_prov)。
  • 功能描述:获取设备端ID²的烧录状态。
  • 参数描述:
    参数 参数类型 描述
    is_prov 输出参数 布尔类型,存放ID²的烧录状态。
  • 返回值:成功时返回0;其他返回值,请参考设备端错误码

获取设备动态下发认证码

  • 函数原型:irot_result_t id2_client_get_otp_auth_code(const uint8_t *token, uint32_t token_len, uint8_t *auth_code, uint32_t *len)。
  • 功能描述:获取设备端ID²动态下发的认证码。
  • 参数描述:
    参数 参数类型 描述
    token 输入参数 ID² Server颁发的动态下发token,可在ID²控制台的产品详情页获取。
    token_len 输入参数 ID²动态下发token的长度,固定值32字节。
    auth_code 输出参数 ID²动态下发认证码的内存,长度小于256字节。
    len 输入参数和输出参数 输入参数为authCode的内存大小,输出参数为认证码的实际长度。
  • 返回值:成功时返回0;其他返回值,请参考设备端错误码

烧录动态下发数据

  • 函数原型:irot_result_t id2_client_load_otp_data(const uint8_t *otp_data, uint32_t len)。
  • 功能描述:烧录动态下发数据到设备中。
  • 参数描述:
    参数 参数类型 描述
    otp_data 输入参数 ID² Server下发的动态下发数据包。
    len 输入参数 ID²动态下发数据包的长度。
  • 返回值:成功时返回0;其他返回值,请参考设备端错误码