聯(lián)系我們
13482583038DX8加密芯片應(yīng)用開發(fā)手冊(三)
6.??DX8_API庫概述
DX8加密芯片應(yīng)用開發(fā)手冊這章節(jié)主講DX8_API函數(shù)的概述
6.1. DX8_API庫函數(shù)列表:
函數(shù)名稱 |
功能描述 |
備注 |
DX8系統(tǒng)函數(shù) |
||
DX8_Version |
獲取DX8_API版本信息 |
? |
DX8_Reset |
復(fù)位DX8 |
? |
DX8_Sleep |
DX8睡眠 |
? |
Dx8_Wakeup |
喚醒DX8 |
? |
DX8_GetRandom |
從DX8獲取隨機(jī)數(shù) |
? |
DX8_VerifyPin |
驗(yàn)證PIN |
? |
DX8防抄板認(rèn)證函數(shù) |
||
DX8_HostAuth |
DX8芯片計(jì)算挑戰(zhàn)—響應(yīng) |
兩者結(jié)果一致,認(rèn)證通過 |
Lib_HostAuth |
軟件計(jì)算挑戰(zhàn)—響應(yīng) |
|
DX8讀寫EEPROM函數(shù) |
||
DX8_VerifyZone |
驗(yàn)證Zone Key |
當(dāng)分區(qū)Zone配置成密鑰訪問模式時(shí), 需要Zone Key驗(yàn)證通過后才能讀寫 |
DX8_WriteZone |
寫EEPROM分區(qū)Zone |
|
DX8_ReadZone |
讀EEPROM分區(qū)Zone |
|
DX82基于標(biāo)識(shí)數(shù)據(jù)加解密函數(shù) |
||
DX8_InitSessionKey |
直接初始化會(huì)話密鑰 |
僅適用于DX82 |
DX8_GenSessionKey |
根據(jù)標(biāo)識(shí)產(chǎn)生會(huì)話密鑰 |
|
DX8_DoCrypto |
數(shù)據(jù)加解密計(jì)算 |
|
DX8 SHA1計(jì)算函數(shù) |
||
DX8_Sha1Init |
SHA1初始化 |
僅適用于DX82 |
DX8_Sha1Update |
SHA1數(shù)據(jù)計(jì)算 |
|
DX8_Sha1Final |
獲取SHA1結(jié)果 |
|
?軟件流加密函數(shù) |
||
Lib_InitStreamKey |
初始化流加密密鑰 |
軟件流加密函數(shù) |
Lib_StreamEncryption |
流加密 |
|
Lib_StreamDecryption |
流解密 |
6.2. DX8_API庫函數(shù)返回值定義
返回值 |
定義 |
描述 |
0x00 |
DX8_SUCCESS |
成功 |
0x01 |
DX8_BUS_ERR |
硬件接口總線錯(cuò)誤 |
0x02 |
DX8_NO_INIT |
DX8沒有執(zhí)行初始化 |
0x03 |
DX8_RESET_ERR |
復(fù)位錯(cuò)誤 |
0x04 |
DX8_CHIP_INFO_ERR |
DX8芯片信息錯(cuò)誤 |
0x05 |
DX8_RESPONSE_LEN_ERR |
返回?cái)?shù)據(jù)長度錯(cuò)誤 |
0x06 |
DX8_TRANSFER_CRC_ERR |
傳輸數(shù)據(jù)CRC錯(cuò)誤 |
0x07 |
DX8_STATUS_DATERR |
命令數(shù)據(jù)的長度或CRC錯(cuò)誤 |
0x08 |
DX8_STATUS_RIGHTERR |
命令執(zhí)行權(quán)限錯(cuò)誤 |
0x09 |
DX8_STATUS_CMDERR |
命令字節(jié)或者命令參數(shù)錯(cuò)誤 |
0x0a |
DX8_STATUS_TIMEOUT |
DX8命令執(zhí)行超時(shí)錯(cuò)誤 |
0x0b |
DX8_SLEEP_ERR |
DX8進(jìn)入Sleep狀態(tài)錯(cuò)誤 |
0x0c |
DX8_WAKEUP_ERR |
DX8喚醒錯(cuò)誤 |
0x0d |
DX8_VERIFY_PIN_ERR |
PIN驗(yàn)證錯(cuò)誤 |
0x0e |
DX8_VERIFY_KEY_ERR |
Zone Key驗(yàn)證錯(cuò)誤 |
0x0f |
DX8_WRITE_ZONE_LEN_ERR |
寫EEPROM數(shù)據(jù)長度錯(cuò)誤 |
0x10 |
DX8_READ_ZONE_LEN_ERR |
讀EEPROM數(shù)據(jù)長度錯(cuò)誤 |
0x11 |
DX8_CRYPTO_KEY_ERR |
產(chǎn)生會(huì)話密鑰錯(cuò)誤 |
0x12 |
DX8_CRYPTO_LEN_ERR |
加解密數(shù)據(jù)長度錯(cuò)誤 |
?
6.3. 主機(jī)隨機(jī)數(shù)產(chǎn)生
在調(diào)用DX8_VerifyPin,DX8_HostAuth,DX8_VerifyZone等函數(shù)時(shí),需要主機(jī)自身產(chǎn)生隨機(jī)數(shù)字節(jié)來對DX8進(jìn)行認(rèn)證,如果隨機(jī)數(shù)有規(guī)律的話,會(huì)給系統(tǒng)帶來安全隱患。
在C語言中使用rand()函數(shù)產(chǎn)生。為了使rand()函數(shù)產(chǎn)生真隨機(jī)數(shù),在使用rand()函數(shù)前,需要對其隨機(jī)種子進(jìn)行動(dòng)態(tài)初始化,在具有時(shí)間的系統(tǒng)中,一般推薦采用時(shí)間作為隨機(jī)因子,如果系統(tǒng)中沒有時(shí)間,也可采用其他盡量動(dòng)態(tài)的參數(shù)作為隨機(jī)因子(如CPU的心跳值),以此來增強(qiáng)系統(tǒng)的安全性。
?
示例代碼:
void GetSoftRandom(u8_x *random, u16_x len)
{
? u16_x i;
? srand((unsigned int)time(0) + (unsigned int)jiffies + (srand_cnt++));
? for
(i=0; i
}
6.4. 程序員使用的密鑰
程序員在調(diào)用相關(guān)DX8_API庫函數(shù)需要輸入相關(guān)的密鑰參數(shù),這些密鑰由Dx8Configuration.exe配置軟件在將配置寫入USBKEY時(shí)自動(dòng)產(chǎn)生,在dx8_engineer.h中,程序員需要將該頭文件內(nèi)容嵌入到應(yīng)用開發(fā)中,例如下:
?
6.5. DX8_API庫版本
由于所使用的CPU、編譯器和操作系統(tǒng)的不同,我們會(huì)根據(jù)您的硬件環(huán)境生成與之對應(yīng)的DX8_API庫文件,全力協(xié)助您完成超快速Design In,目前常用的版本如下:
?
操作系統(tǒng) |
CPU |
DX8_API版本 |
Android java |
Cotex-A系列 |
libjdx8_spi2c.so |
libjdx8_com.so(ble/wifi等) |
||
Linux C |
Cotex-A系列 |
libcdx8_axx.a |
Windows |
PC |
libdx8_win32.lib |
libdx8_win32usb.lib |
||
無操作系統(tǒng) |
通用8051 |
libdx8_8051.lib |
CC2540/CC2541 |
libdx8_cc254x.a |
|
STM32 |
libdx8_stm32.lib |
|
dsPIC33 |
libdx8_dsPIC33.a |
|
xxxxx |
libdx8_xxxxx.a |
根據(jù)目前的應(yīng)用需求,DX8_API主要有以下三種語言版本:
l? C
l? Java
l? Object C (正在開發(fā)中,敬請期待)
6.6. C語言開發(fā)
?
?
?
?
1.7.Java語言開發(fā)
待續(xù)......
【返回列表】
上一個(gè):DX8加密芯片應(yīng)用開發(fā)手冊(四)
下一個(gè):DX8加密芯片應(yīng)用開發(fā)手冊(二)
相關(guān)新聞
- DX8加密芯片應(yīng)用開發(fā)手冊(六)2017-09-05
- DX8加密芯片應(yīng)用開發(fā)手冊(五)2017-09-03
- DX8加密芯片應(yīng)用開發(fā)手冊(四)2017-09-01
- DX8加密芯片應(yīng)用開發(fā)手冊(二)2017-08-30
- DX8加密芯片應(yīng)用開發(fā)手冊(一)2017-08-29