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