欢迎来到天天文库
浏览记录
ID:1991792
大小:33.79 KB
页数:10页
时间:2017-11-14
《emv applet设计文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、EMVApplet系统设计说明1.概述本Applet是根据《EMVIntegratedCircuitCardSpecificationsforPaymentSystemsv4.3》及《VisaIntegratedCircuitCardSpecification》系列国际规范,基于NXP的JCOP平台,开发的用于金融交易的软件产品。本Applet运行的平台要求:支持JAVACARD2.2.1及以上版本、GlobalPlatformv2.1.1及以上版本的JAVA虚拟机。个人化按照规范《EMVCardPersonalizationSpecificationv1.1》
2、,采用《GlobalPlatformCardSpecificationv2.1.1》规范中定义的Storedata命令,使用DGI作为数据分组标识。能够达到快速发卡,可二次发卡的功能。10EMVApplet系统设计说明2.包(Package)本Applet包的设计可以有两种方式供选择:1.单package设计:即所有类都在一个包中,优点是整个工程结构简单,程序运行时减少包与包之间变量传递等,减低效率损耗,缺点是文件系统部分没有单独做一个package,不能以后直接拿出来给其它applet使用;2.双package设计:即文件系统单独做一个包,功能部分做另一个包,
3、其优缺点跟单package是对应的,即可能会使结构复杂,增加效率损耗,优点是文件系统如果设计的比较全面,可以在以后其它applet中拿来直接使用。在本Applet中,倾向于选择第一种,单package设计,因为以后的applet对文件系统的需求并不确定,目前设计文件系统不一定完全满足需求,或者不需要这么大的系统,反而生成的cap文件占用了较大的卡片空间。以下对采用单Package设计包含的类结构进行大致描述:com.bhz.emvAPICommonEMVAppletRecordFile图1类结构图以下将对各个类分别进行描述。10EMVApplet系统设计说明3.
4、EMVApplet类本类的声明如下:publicclassEMVAppletextendsAppletimplementsApplication,AppletEvent本类是本软件中最重要的类。在本类中,要完成所有EEPROM空间的申请,包括文件创建和密钥体创建等;要对个人化写入的数据进行处理,分别写入对应的记录文件、数据对象或密钥对象中;此外,更重要的是,本类还要实现所有APDU命令的处理。3.1EMVApplet构造方法EMVApplet构造方法定义本类中需要用到的全局变量,创建其它类的实例,创建所有文件和密钥、PIN都在此方法中完成。其中密钥方面,对称密钥
5、(3DES密钥)可以直接使用buildkey进行创建,RSA密钥位数在Common类中已经进行配置,直接创建对象;此外,PIN值、长度、最大重试次数也已经在Common中定义了常量。记录文件的创建也在此方法中完成,举例:RecordFile[]EF;EF[0]=newRecordFile((short)0x01,(short)800,(byte)UNDER_PSE);EF[1]=newRecordFile((short)0x02,(short)500,(byte)UNDER_ADF);密钥对象的创建举例:RSA_PriK_Crt=(RSAPrivateCrtKe
6、y)KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_CRT_PRIVATE,Common.RSA_KEY_LENGTH,false);为了提高交易效率,以下个人化阶段写入的变量在本类中定义初始值:TAG变量定义9F36Publicbyte[]ATC9F13Publicbyte[]LAST_ONLINE_ATC9F27PublicbyteCID9F10Publicbyte[]ISS_APP_DATA表1EMVApplet中定义的交易数据对象3.2Process和ProcessData方法Process方法是所有APDU的命令入口,进
7、入各条命令处理之前,应用需要做一些卡片生命周期判断。ProcessData主要是处理个人化阶段STOREDATA命令传递进来的数据,我们需要做的是接收数据,获取DGI标识,分别写入对应的记录或其它预先定义的变量中。对于RSA私钥和DES密钥,需要密文传入,卡内要知道此用于密钥解密的密钥,写入对象前解密。DGI与对象的对应表如下:10EMVApplet系统设计说明DGI名称类型用途0B01PSE下DIR文件记录,只有一条记录的记录文件中写入DIR信息0101EF[0]第一条记录记录写交易数据,通过readrecord返回给终端0102EF[0]第二条记录记录写交易
8、数据,通过readrec
此文档下载收益归作者所有