聯(lián)系我們
13482583038DX8加密芯片應用開發(fā)手冊(三)
6.??DX8_API庫概述
DX8加密芯片應用開發(fā)手冊這章節(jié)主講DX8_API函數(shù)的概述
6.1. DX8_API庫函數(shù)列表:
函數(shù)名稱 |
功能描述 |
備注 |
DX8系統(tǒng)函數(shù) |
||
DX8_Version |
獲取DX8_API版本信息 |
? |
DX8_Reset |
復位DX8 |
? |
DX8_Sleep |
DX8睡眠 |
? |
Dx8_Wakeup |
喚醒DX8 |
? |
DX8_GetRandom |
從DX8獲取隨機數(shù) |
? |
DX8_VerifyPin |
驗證PIN |
? |
DX8防抄板認證函數(shù) |
||
DX8_HostAuth |
DX8芯片計算挑戰(zhàn)—響應 |
兩者結果一致,認證通過 |
Lib_HostAuth |
軟件計算挑戰(zhàn)—響應 |
|
DX8讀寫EEPROM函數(shù) |
||
DX8_VerifyZone |
驗證Zone Key |
當分區(qū)Zone配置成密鑰訪問模式時, 需要Zone Key驗證通過后才能讀寫 |
DX8_WriteZone |
寫EEPROM分區(qū)Zone |
|
DX8_ReadZone |
讀EEPROM分區(qū)Zone |
|
DX82基于標識數(shù)據(jù)加解密函數(shù) |
||
DX8_InitSessionKey |
直接初始化會話密鑰 |
僅適用于DX82 |
DX8_GenSessionKey |
根據(jù)標識產(chǎn)生會話密鑰 |
|
DX8_DoCrypto |
數(shù)據(jù)加解密計算 |
|
DX8 SHA1計算函數(shù) |
||
DX8_Sha1Init |
SHA1初始化 |
僅適用于DX82 |
DX8_Sha1Update |
SHA1數(shù)據(jù)計算 |
|
DX8_Sha1Final |
獲取SHA1結果 |
|
?軟件流加密函數(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 |
復位錯誤 |
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í)行權限錯誤 |
0x09 |
DX8_STATUS_CMDERR |
命令字節(jié)或者命令參數(shù)錯誤 |
0x0a |
DX8_STATUS_TIMEOUT |
DX8命令執(zhí)行超時錯誤 |
0x0b |
DX8_SLEEP_ERR |
DX8進入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. 主機隨機數(shù)產(chǎn)生
在調用DX8_VerifyPin,DX8_HostAuth,DX8_VerifyZone等函數(shù)時,需要主機自身產(chǎn)生隨機數(shù)字節(jié)來對DX8進行認證,如果隨機數(shù)有規(guī)律的話,會給系統(tǒng)帶來安全隱患。
在C語言中使用rand()函數(shù)產(chǎn)生。為了使rand()函數(shù)產(chǎn)生真隨機數(shù),在使用rand()函數(shù)前,需要對其隨機種子進行動態(tài)初始化,在具有時間的系統(tǒng)中,一般推薦采用時間作為隨機因子,如果系統(tǒng)中沒有時間,也可采用其他盡量動態(tài)的參數(shù)作為隨機因子(如CPU的心跳值),以此來增強系統(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. 程序員使用的密鑰
程序員在調用相關DX8_API庫函數(shù)需要輸入相關的密鑰參數(shù),這些密鑰由Dx8Configuration.exe配置軟件在將配置寫入USBKEY時自動產(chǎn)生,在dx8_engineer.h中,程序員需要將該頭文件內容嵌入到應用開發(fā)中,例如下:
?
6.5. DX8_API庫版本
由于所使用的CPU、編譯器和操作系統(tǒng)的不同,我們會根據(jù)您的硬件環(huán)境生成與之對應的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ù)目前的應用需求,DX8_API主要有以下三種語言版本:
l? C
l? Java
l? Object C (正在開發(fā)中,敬請期待)
6.6. C語言開發(fā)
?
?
?
?
1.7.Java語言開發(fā)
待續(xù)......
【返回列表】
相關新聞
- DX8加密芯片應用開發(fā)手冊(六)2017-09-05
- DX8加密芯片應用開發(fā)手冊(五)2017-09-03
- DX8加密芯片應用開發(fā)手冊(四)2017-09-01
- DX8加密芯片應用開發(fā)手冊(二)2017-08-30
- DX8加密芯片應用開發(fā)手冊(一)2017-08-29