Project

General

Profile

Download (2.38 KB) Statistics
| Branch: | Revision:
1
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
	static byte[] welcomeMsg = new byte[] { '0', 'x', ' ', 'L', 'U' };
20
	static byte[] menuItemText = new byte[] { 'I', 'M', 'S', 'I', ' ', 'P', 's', 'e', 'u', 'd', 'o', 'n', 'y', 'm',
21
						  'i', 'z', 'a', 't', 'i', 'o', 'n'};
22

    
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
		helloMenuItem = reg.initMenuEntry(menuItemText, (short)0, (short)menuItemText.length,
30
				PRO_CMD_SELECT_ITEM, false, (byte)0, (short)0);
31
		reg.setEvent(EVENT_EVENT_DOWNLOAD_LOCATION_STATUS);
32
	}
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

    
39
		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

    
62
		if (event == EVENT_EVENT_DOWNLOAD_LOCATION_STATUS) {
63
			welcomeMsg[0]++;
64
			showHello();
65
		}
66
	}
67

    
68
	private void showHello() {
69
		ProactiveHandler proHdlr = ProactiveHandler.getTheHandler();
70
		proHdlr.initDisplayText((byte)0, DCS_8_BIT_DATA, welcomeMsg, (short)0,
71
				(short)(welcomeMsg.length));
72
		proHdlr.send();
73
		return;
74
	}
75
}
    (1-1/1)
    Add picture from clipboard (Maximum size: 48.8 MB)