阿里云首页 IoT安全中心

设备端API

ID² Client SDK封装了底层对ID²载体和接口的操作细节,应用只需调用该接口进行相关操作,即可访问设备端的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;其他返回值,请参见错误码

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

  • 函数原型: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;其他返回值,请参见错误码

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;其他返回值,请参见错误码