珠海金盾电子科技有限公司

联系我们

13482583038

技术资料

您的当前位置:首页 > 新闻中心 > 技术资料

DX8加密芯片应用开发手册(三)

发布时间:2017-08-31浏览次数:载入中...来源:珠海金盾电子科技有限公司

芯片 www.oldsongmovie.cn 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_VerifyPinDX8_HostAuthDX8_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语言开发

?

?C语言代码一

?C语言代码二

?

1.7.Java语言开发


Java语言一


Java语音二


待续......






【返回列表】
KrjyLJa4iQJRCIi/R+3CrWqB9B021S0kq1j2mEGzBrQ8R5Az6d/r5ZgqNQxlfmVOn2RUFVv3ntFBFkEKscPnyW26UV8vfSC020l/FRswnB6JLyOcBP9x2toJ5+w0Gk1o
ag8 | 博狗 | 真人娱乐 | 真人娱乐 | 亚洲城 | 环亚娱乐 | 澳门金沙 | 澳门金沙 | 真人娱乐 | 澳门葡京 | bet | 博狗 | 葡京娱乐 | 澳门葡京 | 365bet | 亚游集团 | 真人游戏 | 原创漫画 | 公务员网 | 28杠 | 网上彩票 | 北京快乐8 | 优德 | ag8 | 金沙 | ag8 | 韦德 | 开奖 | bet |