本文描述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ò)誤碼
  • 交互流程圖:1

以時(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ò)誤碼
  • 交互流程圖:2

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ò)誤碼