javacard applet 开发实例 正常运行 带jar包
package mifare;
import com.ibm.jz.JZSystem;
import javacard.framework.APDU;
import javacard.framework.Applet;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import javacard.framework.Util;
public class AmbiqApplet extends Applet {
byte[] mifarePassDefault={(byte)0x0b,(byte)0x54,(byte)0x57,(byte)0x07,(byte)0x45,(byte)0xfe,(byte)0x3a,(byte)0xe7};
byte[] mifarePass8={(byte)0x0b,(byte)0x54,(byte)0x57,(byte)0x07,(byte)0x45,(byte)0xfe,(byte)0x3a,(byte)0xe7};
byte[] mifarePass9={(byte)0x0b,(byte)0x54,(byte)0x57,(byte)0x07,(byte)0x45,(byte)0xfe,(byte)0x3a,(byte)0xe7};
byte[] adminPass={(byte)0x40,(byte)0x41,(byte)0x42,(byte)0x43,(byte)0x44,(byte)0x45,(byte)0x46,(byte)0x47,(byte)0x48,(byte)0x49,(byte)0x4a,(byte)0x4b,(byte)0x4c,(byte)0x4d,(byte)0x4e,(byte)0x4f};
public static void install(byte[] bArray, short bOffset, byte bLength) {
// GP-compliant JavaCard applet registration
new AmbiqApplet().register(bArray, (short) (bOffset + 1),
bArray[bOffset]);
}
public void process(APDU apdu) {
short i;
byte[] send=new byte[52];
byte[] send2=new byte[24];
// Good practice: Return 9000 on SELECT
if (selectingApplet()) {
return;
}
byte[] buf = apdu.getBuffer();
if(buf[ISO7816.OFFSET_CLA]==AmbiqConstant.CLS_AMBIQ)
{
switch (buf[ISO7816.OFFSET_INS]) {
case AmbiqConstant.INS_GET_MIFARE:
if(buf[ISO7816.OFFSET_P1]!=0 || buf[ISO7816.OFFSET_P2]!=0)
{
ISOException.throwIt(ISO7816.SW_INCORRECT_P1P2);
return;
}
/*Get Entire Mifare Ticket data
* Returns back the content of the entire sector 8 (3 block 8.0, 8.1, 8.2) and the first 4 bytes of
block 9.0; total 52bytes.
Filed Length (in bytes) Data Comments
CLA 1 0x80 Fixed class for the applet
INS 1 0x20 Read entire data
P1 1 0x00 Sector number
P2 1