编辑: QQ215851406 2018-10-27

只用 OneWireContainer18 类就能够初始化容器、无需使用 com.dalsemi.onewire.application.sha 包. 下面代码说明了只使用 OneWireContainer18 把密钥安装到器件的步骤.需要注意的是这段代码和 图3中的 SHAiButtonCopr 构造器的实际执行过程几乎相同. 协处理器的容器级初始化 图4/* install the signing secret */ coprDevice.installMasterSecret(signPageNumber, inputSignSecret, signPageNumber&

7);

/* install the authentication secret */ coprDevice.installMasterSecret(authPageNumber, inputAuthSecret, authPageNumber&

7);

/* create the configuration file */ OWFileOutputStream fos = new OWFileOutputStream(shaDevice, COPR.0 );

/* Write all the service parameters to the output stream (see AN157 for format) */ fos.write(acctFilename,0,4);

fos.write(acctFile);

fos.write(signPageNumber);

fos.write(authPageNumber);

fos.write(wspcPageNumber);

fos.write(0);

ersion umber //v n fos.write(0x01);

//month fos.write(0x01);

//day fos.write(0x07);

//year MSB fos.write(0xD1);

//year LSB C>

1/1/2001 fos.write(bindData);

fos.write(bindCode);

fos.write(signingChlg);

fos.write(l_providerName.length);

fos.write(l_initSignature.length);

fos.write(l_auxData.length);

fos.write( Maxim .getBytes());

//Provider name fos.write(initSignature);

fos.write( .getBytes());

//auxilliary info fos.write(l_encCode);

//encryption code fos.write(0);

//DS1961S Compatibility flag (see AN157) fos.close();

/* Create the new instance of SHAiButtonCopr, ready to perform transactions! */ SHAiButtonCopr copr = new SHAiButtonCopr(coprDevice, COPR.0 );

如果SHA协处理器是用于鉴别DS1961S/DS2432 iButton,或者用于产生复制暂存器的授权,需要 截取主鉴别密钥以适应DS1961S较小的暂存器.这里提供了一个可适当截取密钥的函数.随后协 处理器文件中的 DS1961S 兼容性标记 应当被置为非零值. 截取验证密钥 图5inputAuthSecret = SHAiButtonCopr.reformatFor1961S(inputAuthSecret);

AN156

5 of

23 2.2 初始化用户令牌 初始化用户令牌分两步.第一步:安装主鉴别密钥并将其绑定到iButton上,以产生唯一的令牌密 钥.第二步:向iButton中写入证书文件.实际操作要比最初听起来复杂一些.DS1963S的存储器 有十六页,相应的有八个密钥(每两页共用一个密钥).证书文件必须写到具有写次数计数器的页 中,这样就将其限制在器件内存区的最后八页中.同时,写证书文件页的密钥应该就是安装的主 鉴别密钥.但是,1-Wire文件API并不允许存储文件中按页........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题