03.193GPPRelease 1999Subscriber Identity Module Application Programming Interface (SIM API) for Java CardTS
The present document describes an API for the GSM SIM. This API allows application programmers access to the functions and data described in TS 11.11  and TS 11.14 , such that SIM based services can be developed and loaded onto SIMs, quickly and, if necessarily, remotely, after the card has been issued.
This API is an extension to the Java Card 2.1 API  based on the Java Card 2.1 Runtime Environment .
4.1 GSM Java Card Architecture
The over all architecture of the SIM Toolkit API based on Java Card 2.1 is:
Figure 1: GSM Java Card Architecture
SIM Toolkit Framework: this is the GSM Java Card runtime environment, it is composed of the JCRE, the Toolkit Registry, the Toolkit Handler and the File System.
JCRE: this is specified in Java Card 2.1 Runtime Environment Specification  and is able to select any specific applet and transmit to it the process of its APDU.
Toolkit Registry: this is handling all the registration information of the toolkit applets, and their link to the JCRE registry.
Toolkit Handler: this is handling the availability of the system handler and the toolkit protocol (i.e. toolkit applet suspension).
File System: this contains the card issuer file system, and handles the file access control and the applet file context. It is a JCRE owned object implementing the shareable interface sim.access.SIMView.
Applets: these derive from javacard.framework.applet and provide the entry points : process, select, deselect, install as defined in the Java Card 2.1 Runtime Environment Specification .
Toolkit applets: these derive from javacard.framework.applet, so provide the same entry points, and implement the shareable interface sim.toolkit.ToolkitInterface so that these applets can be triggered by an invocation of their processToolkit method. These applets’ AID is defined in TS 101 220 .
GSM Applet: this is the default applet as defined in Java Card 2.1 Runtime Environment Specification , it behaves as regular applet e.g. when another applet is selected via the SELECT AID APDU its deselect method is invoked. It’s AID is defined in TS 101 220 . This applet handles the TS 11.11 APDUs, CHV1/2, the GSM authentication algorithm and the subscriber file access control according to TS 11.11.
Loader applet: this is handling the installation and uninstallation of the applets as specified in the applet loading specification TS 03.48 .
Shareable interface: this is defined in the Java Card 2.1 specifications.
4.2 Java Card Selection Mechanism
The Java Card selection mechanism is defined in the Java Card Runtime Environment Specification .