OTA Parameters are split in 3 categories:
- SIM Profile
- SIM
- Remote Type Management
- RFM (Remote File Management)
- RAM (Remote Application Management)
SIM Profile Parameters
SIM Profile parameters are present for a batch of SIMs.
SIM Profile Parameters | Detail | Purpose | Size | Type | Common Values |
---|---|---|---|---|---|
cla | Class Byte | The class byte shall be coded according to section 11.1.4.1 in GlobalPlatform Card Specification version 2.3 | 1 | Hex | 80 |
spi | Security Parameter Indicator | Specifies what ciphering algorithm is used, if PoR is ciphered and more | 2 | Hex | 1621 |
kic | Key and algorithm Identifier for ciphering | Algorithm type used for ciphering | 1 | Hex | 15 |
kid | Key and algorithm Identifier for RC/CC/DS | Algorithm type used to compute RC/CC/DS filed to verify integrity data | 1 | Hex | 15 |
tar | Toolkit Application Reference | Used to send updates to a specific SIM application (ex: card manager, gsm, usim) | 3 | Hex | 000000(RAM) b00010(GSM) b00001(USIM) |
SIM Parameters
SIM parameters are present for each SIM.
SIM Parameters | Detail | Purpose | Size | Type | Common Values |
---|---|---|---|---|---|
kic | Key Identifier for ciphering | Key used for ciphering | 16/24 | Hex | - |
kid | Key Identifier for RC/CC/DS | Key used to verify integrity data | 16/24 | Hex | - |
counter | Counter | Counter used for replay detection and sequance integrity | 5 | Hex | 000000000 |
Remote Type Management
Remote Type Management is split in 2:
- RAM – Used to manage applets on SIM
- RFM – Used to manage SIM files
RAM Parameters
RAM parameters are used to manage STK or UTK applets.
Applets can be managed using RAM operations: load, install, delete.
Load Operation
Process the data inside .CAP File and stores it inside SIM card memory:
- SIM card memory is limited
- CAP file is generated from the Applet Java Class
Multiple LOAD commands may be used to transfer a Load File to the card.
The Load File is divided into smaller components for transmission
Install Operation
Initiates and performsthe applet installation
Delete Operation
Is used to delete a uniquely identifiable object such as an Executable Load File, an
Application, optionally an Executable Load File and its related Applications.
Install applet flow:
- Load Operation: Process .cap file and store into SIM
- Install Operation: Performs applet installation
General RAM Parameters
Ram Parameters | Operation | Detail | Purpose | Size (bytes) | Type | Common Values |
---|---|---|---|---|---|---|
applet | load/install | .CAP File | Processed .CAP File encoded in base64 | variable | String | - |
non_volatile_data_size | load/install | Non volatile Memory Space | Used to check memory space before installing an applet on SIM (decimal 0-655363) | 4 | Int | |
volatile_data_size | load/install | Volatile Memory Space | Used to check memory space before installing an applet on SIM (decimel 0 - 655363) | 4 | Int | |
module_aid | install | Module AID | Executable Module AID is the AID of the Executable Module previously loaded. The Executable Module shall be present whitin an Executable Load File | Variable | Hex | - |
instance_aid | install | Instance AID | Used to indicate what instance AID (from the installed applications) will be selected | Variable | Hex | - |
toolkit_parameters | install | Toolkit Parameters | It specifies if applet is UTK, STK or none. Possible values: null/sim/uicc. See tables below if sim or uicc is specified. | Variable | String | null/sim/uicc |
app_parameters | install | Application Parameters | Application specific parameters | Variable | Hex | null |
aid | delete | Applet ID | Applet ID | Variable | Hex | - |
delete_related_objects | delete | Delete Related Objects | When deleting an applet delete_related_objects can be specified and all the data that is related to AID will be removed | Variable | Bool | true |
Toolkit Parameters
If applet has toolkit parameters (sim/uicc) the following must be specified.
Toolkit Parameters | Toolkit Type | Detail | Purpose | Size (characters) | Type | Common Values |
---|---|---|---|---|---|---|
access_domain | sim | Access Domain | The access domain is used to specify the UICC files that may be accessed by the application and the operations allowed on these files. | Variable (usually 2) | Hex | 00(Full Access) FF(No access) |
priority_level | sim/uicc | Priority Level | The priority specifies the order of activation of an application compared to the other application registered to the same event. | 2 | Hex | 01(Highest) FF(Lowest) |
max_timers | sim/uicc | Max Timers | Maximum number of timers allowed for this application instance (Values: 0 - 225) | 3 | Int | |
max_menu_entry_text | sim/uicc | Max Menu Entry Text | Maximum text lenght for a menu entry (Values: 0-255) | 3 | Int | 16 |
Toolkit Parameters | Toolkit type | Detail | Purpose | Size (characters) | Type | Common Values |
---|---|---|---|---|---|---|
max_menu_entries | sim/uicc | Max Menu entries | It defines how the menu is build, order of menu items (Values: 0-255) | 3 | Int | 1 |
multi_tar | sim/uicc | Multiple Tar Values | TAR Value(s) of the Toolkit Application instance. Multiple TARs can be specified by splitting them with character",". | Variable | Hex | null |
max_nr_services | uicc | Maximum Nr. of Services | Maximum number of services for this application instance (values: 0-225) | 3 | Int | |
uicc_access_app | uicc | UICC Access Application | UICC Access Application specific parameters | Variable | Hex | null |
uicc_admin_access_app | uicc | UICC Administrator Access application | UICC Administrative Access Application specific parameters | Variable | Hex | null |
RFM Parameters
RFM Parameters are used to manage SIM Files by sending APDU(s) to SIM.
An APDU (Application Protocol Data Unit) is a hexadecimal command that makes operation on SIMs.
Structure of a command APDU is presented below:
APDU Parameter | Detail | Size (bytes) | Type | Common Values |
---|---|---|---|---|
CLA | Class of Instructions | 1 | Hex | 00 - GSM A0 - USIM |
INS | Instruction Code | 1 | Hex | A4 - Select D6 - Update transparent EF |
P1 | Instruction Parameter 1 | 1 | Hex | ex: 01 - Record number in case of update Linear EF |
P2 | Instruction Parameter 2 | 1 | Hex | ex: 04 - The record number is given in P1 |
P3 | Lenght of Data | 1 | Hex | - |
Data | Data of the APDU | var | Hex | 3F00 - Address to select (Select MF) AABBCC - Value that will be stored in EF |
YateOTA API can generate those APDU(s) by giving details like: SIM application, address, value.
See more detail here.