本文描述ID2接口在設(shè)備端如何使用。ID2 Client SDK封裝了底層對(duì)ID2載體和接口的操作細(xì)節(jié),應(yīng)用只需調(diào)用該接口進(jìn)行相關(guān)操作,即可訪問設(shè)備端的ID2服務(wù)。
初始化
- 函數(shù)原型:int id2_client_init(void)。
- 功能描述:ID2 Client SDK初始化。使用ID2設(shè)備端其它API之前,需先調(diào)用該API進(jìn)行初始化操作。
- 參數(shù)描述:無。
- 返回值:成功時(shí)返回0;其他返回值,請(qǐng)參考設(shè)備端錯(cuò)誤碼。
獲取ID2
- 函數(shù)原型:int id2_client_get_id(uint8_t* id, uint32_t* len)。
- 功能描述:獲取ID2字符串。
- 參數(shù)描述:
參數(shù) 參數(shù)類型 描述 id 輸出參數(shù) 存放ID2字符串的起始地址,長度不小于24個(gè)字節(jié)。 len 輸入?yún)?shù)和輸出參數(shù) 輸入?yún)?shù)為ID2的buf長度,輸出參數(shù)為ID2字符串的實(shí)際長度。 - 返回值:成功時(shí)返回0;其他返回值,請(qǐng)參考設(shè)備端錯(cuò)誤碼。
以挑戰(zhàn)應(yīng)答模式獲取設(shè)備認(rèn)證碼
- 函數(shù)原型: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)。
- 功能描述:基于挑戰(zhàn)應(yīng)答模式生成設(shè)備端認(rèn)證碼。可選擇攜帶額外數(shù)據(jù)extra,攜帶的extra數(shù)據(jù)參與設(shè)備認(rèn)證碼的簽名運(yùn)算。
- 參數(shù)描述:
參數(shù) 參數(shù)類型 描述 challenge 輸入?yún)?shù) 挑戰(zhàn)字起始地址,由SP Server從ID2 Server獲取。 extra 輸入?yún)?shù) 可選參數(shù)。額外數(shù)據(jù)起始地址,由Device和SP Server根據(jù)某種約定分別生成。 extra_len 輸入?yún)?shù) 額外數(shù)據(jù)長度,最大長度512字節(jié)。 auth_code 輸出參數(shù) 設(shè)備認(rèn)證碼起始地址,長度不小于256字節(jié)。 auth_code_len 輸入?yún)?shù)和輸出參數(shù) 輸入?yún)?shù)為authCode的buf長度,輸出參數(shù)為設(shè)備認(rèn)證碼的實(shí)際長度。 - 返回值:成功時(shí)返回0;其他返回值,請(qǐng)參考設(shè)備端錯(cuò)誤碼。
- 交互流程圖:
以時(shí)間戳模式獲取設(shè)備認(rèn)證碼
- 函數(shù)原型: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)。
- 功能描述:基于時(shí)間戳模式生成設(shè)備端認(rèn)證碼,可選擇攜帶額外數(shù)據(jù)extra,攜帶的extra數(shù)據(jù)參與設(shè)備認(rèn)證碼的簽名運(yùn)算。時(shí)間戳可以由設(shè)備端RTC生成,或者由SP Server攜帶發(fā)送給設(shè)備端。
- 參數(shù)描述:
參數(shù) 參數(shù)類型 描述 timestamp 輸入?yún)?shù) 當(dāng)前系統(tǒng)時(shí)間(從1970年1月1日午夜開始經(jīng)過的毫秒數(shù)),時(shí)間戳格式,如1500954672653。 extra 輸入?yún)?shù) 可選參數(shù)。額外數(shù)據(jù)起始地址,由Device和SP Server根據(jù)某種約定分別生成。 extra_len 輸入?yún)?shù) 額外數(shù)據(jù)長度,最大長度512字節(jié)。 auth_code 輸出參數(shù) 設(shè)備認(rèn)證碼起始地址,長度不小于256字節(jié)。 auth_code_len 輸入?yún)?shù)和輸出參數(shù) 輸入?yún)?shù)為authCode的buf長度,輸出參數(shù)為設(shè)備認(rèn)證碼的實(shí)際長度。 - 返回值:成功時(shí)返回0;其他返回值,請(qǐng)參考設(shè)備端錯(cuò)誤碼。
- 交互流程圖:
ID2解密
- 函數(shù)原型:int id2_client_decrypt(const uint8_t* in, uint32_t in_len, uint8_t* out, uint32_t* out_len)。
- 功能描述:使用ID2解密指定的數(shù)據(jù)。
- 參數(shù)描述:
參數(shù) 參數(shù)類型 描述 in 輸入?yún)?shù) 待解密的數(shù)據(jù)起始地址。數(shù)據(jù)如果是base64編碼,需要先進(jìn)行base64解碼。 in_len 輸入?yún)?shù) 待解密的數(shù)據(jù)長度,不超過512字節(jié)。 out 輸出參數(shù) 解密后的數(shù)據(jù)起始地址。 out_len 輸入?yún)?shù)和輸出參數(shù) 輸入?yún)?shù)為參數(shù)out的buf長度,輸出參數(shù)為解密后的數(shù)據(jù)長度。 - 返回值:成功時(shí)返回0;其他返回值,請(qǐng)參考設(shè)備端錯(cuò)誤碼。
獲取設(shè)備燒錄狀態(tài)
- 函數(shù)原型:irot_result_t id2_client_get_prov_stat(bool *is_prov)。
- 功能描述:獲取設(shè)備端ID2的燒錄狀態(tài)。
- 參數(shù)描述:
參數(shù) 參數(shù)類型 描述 is_prov 輸出參數(shù) 布爾類型,存放ID2的燒錄狀態(tài)。 - 返回值:成功時(shí)返回0;其他返回值,請(qǐng)參考設(shè)備端錯(cuò)誤碼。
獲取設(shè)備動(dòng)態(tài)下發(fā)認(rèn)證碼
- 函數(shù)原型:irot_result_t id2_client_get_otp_auth_code(const uint8_t *token, uint32_t token_len, uint8_t *auth_code, uint32_t *len)。
- 功能描述:獲取設(shè)備端ID2動(dòng)態(tài)下發(fā)的認(rèn)證碼。
- 參數(shù)描述:
參數(shù) 參數(shù)類型 描述 token 輸入?yún)?shù) ID2 Server頒發(fā)的動(dòng)態(tài)下發(fā)token,可在ID2控制臺(tái)的產(chǎn)品詳情頁獲取。 token_len 輸入?yún)?shù) ID2動(dòng)態(tài)下發(fā)token的長度,固定值32字節(jié)。 auth_code 輸出參數(shù) ID2動(dòng)態(tài)下發(fā)認(rèn)證碼的內(nèi)存,長度小于256字節(jié)。 len 輸入?yún)?shù)和輸出參數(shù) 輸入?yún)?shù)為authCode的內(nèi)存大小,輸出參數(shù)為認(rèn)證碼的實(shí)際長度。 - 返回值:成功時(shí)返回0;其他返回值,請(qǐng)參考設(shè)備端錯(cuò)誤碼。
燒錄動(dòng)態(tài)下發(fā)數(shù)據(jù)
- 函數(shù)原型:irot_result_t id2_client_load_otp_data(const uint8_t *otp_data, uint32_t len)。
- 功能描述:燒錄動(dòng)態(tài)下發(fā)數(shù)據(jù)到設(shè)備中。
- 參數(shù)描述:
參數(shù) 參數(shù)類型 描述 otp_data 輸入?yún)?shù) ID2 Server下發(fā)的動(dòng)態(tài)下發(fā)數(shù)據(jù)包。 len 輸入?yún)?shù) ID2動(dòng)態(tài)下發(fā)數(shù)據(jù)包的長度。 - 返回值:成功時(shí)返回0;其他返回值,請(qǐng)參考設(shè)備端錯(cuò)誤碼。