聯(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 | 驗證PIN | ? | 
| DX8防抄板認(rèn)證函數(shù) | ||
| DX8_HostAuth | DX8芯片計算挑戰(zhàn)—響應(yīng) | 兩者結(jié)果一致,認(rèn)證通過 | 
| Lib_HostAuth | 軟件計算挑戰(zhàn)—響應(yīng) | |
| DX8讀寫EEPROM函數(shù) | ||
| DX8_VerifyZone | 驗證Zone Key | 當(dāng)分區(qū)Zone配置成密鑰訪問模式時, 需要Zone Key驗證通過后才能讀寫 | 
| DX8_WriteZone | 寫EEPROM分區(qū)Zone | |
| DX8_ReadZone | 讀EEPROM分區(qū)Zone | |
| DX82基于標(biāo)識數(shù)據(jù)加解密函數(shù) | ||
| DX8_InitSessionKey | 直接初始化會話密鑰 | 僅適用于DX82 | 
| DX8_GenSessionKey | 根據(jù)標(biāo)識產(chǎn)生會話密鑰 | |
| DX8_DoCrypto | 數(shù)據(jù)加解密計算 | |
| DX8 SHA1計算函數(shù) | ||
| DX8_Sha1Init | SHA1初始化 | 僅適用于DX82 | 
| DX8_Sha1Update | SHA1數(shù)據(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 | 硬件接口總線錯誤 | 
| 0x02 | DX8_NO_INIT | DX8沒有執(zhí)行初始化 | 
| 0x03 | DX8_RESET_ERR | 復(fù)位錯誤 | 
| 0x04 | DX8_CHIP_INFO_ERR | DX8芯片信息錯誤 | 
| 0x05 | DX8_RESPONSE_LEN_ERR | 返回數(shù)據(jù)長度錯誤 | 
| 0x06 | DX8_TRANSFER_CRC_ERR | 傳輸數(shù)據(jù)CRC錯誤 | 
| 0x07 | DX8_STATUS_DATERR | 命令數(shù)據(jù)的長度或CRC錯誤 | 
| 0x08 | DX8_STATUS_RIGHTERR | 命令執(zhí)行權(quán)限錯誤 | 
| 0x09 | DX8_STATUS_CMDERR | 命令字節(jié)或者命令參數(shù)錯誤 | 
| 0x0a | DX8_STATUS_TIMEOUT | DX8命令執(zhí)行超時錯誤 | 
| 0x0b | DX8_SLEEP_ERR | DX8進(jìn)入Sleep狀態(tài)錯誤 | 
| 0x0c | DX8_WAKEUP_ERR | DX8喚醒錯誤 | 
| 0x0d | DX8_VERIFY_PIN_ERR | PIN驗證錯誤 | 
| 0x0e | DX8_VERIFY_KEY_ERR | Zone Key驗證錯誤 | 
| 0x0f | DX8_WRITE_ZONE_LEN_ERR | 寫EEPROM數(shù)據(jù)長度錯誤 | 
| 0x10 | DX8_READ_ZONE_LEN_ERR | 讀EEPROM數(shù)據(jù)長度錯誤 | 
| 0x11 | DX8_CRYPTO_KEY_ERR | 產(chǎn)生會話密鑰錯誤 | 
| 0x12 | DX8_CRYPTO_LEN_ERR | 加解密數(shù)據(jù)長度錯誤 | 
?
	
6.3. 主機(jī)隨機(jī)數(shù)產(chǎn)生
	
 
在調(diào)用DX8_VerifyPin,DX8_HostAuth,DX8_VerifyZone等函數(shù)時,需要主機(jī)自身產(chǎn)生隨機(jī)數(shù)字節(jié)來對DX8進(jìn)行認(rèn)證,如果隨機(jī)數(shù)有規(guī)律的話,會給系統(tǒng)帶來安全隱患。
在C語言中使用rand()函數(shù)產(chǎn)生。為了使rand()函數(shù)產(chǎn)生真隨機(jī)數(shù),在使用rand()函數(shù)前,需要對其隨機(jī)種子進(jìn)行動態(tài)初始化,在具有時間的系統(tǒng)中,一般推薦采用時間作為隨機(jī)因子,如果系統(tǒ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時自動產(chǎn)生,在dx8_engineer.h中,程序員需要將該頭文件內(nèi)容嵌入到應(yīng)用開發(fā)中,例如下:
	
 
	
 
?
6.5. DX8_API庫版本
	
 
由于所使用的CPU、編譯器和操作系統(tǒng)的不同,我們會根據(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ù)......
	
	
	
	
	
【返回列表】
相關(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




 
 

 客服1
客服1