Project

General

Profile

Download (2.42 KB) Statistics
| Branch: | Revision:
1
package org.toorcamp.HelloSTK;
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 HelloSTK 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
	
23
	static byte[] menuItemText = new byte[] { 'H', 'e', 'l', 'l', 'o', ',', ' ', 'S', 'T', 'K'};
24
	
25
	private HelloSTK() {
26
		// This is the interface to the STK applet registry (which is separate
27
		// from the JavaCard applet registry!)
28
		ToolkitRegistry reg = ToolkitRegistry.getEntry();
29
	
30
		// Define the applet Menu Entry
31
		helloMenuItem = reg.initMenuEntry(menuItemText, (short)0, (short)menuItemText.length,
32
				PRO_CMD_SELECT_ITEM, false, (byte)0, (short)0);
33
	}
34
	
35
	// This method is called by the card when the applet is installed. You must
36
	// instantiate your applet and register it here.
37
	public static void install(byte[] bArray, short bOffset, byte bLength) {
38
		HelloSTK applet = new HelloSTK();
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
	
63
	private void showHello() {
64
		ProactiveHandler proHdlr = ProactiveHandler.getTheHandler();
65
		proHdlr.initDisplayText((byte)0, DCS_8_BIT_DATA, welcomeMsg, (short)0, 
66
				(short)(welcomeMsg.length));
67
		proHdlr.send();
68
		return;
69
	}
70
}
    (1-1/1)
    Add picture from clipboard (Maximum size: 48.8 MB)