聯(lián)系我們
13482583038DX8加密芯片應(yīng)用開發(fā)手冊(cè)(四)
	
7.??? DX8_API庫函數(shù)詳細(xì)介紹
這章節(jié)主講DX8_API函數(shù)的詳細(xì)介紹的第一部分系統(tǒng)函數(shù)
	
7.1. 系統(tǒng)函數(shù):
	
7.1.1. 獲取API版本
	
u8_x *DX8_Version(void);
功能描述: 獲取DX8_API版本
參數(shù):? ? ? ?void
返回值:?? 字符串指針
示例代碼:;
char *apiVersion = DX8_Version();
printf(“Version = %s\n”, apiVersion);
	
 
7.1.2. 復(fù)位設(shè)備
	
 
u8_x? DX8_Reset(void);
功能描述:復(fù)位DX8芯片,并獲取芯片的配置信息
參數(shù):? ? ? void
返回值:? 成功返回0,否則返回錯(cuò)誤代碼
示例代碼:
u8_x rv;
rv = DX8_Reset();
if (rv) {
?? printf(“Reset device failed, rv = 0x%.2x\n”, rv);
?? return rv;
}
DX8_Reset獲取DX8芯片的配置信息存儲(chǔ)在CHIP_INFO dx8_info結(jié)構(gòu)體中,dx8_info在庫中已經(jīng)定義,在DX8_API.h頭文件extern 出來了,用戶可以直接訪問dx8_info來獲取芯片的信息,如SN、UID和Zone的配置模式等:
? ? ? CHIP_INFO結(jié)構(gòu)體C定義:??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CHIP_INFO結(jié)構(gòu)體Java類定義:
	? ? ? ?

 
	
DX81/DX82芯片基本信息列表:
	
