欧洲美熟女乱又伦av_九九99线视频在线观看_亚洲国产精品ⅴA在线观看_又大又粗又长的高潮视频_亚洲国产高清av网站_中文字幕丰满伦子无码ab_日韩欧美巨乳国产_伊人中文字幕无码专区_亚洲欧美偷拍另类a∨_成人亚洲欧美在线观看

上海動(dòng)信微電子科技有限公司

技術(shù)資料

您的當(dāng)前位置:首頁 > 新聞中心 > 技術(shù)資料

DX8加密芯片應(yīng)用開發(fā)手冊(五)

發(fā)布時(shí)間:2017-09-03瀏覽次數(shù):載入中...來源:m.czymln.cn


DX8加密芯片應(yīng)用開發(fā)手冊(五)這個(gè)章節(jié)主講DX81C04防抄板加密芯片的函數(shù)使用


7.2.防抄板認(rèn)證函數(shù):


防抄板認(rèn)證的原理:主機(jī)發(fā)送隨機(jī)挑戰(zhàn)給DX8芯片,DX8芯片根據(jù)內(nèi)部配置的密鑰(KEYA)計(jì)算并返回結(jié)果,主機(jī)收到結(jié)果后,按照同樣的方法對挑戰(zhàn)隨機(jī)數(shù)進(jìn)行計(jì)算,然后比較兩個(gè)結(jié)果,一致表示認(rèn)證通過。


7.2.1. DX8芯片計(jì)算響應(yīng)


u8_x DX8_HostAuth(u8_x  *challenge, u8_x  len, u8_x  *response);

功能描述:DX8芯片根據(jù)輸入的挑戰(zhàn)動(dòng)態(tài)計(jì)算響應(yīng)

參數(shù):    challenge  輸入的挑戰(zhàn)隨機(jī)數(shù)

              len        挑戰(zhàn)隨機(jī)數(shù)的長度

              response  返回的響應(yīng)結(jié)果,20個(gè)字節(jié)

返回值:  響應(yīng)計(jì)算成功返回0,否則返回錯(cuò)誤代碼


7.2.2. 主機(jī)軟件計(jì)算響應(yīng)


void Lib_HostAuth(u8_x *challenge, u8_x len, u8_x *buf, u8_x *response);

功能描述:主機(jī)軟件根據(jù)挑戰(zhàn)計(jì)算響應(yīng)結(jié)果

參數(shù):    challenge  輸入的挑戰(zhàn)隨機(jī)數(shù)

          len        挑戰(zhàn)隨機(jī)數(shù)的長度

          buf        輸入的16個(gè)字節(jié)KEYA

          response  返回的響應(yīng)結(jié)果,20個(gè)字節(jié)

返回值:  計(jì)算成功返回0,否則返回錯(cuò)誤代碼

示例代碼:

u8_x rv;

u8_x challenge[32],reponse_1[20],response_2[20];

GetSoftRandom(challenge,32);

rv = DX8_HostAuth (challenge, 32response_1);  //DX8芯片計(jì)算

if (rv) {

   printf(“HostAuth calculation failed, rv = 0x%.2x\n”, rv);

   return rv;

}

Lib_HostAuth(chanllenge, 32, keya_value, reponse_2); //主機(jī)軟件計(jì)算

if (memcmp(reponse1, response_2)) {  // 比較響應(yīng)結(jié)果

   printf(“Host Authentication Error??!\n”);

} else {

   printf(“Host Authentication Passed!!\n”);

}

說明:keya_value是在使用Dx8Configuration.exe時(shí)產(chǎn)生的dx8_engineer.h中定義,需要將dx8_engineer.h包含到應(yīng)用程序中


7.3.讀寫EEPROM函數(shù)


DX81/DX82將芯片內(nèi)部的EEPROM存儲(chǔ)區(qū)域分成4-16個(gè)zone,需要預(yù)先通過燒寫器對每個(gè)zone的訪問模式及其密鑰進(jìn)行配置,每個(gè)zone可以配置成三種訪問模式:

l  正常模式

l  認(rèn)證模式

l  加密模式

若配置為認(rèn)證模式和加密模式,每個(gè)zone需要獨(dú)立設(shè)定16個(gè)字節(jié)的訪問密鑰,zone密鑰驗(yàn)證通過后才可對該zone進(jìn)行讀或者寫,出廠所有zone默認(rèn)為正常模式。具體每個(gè)zone配置好的信息在調(diào)用DX8_Reset()函數(shù)后存儲(chǔ)在dx8-_info的結(jié)構(gòu)體中,用戶可直接訪問:

 

模式

Read

Write

正常模式

不需要認(rèn)證,傳輸線明文

不需要認(rèn)證,傳輸線明文

認(rèn)證模式

不需要認(rèn)證,傳輸線明文

需要認(rèn)證,傳輸線明文

加密模式

需要認(rèn)證,傳輸線密文

需要認(rèn)證,傳輸線密文

 

說明: 每個(gè)zone分區(qū)的地址都從0開始,正常模式時(shí)zone分區(qū)的大小為dx8_info.ZoneSize,認(rèn)證模式和加密模式時(shí)zone分區(qū)的可用大小為dx8_info.ZoneSize-16,因?yàn)橛?/span>16個(gè)字節(jié)用作該zone分區(qū)的密鑰空間,該密鑰空間永遠(yuǎn)無法訪問。


7.3.1. 驗(yàn)證Zone Key


u8_x DX8_VerifyZone(u8_x zone, u8_x *seed, u8_x *buf);

功能描述:對指定的Zone分區(qū)密鑰進(jìn)行驗(yàn)證

參數(shù):    zone   指定的zone分區(qū)(0 — ZoneNum-1)

          seed   輸入的32個(gè)字節(jié)的隨機(jī)數(shù),主機(jī)對DX8認(rèn)證

          buf    輸入指定zone16個(gè)字節(jié)的密鑰,DX8對主機(jī)認(rèn)證

返回值:  認(rèn)證通過返回0,否則返回錯(cuò)誤代碼

說明:若指定的zone為認(rèn)證模式或者加密模式,并且該zone key驗(yàn)證通過后,才能執(zhí)行對該zone的讀或者寫操作,任何出錯(cuò)或者非此zone的讀寫命令,都會(huì)將此zone的認(rèn)證通過標(biāo)志清除,若要繼續(xù)此zone讀或者寫,需要重新對此zone key進(jìn)行驗(yàn)證。

示例代碼(以驗(yàn)證zone0為例)

u8_x rv;

u8_x seed[32];

GetSoftRandom(seed,32);

rv = DX8_VerifyZone(0, seed, zkey_0);  // 驗(yàn)證Zone0

if (rv) {

   printf(“Verify PIN failed, rv = 0x%.2x\n”, rv);

   return rv;

}

說明:zkey_0是在使用Dx8Configuration.exe時(shí)產(chǎn)生的dx8_engineer.h中定義,需要將dx8_engineer.h包含到應(yīng)用程序中


7.3.2. EEPROM


u8_x DX8_WriteZone(u8_x zone, u16_x address, u16_x len, u8_x *buf);

功能描述:對指定的zone的地址空間進(jìn)行數(shù)據(jù)操作

參數(shù):    zone      指定的zone分區(qū)(0—(dx8_info.ZoneNum-1))

          address   寫入數(shù)據(jù)的起始地址

          len        寫入數(shù)據(jù)的長度

          buf        要寫入的數(shù)據(jù)buffer

返回值:  寫成功返回0,否則返回錯(cuò)誤代碼

說明:如該zone為認(rèn)證模式或者加密模式,需要先用該zone的密鑰DX8_VerifyZone驗(yàn)證成功后,才能執(zhí)行寫該zone的操作,輸入的起始地址與操作的長度之和不能超過該zone的范圍大小,否則會(huì)返回相應(yīng)錯(cuò)誤代碼。

示例代碼:

u8_x rv;

u8_x buf[32];

for (int i=0;i<32;i++) buf[i] = i;

rv = DX8_WriteZone(0,0,32,buf); // Zone 00地址開始寫32個(gè)字節(jié)

if (rv) {

   printf(“Write Zone failed, rv = 0x%.2x\n”, rv);

   return rv;

}


7.3.3. EEPROM


u8_x DX8_ReadZone (u8_x zone, u16_x address, u16_x len, u8_x *buf);

功能描述:對指定的zone的地址空間進(jìn)行數(shù)據(jù)操作

參數(shù):    zone      指定的zone分區(qū)(0--(dx8_info.ZoneNum-1))

          address   讀出數(shù)據(jù)的起始地址

          len        讀出數(shù)據(jù)的長度

          buf        返回?cái)?shù)據(jù)buffer

返回值:  讀成功返回0,否則返回錯(cuò)誤代碼

說明:如該zone為加密模式,需要先用該zone的密鑰DX8_VerifyZone驗(yàn)證成功后,才能執(zhí)行讀該zone的操作,輸入的起始地址與操作的長度之和不能超過該zone的可訪問空間,否則會(huì)返回相應(yīng)錯(cuò)誤代碼。

示例代碼:

u8_x rv;

u8_x buf[32];

rv = DX8_ReadZone(0,0,32,buf); // Zone 00地址開始讀取32個(gè)字節(jié)

if (rv) {

   printf(“Read Zone failed, rv = 0x%.2x\n”, rv);

   return rv;



待續(xù)......

【返回列表】
g82tOoulnQx8IvPD+PPGymqB9B021S0kA+P7z5zxkuoKKZCSmCpUKpTajRnCPIDPO1Atzf61lsZba0UkQE5bq0xXMSVRQ/gYqh0FyAXa32SJekMUjaLzBMJxtxHYchIg8JvuMcv5E6seAjNyHbo1JWWrMswSiSTFWZWen5WncsjDVfCCzQGYVg1DFszIkzpQNjEyf5KcE4+sLWle6d6YE/NRxxmOXPb2OOyZ9VrmKW0=