Project

General

Profile

Download (2.42 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[] { 'W', 'e', 'l', 'c', 'o', 'm', 'e', ' ',
20
                                            't', 'o', ' ', 'T', 'o', 'o', 'r', 'C',
21
                                            'a', 'm', 'p', ' ', '2', '0', '1', '2' };
22
	static byte[] menuItemText = new byte[] { 'H', 'e', 'l', 'l', 'o', ',', ' ', 'S', 'T', 'K'};
23
	
24
	private IMSIPseudo() {
25
		// This is the interface to the STK applet registry (which is separate
26
		// from the JavaCard applet registry!)
27
		ToolkitRegistry reg = ToolkitRegistry.getEntry();
28
	
29
		// Define the applet Menu Entry
30
		helloMenuItem = reg.initMenuEntry(menuItemText, (short)0, (short)menuItemText.length,
31
				PRO_CMD_SELECT_ITEM, false, (byte)0, (short)0);
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
		applet.register();
39
	}
40
	
41
	// This processes APDUs sent directly to the applet. For STK applets, this
42
	// interface isn't really used.
43
	public void process(APDU arg0) throws ISOException {
44
		// ignore the applet select command dispached to the process
45
		if (selectingApplet())
46
			return;
47
	}
48

    
49
	// This processes STK events.
50
	public void processToolkit(byte event) throws ToolkitException {
51
		EnvelopeHandler envHdlr = EnvelopeHandler.getTheHandler();
52

    
53
		if (event == EVENT_MENU_SELECTION) {
54
			byte selectedItemId = envHdlr.getItemIdentifier();
55

    
56
			if (selectedItemId == helloMenuItem) {
57
				showHello();
58
			}
59
		}
60
	}
61
	
62
	private void showHello() {
63
		ProactiveHandler proHdlr = ProactiveHandler.getTheHandler();
64
		proHdlr.initDisplayText((byte)0, DCS_8_BIT_DATA, welcomeMsg, (short)0, 
65
				(short)(welcomeMsg.length));
66
		proHdlr.send();
67
		return;
68
	}
69
}
    (1-1/1)
    Add picture from clipboard (Maximum size: 48.8 MB)