| Product | Type | PageSize (Bytes) | ZoneNum | ZoneSize (Bytes) | EEPROM (Bits) | 
| DX81系列芯片 | |||||
| DX81C01 | 0x10 | 16 | 4 | 32 | 1K | 
| DX81C02 | 0x11 | 4 | 64 | 2K | |
| DX81C04 | 0x12 | 4 | 128 | 4K | |
| DX81C08 | 0x13 | 32 | 8 | 128 | 8K | 
| DX81C16 | 0x14 | 16 | 128 | 16K | |
| DX81C32 | 0x15 | 16 | 256 | 32K | |
| DX81C64 | 0x16 | 16 | 512 | 64K | |
| DX81C128 | 0x17 | 64 | 16 | 1024 | 128K | 
| DX81C256 | 0x18 | 16 | 2048 | 256K | |
| DX82系列芯片 | |||||
| DX82C01 | 0x20 | 16 | 4 | 32 | 1K | 
| DX82C02 | 0x21 | 4 | 64 | 2K | |
| DX82C04 | 0x22 | 4 | 128 | 4K | |
| DX82C08 | 0x23 | 32 | 8 | 128 | 8K | 
| DX82C16 | 0x24 | 16 | 128 | 16K | |
| DX82C32 | 0x25 | 16 | 256 | 32K | |
| DX82C64 | 0x26 | 16 | 512 | 64K | |
| DX82C128 | 0x27 | 64 | 16 | 1024 | 128K | 
| DX82C256 | 0x28 | 16 | 2048 | 256K | |
	
 
SN:? 8個(gè)字節(jié),每顆芯片有全球唯一的序列號(hào),永遠(yuǎn)無法修改
UID:7個(gè)字節(jié),用戶可以對(duì)每個(gè)產(chǎn)品自行設(shè)置ID號(hào),設(shè)置后可鎖定,永遠(yuǎn)無法修改,出廠時(shí)為全0xff
MID:6個(gè)字節(jié),廠商代碼,只讀
ZoneMode:16個(gè)字節(jié),每個(gè)字節(jié)對(duì)應(yīng)一個(gè)Zone的配置信息,配置完成后將鎖定,將永遠(yuǎn)無法修改,每個(gè)字節(jié)定義如下:
	
 
	
 
	
 
Fuse:1個(gè)OTP字節(jié),該字節(jié)每bit只能從1寫成0, 0永遠(yuǎn)無法再變成1,該字節(jié)每bit代表相應(yīng)配置信息的鎖定狀態(tài),定義如下:
	
 
	
 
說明:DX8芯片經(jīng)專用燒錄器個(gè)人化后,Fuse字節(jié)為0x00,即配置全部鎖定。
	
 
7.1.3. 睡眠
	
 
u8_x? DX8_Sleep(void);
功能描述:使DX8芯片進(jìn)入睡眠狀態(tài)
參數(shù):???? void
返回值:? 成功返回0,否則返回錯(cuò)誤代碼
示例代碼:
u8_x rv;
rv = DX8_Sleep();
if (rv) {
?? printf(“Sleep device failed, rv = 0x%.2x\n”, rv);
?? return rv;
}
	
 
7.1.4. 喚醒
	
 
u8_x? DX8_Wakeup(void);
功能描述:喚醒DX8芯片進(jìn)入工作狀態(tài),DX8_Reset()函數(shù)也可以喚醒DX8芯片
參數(shù):???? void
返回值:? 成功返回0,否則返回錯(cuò)誤代碼
示例代碼:
u8_x rv;
rv = DX8_Wakeup();
if (rv) {
?? printf(“Wakeup device failed, rv = 0x%.2x\n”, rv);
?? return rv;
}
	
 
7.1.5. 獲取隨機(jī)數(shù)
	
 
u8_x DX8_GetRandom(u8_x *random, u8_x len);
功能描述:從DX8芯片中獲取真隨機(jī)數(shù),長度必須不大于32
參數(shù):??? random?? 返回的隨機(jī)數(shù)存儲(chǔ)buffer
????????? len??????? 獲取隨機(jī)數(shù)的長度,最小為1,最大為32
返回值:? 成功返回0,否則返回錯(cuò)誤代碼
示例代碼:
u8_x rv;
u8_x random[32];
rv = DX8_GetRandom(random, 32);
if (rv) {
?? printf(“Get Random failed, rv = 0x%.2x\n”, rv);
?? return rv;
}
	
 
7.1.6. 驗(yàn)證PIN
	
 
u8_x DX8_VerifyPin(u8_x *seed, u8_x *buf);
功能描述:驗(yàn)證PIN,主機(jī)對(duì)DX8進(jìn)行驗(yàn)證,同時(shí)DX8對(duì)主機(jī)進(jìn)行驗(yàn)證
參數(shù):? ? ? seed? 輸入32個(gè)字節(jié)的隨機(jī)數(shù),主機(jī)對(duì)DX8進(jìn)行認(rèn)證
? ? ? ? ? ? ? ? buf?? 輸入8個(gè)字節(jié)PIN碼,DX8對(duì)主機(jī)進(jìn)行認(rèn)證
返回值:? 驗(yàn)證通過返回0,否則返回錯(cuò)誤代碼
說明:該函數(shù)不會(huì)將用戶PIN碼暴漏在傳輸線上,PIN碼本身是對(duì)芯片配置權(quán)限作認(rèn)證的,當(dāng)芯片配置被全部鎖定后,該函數(shù)任然可以用作Passwords Checking雙向認(rèn)證功能,芯片出廠PIN碼為8個(gè)0xff
示例代碼:
u8_x rv;
u8_x seed[32];
GetSoftRandom(seed,32);
rv = DX8_VerifyPin(seed, pin_value);
if (rv) {
?? printf(“Verify PIN failed, rv = 0x%.2x\n”, rv);
?? return rv;
}
說明:pin_value是在使用Dx8Configuration.exe時(shí)產(chǎn)生的dx8_engineer.h中定義,需要將dx8_engineer.h包含到應(yīng)用程序中
	
 
待續(xù)......
【返回列表】上一個(gè):DX8加密芯片應(yīng)用開發(fā)手冊(cè)(五)
下一個(gè):DX8加密芯片應(yīng)用開發(fā)手冊(cè)(三)
相關(guān)新聞
- DX8加密芯片應(yīng)用開發(fā)手冊(cè)(六)2017-09-05
- DX8加密芯片應(yīng)用開發(fā)手冊(cè)(五)2017-09-03
- DX8加密芯片應(yīng)用開發(fā)手冊(cè)(三)2017-08-31
- DX8加密芯片應(yīng)用開發(fā)手冊(cè)(二)2017-08-30
- DX8加密芯片應(yīng)用開發(fā)手冊(cè)(一)2017-08-29




 
 

 客服1
客服1