javacard cap文件.doc
还剩
17页未读,
继续阅读
下载文档到电脑,马上远离加班熬夜!
亲,喜欢就下载吧,价低环保!
内容要点:
当 JAVA 卡 Applet 开发完毕后,Cap 文件就可以被装载到 JAVA 智能卡上。安装时,我们需要使用读卡器。一般读卡器与 PC 之间的通信使用传统的串口,并口,或 USB 接口。PC 通过串口或 USB 接口向读卡器发送一定标准的指令,如微软的 PS/SC 接口指令,或读卡器制造商提供的接口指令。从而能让读卡器向智能卡发送装载(install)的 APDU 指令,完成 Applet 的 //用一个字节数组来处理 APDU 的头信息,和数据信息byte[] buffer = ();//setOutgoing()方法是告知终端 Applet 准备回传相应//并得到期望响应长度short le = ();//响应长度小于 2,出错if ( le > 8);buffer[1] = (byte)(balance & 0xFF);//将 apdu 缓冲区中从 0 位置后 2 }private void debit(APDU apdu) {//检验 PIN 码是否已被检验,若//否,则无权取款,并返回相应错误代码if ( ! () )(SW_PIN_VERIFICATION_REQUIRED);//用一个字节数组来处理 APDU 的头信息,和数据信息byte[] buffer = ();//OFFSET_LC 用来得到 APDU 中数据信息的长度byte n default: (_INS_NOT_SUPPORTED);//指令未知}}private void credit(APDU apdu) {//检验 PIN 码是否已被检验,若//否,则无权存款,并返回相应错误代码if ( ! () )(SW_PIN_VERIFICATION_REQUIRED);//用一个字节数组来处理 APDU 的头信息,和数据信息byte[] }public boolean select() {//如果 PIN 码锁死,Applet 将不能被选择if ( () == 0 )return false;return true;}public void deselect() {//重制 PIN();}public void process(APDU apdu) {//用一个字节数组来处理 APDU 的头信息,和数据信息// buf //存取金额最大值final static byte MAX_TRANSACTION_AMOUNT = 127;//PIN 码最多尝试值final static byte PIN_TRY_LIMIT =(byte)0x03;//PIN 最长的长度final static byte MAX_PIN_SIZE =(byte)0x08;//一些返回值//验证 PIN 码失败final staLc 这前五个字节有效。只有使用了 setIncomingAndReceive() 方法后,数据信息(Data Field)才会被加到缓冲的中,并在这五个字节之后。使用这种方式,主要是因为数据信息(Data Field)并不是必须的,有些 APDU 指令是没有数据信息的,所以在处理 APDU 指令时,一般先得到指令(INS),根据指令判断这一指令是否有数据信息,若有,则使用 setIncoming无 0x9000 存款命令执行成功无 0x6A83 存款金额无效无 0x6A84 存储总金额超过最大值无 0x6301 存款前需验证 PIN 码GetBalance 指令(余额查询指令)GetBalance APDU 指令(余额查询指令)- 终端发给卡CLA INS P1 P2 Lc Data Field Le0xB0 0x50 0x0 0x0 无 无 2为了方便介绍,我们规定这张“电子钱包”卡的
发表评论
暂无评论,赶快抢占沙发吧。