• 10bet十博网址

    联系我们

    13482583038

    技术资料

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

    10bet十博体育官网 - 欢迎您!!!

    发布时间:2017-09-03 浏览次数:载入中... 来源:www.bvlhosting.com


    10bet十博体育官网 - 欢迎您!!!这个章节主讲DX81C04防抄板加密芯片的函数使用


    7.2.防抄板认证函数:


    防抄板认证的原理:主机发送随机挑战给DX8芯片,DX8芯片根据内部配置的密钥(KEYA)计算并关注结果,主机收到结果后,按照同样的方法对挑战随机数进行计算,然后比较两个结果,一致表示认证通过。


    7.2.1. DX8芯片计算响应


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

    功能描述:DX8芯片根据输入的挑战动态计算响应

    参数:    challenge  输入的挑战随机数

                  len        挑战随机数的长度

                  response  关注的响应结果,20个字节

    关注值:  响应计算成功关注0,否则关注错误代码


    7.2.2. 10bet十博体育官网计算响应


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

    功能描述:10bet十博体育官网根据挑战计算响应结果

    参数:    challenge  输入的挑战随机数

              len        挑战随机数的长度

              buf        输入的16个字节KEYA

              response  关注的响应结果,20个字节

    关注值:  计算成功关注0,否则关注错误代码

    10bet十博体育官网:

    u8_x rv;

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

    GetSoftRandom(challenge,32);

    rv = DX8_HostAuth (challenge, 32response_1);  //DX8芯片计算

    if (rv) {

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

       return rv;

    }

    Lib_HostAuth(chanllenge, 32, keya_value, reponse_2); //10bet十博体育官网计算

    if (memcmp(reponse1, response_2)) {  // 比较响应结果

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

    } else {

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

    }

    说明:keya_value是在使用Dx8Configuration.exe时产生的dx8_engineer.h中定义,需要将dx8_engineer.h包含到应用程序中


    7.3.读写EEPROM函数


    DX81/DX82将芯片内部的EEPROM存储区域分成4-16zone,需要预先通过烧写器对每个zone的访问模式及其密钥进行配置,每个zone可以配置成三种访问模式:

    l  正常模式

    l  认证模式

    l  加密模式

    若配置为认证模式和加密模式,每个zone需要独立设定16个字节的访问密钥,zone密钥验证通过后才可对该zone进行读或者写,出厂所有zone默认为正常模式。具体每个zone配置好的信息在调用DX8_Reset()函数后存储在dx8­_info的结构体中,用户可直接访问:

     

    模式

    Read

    Write

    正常模式

    不需要认证,传输线明文

    不需要认证,传输线明文

    认证模式

    不需要认证,传输线明文

    需要认证,传输线明文

    加密模式

    需要认证,传输线密文

    需要认证,传输线密文

     

    说明: 每个zone分区的地址都从0开始,正常模式时zone分区的大小为dx8_info.ZoneSize,认证模式和加密模式时zone分区的可用大小为dx8_info.ZoneSize-16,因为有16个字节用作该zone分区的密钥空间,该密钥空间永远无法访问。


    7.3.1. 验证Zone Key


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

    功能描述:对指定的Zone分区密钥进行验证

    参数:    zone   指定的zone分区(0 — ZoneNum-1)

              seed   输入的32个字节的随机数,主机对DX8认证

              buf    输入指定zone16个字节的密钥,DX8对主机认证

    关注值:  认证通过关注0,否则关注错误代码

    说明:若指定的zone为认证模式或者加密模式,并且该zone key验证通过后,才能执行对该zone的读或者写操作,任何出错或者非此zone的读写命令,都会将此zone的认证通过标志清除,若要继续此zone读或者写,需要重新对此zone key进行验证。

    10bet十博体育官网(以验证zone0为例)

    u8_x rv;

    u8_x seed[32];

    GetSoftRandom(seed,32);

    rv = DX8_VerifyZone(0, seed, zkey_0);  // 验证Zone0

    if (rv) {

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

       return rv;

    }

    说明:zkey_0是在使用Dx8Configuration.exe时产生的dx8_engineer.h中定义,需要将dx8_engineer.h包含到应用程序中


    7.3.2. EEPROM


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

    功能描述:对指定的zone的地址空间进行数据操作

    参数:    zone      指定的zone分区(0—(dx8_info.ZoneNum-1))

              address   写入数据的起始地址

              len        写入数据的长度

              buf        要写入的数据buffer

    关注值:  写成功关注0,否则关注错误代码

    说明:如该zone为认证模式或者加密模式,需要先用该zone的密钥DX8_VerifyZone验证成功后,才能执行写该zone的操作,输入的起始地址与操作的长度之和不能超过该zone的范围大小,否则会关注相应错误代码。

    10bet十博体育官网:

    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个字节

    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的地址空间进行数据操作

    参数:    zone      指定的zone分区(0--(dx8_info.ZoneNum-1))

              address   读出数据的起始地址

              len        读出数据的长度

              buf        关注数据buffer

    关注值:  读成功关注0,否则关注错误代码

    说明:如该zone为加密模式,需要先用该zone的密钥DX8_VerifyZone验证成功后,才能执行读该zone的操作,输入的起始地址与操作的长度之和不能超过该zone的可访问空间,否则会关注相应错误代码。

    10bet十博体育官网:

    u8_x rv;

    u8_x buf[32];

    rv = DX8_ReadZone(0,0,32,buf); // Zone 00地址开始读取32个字节

    if (rv) {

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

       return rv;



    待续......

    【关注列表】
    YeTh/hQttg+FryCGXKte6GqB9B021S0kQutxZbD/J15HWoeo5zkdIUBQ15HeZDLo9Dokt8Mj/9a5GDEma0IfOraj44D0KNpwsxXJKglY+9O7E/fdXD9WTsaK1xXzSEtHIJNPuROI7brQ6EfzyUHco/h6jtkAj6TX9eo5ijGGSEU=