Contents
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 / 19 |
| 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 / 19 |
| 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 |
| kik | Key Identifier for protecting KIC and KID | This key is used to protect the PUT KEY command itself that can be used to alter kic and kid. This command is not currently supported in YateOTA but we store the key in YateHSS/HLR as it's usually included in the .out file when cards are ordered. | 16/24 | Hex | - |
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 | A0 - GSM 00 - 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.