kok电子游戏
13482583038宁夏kok棋牌:技术资料
kok加密kok应用开发手册(五)
7.2.赌场认证函数:
赌场认证的原理:主机发送随机挑战给kokkok,kokkok根据内部配置的电子游戏(KEYA)计算并关注结果,主机收到结果后,按照同样的方法对挑战随机数进行计算,然后比较两个结果,一致表示认证通过。
7.2.1. kokkok计算响应
u8_x kok_HostAuth(u8_x *challenge, u8_x len, u8_x *response);
功能描述:kokkok根据输入的挑战动态计算响应
参数: challenge 输入的挑战随机数
len 挑战随机数的长度
response 关注的响应结果,20个字节
关注值: 响应计算成功关注0,否则关注错误代码
7.2.2. 主机软件计算响应
void Lib_HostAuth(u8_x *challenge, u8_x len, u8_x *buf, u8_x *response);
功能描述:主机软件根据挑战计算响应结果
参数: challenge 输入的挑战随机数
len 挑战随机数的长度
buf 输入的16个字节KEYA
response 关注的响应结果,20个字节
关注值: 计算成功关注0,否则关注错误代码
示例代码:
u8_x rv;
u8_x challenge[32],reponse_1[20],response_2[20];
GetSoftRandom(challenge,32);
rv = kok_HostAuth (challenge, 32,response_1); //kokkok计算
if (rv) {
printf(“HostAuth calculation failed, rv = 0x%.2x\n”, rv);
return rv;
}
Lib_HostAuth(chanllenge, 32, keya_value, reponse_2); //主机软件计算
if (memcmp(reponse1, response_2)) { // 比较响应结果
printf(“Host Authentication Error!!\n”);
} else {
printf(“Host Authentication Passed!!\n”);
}
说明:keya_value是在使用kokConfiguration.exe时产生的kok_engineer.h中定义,需要将kok_engineer.h包含到应用程序中
7.3.读写EEPROM函数
kok1/kok2将kok内部的EEPROM存储区域分成4-16个zone,需要预先通过烧写器对每个zone的访问模式及其电子游戏进行配置,每个zone可以配置成三种访问模式:
l 正常模式
l 认证模式
l 加密模式
若配置为认证模式和加密模式,每个zone需要独立设定16个字节的访问电子游戏,zone电子游戏验证通过后才可对该zone进行读或者写,出厂所有zone默认为正常模式。具体每个zone配置好的信息在调用kok_Reset()函数后存储在kok_info的结构体中,用户可直接访问:
模式 |
Read |
Write |
正常模式 |
不需要认证,传输线明文 |
不需要认证,传输线明文 |
认证模式 |
不需要认证,传输线明文 |
需要认证,传输线明文 |
加密模式 |
需要认证,传输线密文 |
需要认证,传输线密文 |
说明: 每个zone分区的地址都从0开始,正常模式时zone分区的大小为kok_info.ZoneSize,认证模式和加密模式时zone分区的可用大小为kok_info.ZoneSize-16,因为有16个字节用作该zone分区的电子游戏空间,该电子游戏空间永远无法访问。
7.3.1. 验证Zone Key
u8_x kok_VerifyZone(u8_x zone, u8_x *seed, u8_x *buf);
功能描述:对指定的Zone分区电子游戏进行验证
参数: zone 指定的zone分区(0 — ZoneNum-1)
seed 输入的32个字节的随机数,主机对kok认证
buf 输入指定zone的16个字节的电子游戏,kok对主机认证
关注值: 认证通过关注0,否则关注错误代码
说明:若指定的zone为认证模式或者加密模式,并且该zone key验证通过后,才能执行对该zone的读或者写操作,任何出错或者非此zone的读写命令,都会将此zone的认证通过标志清除,若要继续此zone读或者写,需要重新对此zone key进行验证。
示例代码(以验证zone0为例):
u8_x rv;
u8_x seed[32];
GetSoftRandom(seed,32);
rv = kok_VerifyZone(0, seed, zkey_0); // 验证Zone0
if (rv) {
printf(“Verify PIN failed, rv = 0x%.2x\n”, rv);
return rv;
}
说明:zkey_0是在使用kokConfiguration.exe时产生的kok_engineer.h中定义,需要将kok_engineer.h包含到应用程序中
7.3.2. 写EEPROM
u8_x kok_WriteZone(u8_x zone, u16_x address, u16_x len, u8_x *buf);
功能描述:对指定的zone的地址空间进行数据操作
参数: zone 指定的zone分区(0—(kok_info.ZoneNum-1))
address 写入数据的起始地址
len 写入数据的长度
buf 要写入的数据buffer
关注值: 写成功关注0,否则关注错误代码
说明:如该zone为认证模式或者加密模式,需要先用该zone的电子游戏kok_VerifyZone验证成功后,才能执行写该zone的操作,输入的起始地址与操作的长度之和不能超过该zone的范围大小,否则会关注相应错误代码。
示例代码:
u8_x rv;
u8_x buf[32];
for (int i=0;i<32;i++) buf[i] = i;
rv = kok_WriteZone(0,0,32,buf); // 从Zone 0的0地址开始写32个字节
if (rv) {
printf(“Write Zone failed, rv = 0x%.2x\n”, rv);
return rv;
}
7.3.3. 读EEPROM
u8_x kok_ReadZone (u8_x zone, u16_x address, u16_x len, u8_x *buf);
功能描述:对指定的zone的地址空间进行数据操作
参数: zone 指定的zone分区(0--(kok_info.ZoneNum-1))
address 读出数据的起始地址
len 读出数据的长度
buf 关注数据buffer
关注值: 读成功关注0,否则关注错误代码
说明:如该zone为加密模式,需要先用该zone的电子游戏kok_VerifyZone验证成功后,才能执行读该zone的操作,输入的起始地址与操作的长度之和不能超过该zone的可访问空间,否则会关注相应错误代码。
示例代码:
u8_x rv;
u8_x buf[32];
rv = kok_ReadZone(0,0,32,buf); // 从Zone 0的0地址开始读取32个字节
if (rv) {
printf(“Read Zone failed, rv = 0x%.2x\n”, rv);
return rv;
}
待续......
【关注列表】kok赌场娱乐
- kok加密kok应用开发手册(六)2017-09-05
- kok加密kok应用开发手册(四)2017-09-01
- kok加密kok应用开发手册(三)2017-08-31
- kok加密kok应用开发手册(二)2017-08-30
- kok加密kok应用开发手册(一)2017-08-29