本文描述ID2接口在設備端如何使用。ID2 Client SDK封裝了底層對ID2載體和接口的操作細節,應用只需調用該接口進行相關操作,即可訪問設備端的ID2服務。
初始化
- 函數原型:int id2_client_init(void)。
- 功能描述:ID2 Client SDK初始化。使用ID2設備端其它API之前,需先調用該API進行初始化操作。
- 參數描述:無。
- 返回值:成功時返回0;其他返回值,請參考設備端錯誤碼。
獲取ID2
- 函數原型:int id2_client_get_id(uint8_t* id, uint32_t* len)。
- 功能描述:獲取ID2字符串。
- 參數描述:
參數 參數類型 描述 id 輸出參數 存放ID2字符串的起始地址,長度不小于24個字節。 len 輸入參數和輸出參數 輸入參數為ID2的buf長度,輸出參數為ID2字符串的實際長度。 - 返回值:成功時返回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從ID2 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;其他返回值,請參考設備端錯誤碼。
- 交互流程圖:
ID2解密
- 函數原型:int id2_client_decrypt(const uint8_t* in, uint32_t in_len, uint8_t* out, uint32_t* out_len)。
- 功能描述:使用ID2解密指定的數據。
- 參數描述:
參數 參數類型 描述 in 輸入參數 待解密的數據起始地址。數據如果是base64編碼,需要先進行base64解碼。 in_len 輸入參數 待解密的數據長度,不超過512字節。 out 輸出參數 解密后的數據起始地址。 out_len 輸入參數和輸出參數 輸入參數為參數out的buf長度,輸出參數為解密后的數據長度。 - 返回值:成功時返回0;其他返回值,請參考設備端錯誤碼。
獲取設備燒錄狀態
- 函數原型:irot_result_t id2_client_get_prov_stat(bool *is_prov)。
- 功能描述:獲取設備端ID2的燒錄狀態。
- 參數描述:
參數 參數類型 描述 is_prov 輸出參數 布爾類型,存放ID2的燒錄狀態。 - 返回值:成功時返回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)。
- 功能描述:獲取設備端ID2動態下發的認證碼。
- 參數描述:
參數 參數類型 描述 token 輸入參數 ID2 Server頒發的動態下發token,可在ID2控制臺的產品詳情頁獲取。 token_len 輸入參數 ID2動態下發token的長度,固定值32字節。 auth_code 輸出參數 ID2動態下發認證碼的內存,長度小于256字節。 len 輸入參數和輸出參數 輸入參數為authCode的內存大小,輸出參數為認證碼的實際長度。 - 返回值:成功時返回0;其他返回值,請參考設備端錯誤碼。
燒錄動態下發數據
- 函數原型:irot_result_t id2_client_load_otp_data(const uint8_t *otp_data, uint32_t len)。
- 功能描述:燒錄動態下發數據到設備中。
- 參數描述:
參數 參數類型 描述 otp_data 輸入參數 ID2 Server下發的動態下發數據包。 len 輸入參數 ID2動態下發數據包的長度。 - 返回值:成功時返回0;其他返回值,請參考設備端錯誤碼。