From 22b11b1ee855228bb3fa5250f95dd1ec8459fbb7 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Fri, 13 Oct 2023 01:25:46 +0200 Subject: [PATCH] Throw an error for unsupported instructions --- hwb1/src/hwb1/MyApplet.java | 45 +++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/hwb1/src/hwb1/MyApplet.java b/hwb1/src/hwb1/MyApplet.java index 0b37194..06696e3 100644 --- a/hwb1/src/hwb1/MyApplet.java +++ b/hwb1/src/hwb1/MyApplet.java @@ -22,16 +22,13 @@ import static hwb1.MyAppletStrings.*; name = "MyAppletStrings") public class MyApplet extends Applet { private byte[] storage = null; - + /** * Installs this applet. * - * @param bArray - * the array containing installation parameters - * @param bOffset - * the starting offset in bArray - * @param bLength - * the length in bytes of the parameter data in bArray + * @param bArray the array containing installation parameters + * @param bOffset 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) { new MyApplet(); @@ -48,8 +45,7 @@ public class MyApplet extends Applet { * Processes an incoming APDU. * * @see APDU - * @param apdu - * the incoming APDU + * @param apdu the incoming APDU */ @Override public void process(APDU apdu) { @@ -61,33 +57,34 @@ public class MyApplet extends Applet { switch (instruction) { case 0x00: case 0x04: - byte[] response; + byte[] response; length = apdu.setOutgoing(); - + if (instruction == 0x00) { response = AuthorName; - } - else { + } else { response = storage; } if (length > response.length) { - length = (short)response.length; + length = (short) response.length; } apdu.setOutgoingLength(length); - apdu.sendBytesLong(response, (short)0, length); + apdu.sendBytesLong(response, (short) 0, length); break; case 0x02: - length = apdu.setIncomingAndReceive(); - - if (length > 20) { - // ToDo: Handle too much data. - } - else { - Util.arrayCopy(buffer, ISO7816.OFFSET_CDATA, storage, (short)0, length); - } - break; + length = apdu.setIncomingAndReceive(); + + if (length > 20) { + // ToDo: Handle too much data. + } else { + Util.arrayCopy(buffer, ISO7816.OFFSET_CDATA, storage, (short) 0, length); + } + break; + default: + ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); + break; } } }