• <b id="moyrj"></b>
  • <center id="moyrj"><dd id="moyrj"></dd></center>
  • <dfn id="moyrj"><mark id="moyrj"></mark></dfn>

      <sub id="moyrj"></sub>
      <sub id="moyrj"><ol id="moyrj"><abbr id="moyrj"></abbr></ol></sub>
      上海動信微電子科技有限公司

      聯(lián)系我們

      13482583038

      技術(shù)資料

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

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

      發(fā)布時間:2017-09-01瀏覽次數(shù):載入中...來源:上海動信微電子科技有限公司


      7.??? DX8_API庫函數(shù)詳細介紹

      這章節(jié)主講DX8_API函數(shù)的詳細介紹的第一部分系統(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,否則返回錯誤代碼

      示例代碼:

      u8_x rv;

      rv = DX8_Reset();

      if (rv) {

      ?? printf(“Reset device failed, rv = 0x%.2x\n”, rv);

      ?? return rv;

      }

      DX8_Reset獲取DX8芯片的配置信息存儲在CHIP_INFO dx8_info結(jié)構(gòu)體中,dx8_info在庫中已經(jīng)定義,在DX8_API.h頭文件extern 出來了,用戶可以直接訪問dx8_info來獲取芯片的信息,如SN、UIDZone的配置模式等:

      ? ? ? 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個字節(jié),每顆芯片有全球唯一的序列號,永遠無法修改

      UID7個字節(jié),用戶可以對每個產(chǎn)品自行設(shè)置ID號,設(shè)置后可鎖定,永遠無法修改,出廠時為全0xff

      MID6個字節(jié),廠商代碼,只讀

      ZoneMode16個字節(jié),每個字節(jié)對應(yīng)一個Zone的配置信息,配置完成后將鎖定,將永遠無法修改,每個字節(jié)定義如下:


      ZoneMode字節(jié)定義


      Fuse1OTP字節(jié),該字節(jié)每bit只能從1寫成0, 0永遠無法再變成1該字節(jié)每bit代表相應(yīng)配置信息的鎖定狀態(tài),定義如下:


      Fuse字節(jié)定義

      說明:DX8芯片經(jīng)專用燒錄器個人化后,Fuse字節(jié)為0x00,即配置全部鎖定。


      7.1.3. 睡眠


      u8_x? DX8_Sleep(void);

      功能描述:使DX8芯片進入睡眠狀態(tài)

      參數(shù):???? void

      返回值:? 成功返回0,否則返回錯誤代碼

      示例代碼:

      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芯片進入工作狀態(tài),DX8_Reset()函數(shù)也可以喚醒DX8芯片

      參數(shù):???? void

      返回值:? 成功返回0,否則返回錯誤代碼

      示例代碼:

      u8_x rv;

      rv = DX8_Wakeup();

      if (rv) {

      ?? printf(“Wakeup device failed, rv = 0x%.2x\n”, rv);

      ?? return rv;

      }


      7.1.5. 獲取隨機數(shù)


      u8_x DX8_GetRandom(u8_x *random, u8_x len);

      功能描述:從DX8芯片中獲取真隨機數(shù),長度必須不大于32

      參數(shù):??? random?? 返回的隨機數(shù)存儲buffer

      ????????? len??????? 獲取隨機數(shù)的長度,最小為1,最大為32

      返回值:? 成功返回0,否則返回錯誤代碼

      示例代碼:

      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. 驗證PIN


      u8_x DX8_VerifyPin(u8_x *seed, u8_x *buf);

      功能描述:驗證PIN,主機對DX8進行驗證,同時DX8對主機進行驗證

      參數(shù):? ? ? seed? 輸入32個字節(jié)的隨機數(shù),主機對DX8進行認證

      ? ? ? ? ? ? ? ? buf?? 輸入8個字節(jié)PIN碼,DX8對主機進行認證

      返回值:? 驗證通過返回0,否則返回錯誤代碼

      說明該函數(shù)不會將用戶PIN碼暴漏在傳輸線上,PIN碼本身是對芯片配置權(quán)限作認證的,當芯片配置被全部鎖定后,該函數(shù)任然可以用作Passwords Checking雙向認證功能,芯片出廠PIN碼為80xff

      示例代碼:

      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時產(chǎn)生的dx8_engineer.h中定義,需要將dx8_engineer.h包含到應(yīng)用程序中


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

      【返回列表】
      rGk5PkuAMBM//euSwXP0LGqB9B021S0kkreF3ipxramyCa5DaLjqqKiy2u7YP90IM6Hiq4ndLfiJLyOcBP9x2oXayJYrw9plHlHG9VCPBuKrVkdQ56ATZR4CM3IdujUltnEdTtvusi9ZlZ6fladyyMNV8ILNAZhWDUMWzMiTOlBdpEd97VKAIjDq2lytouFDEXWQkT1yT6yqUy5/pj0hoQ==
    1. <b id="moyrj"></b>
    2. <center id="moyrj"><dd id="moyrj"></dd></center>
    3. <dfn id="moyrj"><mark id="moyrj"></mark></dfn>

        <sub id="moyrj"></sub>
        <sub id="moyrj"><ol id="moyrj"><abbr id="moyrj"></abbr></ol></sub>