Project

General

Profile

Download (2.35 KB) Statistics
| Branch: | Revision:
1 4e5e516a Oliver Smith
package org.osmocom.IMSIPseudo;
2
3
import javacard.framework.APDU;
4
import javacard.framework.Applet;
5
import javacard.framework.ISOException;
6
7
import sim.toolkit.EnvelopeHandler;
8
import sim.toolkit.ProactiveHandler;
9
import sim.toolkit.ToolkitConstants;
10
import sim.toolkit.ToolkitException;
11
import sim.toolkit.ToolkitInterface;
12
import sim.toolkit.ToolkitRegistry;
13
14
public class IMSIPseudo extends Applet implements ToolkitInterface, ToolkitConstants {
15
	// DON'T DECLARE USELESS INSTANCE VARIABLES! They get saved to the EEPROM,
16
	// which has a limited number of write cycles.
17
	private byte helloMenuItem;
18
19 1e5cc46d Oliver Smith
	static byte[] LUCounter = new byte[] { '0', 'x', ' ', 'L', 'U' };
20 2dcbfabb Oliver Smith
	static byte[] title = new byte[] { 'I', 'M', 'S', 'I', ' ', 'P', 's', 'e', 'u', 'd', 'o', 'n', 'y', 'm',
21
					   'i', 'z', 'a', 't', 'i', 'o', 'n'};
22 4e5e516a Oliver Smith
23
	private IMSIPseudo() {
24
		// This is the interface to the STK applet registry (which is separate
25
		// from the JavaCard applet registry!)
26
		ToolkitRegistry reg = ToolkitRegistry.getEntry();
27
28
		// Define the applet Menu Entry
29 2dcbfabb Oliver Smith
		helloMenuItem = reg.initMenuEntry(title, (short)0, (short)title.length,
30 4e5e516a Oliver Smith
				PRO_CMD_SELECT_ITEM, false, (byte)0, (short)0);
31 e28705af Oliver Smith
		reg.setEvent(EVENT_EVENT_DOWNLOAD_LOCATION_STATUS);
32 4e5e516a Oliver Smith
	}
33
34
	// This method is called by the card when the applet is installed. You must
35
	// instantiate your applet and register it here.
36
	public static void install(byte[] bArray, short bOffset, byte bLength) {
37
		IMSIPseudo applet = new IMSIPseudo();
38 e28705af Oliver Smith
39 4e5e516a Oliver Smith
		applet.register();
40
	}
41
42
	// This processes APDUs sent directly to the applet. For STK applets, this
43
	// interface isn't really used.
44
	public void process(APDU arg0) throws ISOException {
45
		// ignore the applet select command dispached to the process
46
		if (selectingApplet())
47
			return;
48
	}
49
50
	// This processes STK events.
51
	public void processToolkit(byte event) throws ToolkitException {
52
		EnvelopeHandler envHdlr = EnvelopeHandler.getTheHandler();
53
54
		if (event == EVENT_MENU_SELECTION) {
55
			byte selectedItemId = envHdlr.getItemIdentifier();
56
57
			if (selectedItemId == helloMenuItem) {
58
				showHello();
59
			}
60
		}
61 e28705af Oliver Smith
62
		if (event == EVENT_EVENT_DOWNLOAD_LOCATION_STATUS) {
63 1e5cc46d Oliver Smith
			LUCounter[0]++;
64 e28705af Oliver Smith
			showHello();
65
		}
66 4e5e516a Oliver Smith
	}
67
68
	private void showHello() {
69
		ProactiveHandler proHdlr = ProactiveHandler.getTheHandler();
70 1e5cc46d Oliver Smith
		proHdlr.initDisplayText((byte)0, DCS_8_BIT_DATA, LUCounter, (short)0,
71
				(short)(LUCounter.length));
72 4e5e516a Oliver Smith
		proHdlr.send();
73
		return;
74
	}
75
}
Add picture from clipboard (Maximum size: 48.8 MB)