北邮java智能卡实验报告实验三电子钱包.doc
流程图A、总体框图B、PIN验证模块图C、存款模块图D、消费模块图E、查询余额模块图关键代码部分A、PIN的次数判断publicbooleanselect(){//在选择钱包应用之前,对pin可尝试次数进行判断,若可尝试次数为零,即钱包已锁定,则该钱包应用不能被选择if(pin.getTriesRemaining()==0)returnfalse;returntrue;}publicvoiddeselect(){//当钱包应用被取消选择是,将pin的状态清空为初始值pin.reset();}B、APDU入口publicvoidprocess(APDUapdu){byte[]buffer=apdu.getBuffer();/*APDU对象为JCRE临时入口点对象,它可以被任何应用所访问,负责传递终端发送的APDU命令。通过APDU.getBuffer()命令即可以得到APDU对象的通信缓冲区,即APDU命令数组*/buffer[ISO7816.OFFSET_CLA]=(byte)(buffer[ISO7816.OFFSET_CLA]//判断命令头是否正确if((buffer[ISO7816.OFFSET_CLA]==0)//若为select命令,则直接返回,不做其他操作if(buffer[ISO7816.OFFSET_CLA]!=Wallet_CLA)ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);/*若为其他命令,则判断命令CLA和INS是否能为钱包应用所支持,若为支