Throw an error for unsupported instructions
This commit is contained in:
parent
39948e42f2
commit
22b11b1ee8
1 changed files with 21 additions and 24 deletions
|
@ -22,16 +22,13 @@ import static hwb1.MyAppletStrings.*;
|
||||||
name = "MyAppletStrings")
|
name = "MyAppletStrings")
|
||||||
public class MyApplet extends Applet {
|
public class MyApplet extends Applet {
|
||||||
private byte[] storage = null;
|
private byte[] storage = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Installs this applet.
|
* Installs this applet.
|
||||||
*
|
*
|
||||||
* @param bArray
|
* @param bArray the array containing installation parameters
|
||||||
* the array containing installation parameters
|
* @param bOffset the starting offset in bArray
|
||||||
* @param bOffset
|
* @param bLength the length in bytes of the parameter data in bArray
|
||||||
* the starting offset in bArray
|
|
||||||
* @param bLength
|
|
||||||
* the length in bytes of the parameter data in bArray
|
|
||||||
*/
|
*/
|
||||||
public static void install(byte[] bArray, short bOffset, byte bLength) {
|
public static void install(byte[] bArray, short bOffset, byte bLength) {
|
||||||
new MyApplet();
|
new MyApplet();
|
||||||
|
@ -48,8 +45,7 @@ public class MyApplet extends Applet {
|
||||||
* Processes an incoming APDU.
|
* Processes an incoming APDU.
|
||||||
*
|
*
|
||||||
* @see APDU
|
* @see APDU
|
||||||
* @param apdu
|
* @param apdu the incoming APDU
|
||||||
* the incoming APDU
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void process(APDU apdu) {
|
public void process(APDU apdu) {
|
||||||
|
@ -61,33 +57,34 @@ public class MyApplet extends Applet {
|
||||||
switch (instruction) {
|
switch (instruction) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
case 0x04:
|
case 0x04:
|
||||||
byte[] response;
|
byte[] response;
|
||||||
length = apdu.setOutgoing();
|
length = apdu.setOutgoing();
|
||||||
|
|
||||||
if (instruction == 0x00) {
|
if (instruction == 0x00) {
|
||||||
response = AuthorName;
|
response = AuthorName;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
response = storage;
|
response = storage;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (length > response.length) {
|
if (length > response.length) {
|
||||||
length = (short)response.length;
|
length = (short) response.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
apdu.setOutgoingLength(length);
|
apdu.setOutgoingLength(length);
|
||||||
apdu.sendBytesLong(response, (short)0, length);
|
apdu.sendBytesLong(response, (short) 0, length);
|
||||||
break;
|
break;
|
||||||
case 0x02:
|
case 0x02:
|
||||||
length = apdu.setIncomingAndReceive();
|
length = apdu.setIncomingAndReceive();
|
||||||
|
|
||||||
if (length > 20) {
|
if (length > 20) {
|
||||||
// ToDo: Handle too much data.
|
// ToDo: Handle too much data.
|
||||||
}
|
} else {
|
||||||
else {
|
Util.arrayCopy(buffer, ISO7816.OFFSET_CDATA, storage, (short) 0, length);
|
||||||
Util.arrayCopy(buffer, ISO7816.OFFSET_CDATA, storage, (short)0, length);
|
}
|
||||||
}
|
break;
|
||||||
break;
|
default:
|
||||||
|
ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue