6.3.8 Toolkit Installation
3GPP51.013Release 17Test specification for Subscriber Identity Module (SIM) Application Programming Interface (API) for Java CardTS
6.3.8.1 Timers Allocation
Test Area Reference: FWK_TIN_TMAL
6.3.8.1.1 Conformance Requirements
6.3.8.1.1.1 Normal execution
- CRRN1: One toolkit applet can register to several timers, but a timer can only be allocated to one toolkit applet.
6.3.8.1.1.2 Parameters error
No requirements.
6.3.8.1.1.3 Context errors
- CRRC1: Allocated timers shall not exceed the maximum number of timers allowed for this applet instance defined during installation.
- CRRC2: The total number of timers allocated for all the applets shall not exceed 8. If the maximum number of timers required is greater than ’08’ (maximum numbers of timers specified in TS 11.14 [4], the card shall return the Status Word ‘6A80’, incorrect parameters in data field, to the Install(Install) command.
6.3.8.1.2 Test suite files
Test Script: FWK_TIN_TMAL_1.scr
Test Applet: FWK_TIN_TMAL_1.java
FWK_TIN_TMAL_2.java
FWK_TIN_TMAL_3.java
Load Script: FWK_TIN_TMAL_1.ldr
Cleanup Script: FWK_TIN_TMAL_1.clr
Parameter File: FWK_TIN_TMAL_1.par
6.3.8.1.3 Test Procedure
Id |
Description |
API/Framework Expectation |
APDU Expectation |
---|---|---|---|
1 |
More than 8 timers at the instantiation of applet1: check that applet1 is not installed. Install for install of applet1 with maximum 9 timers allocated, requesting a PoR to be sent via SMS-DELIVER-REPORT. |
The SIM answers to the Envelope with status words 9Fxx A GET RESPONSE is sent and the additional data in the PoR is checked. It must be 01 6A 80. |
|
Reset the card |
|||
2 |
Good installation of applet2 Install for install of applet2 (maximum 4 timers allocated). |
The SIM answers to the Envelope with status words 90 00 |
|
3 |
Allocate 4 timers Applet2 |
No exception shall be thrown. |
|
4 |
Allocate one more timer Applet2 |
Shall throw a ToolkitException with reason NO_TIMER_AVAILABLE |
|
5 |
Good installation of applet3 Install for install of applet3 (maximum 8 timers allocated). |
The SIM answers to the Envelope with status words 90 00 |
|
6 |
Allocate 4 timers Applet3 |
No exception shall be thrown. |
|
7 |
Allocate one more timer Applet3 |
Shall throw a ToolkitException with reason NO_TIMER_AVAILABLE |
|
8 |
Check that each timerId (allocated by applet2 and applet3) is between 1 and 8 and is different from each other |
6.3.8.1.4 Test Coverage
CRR number |
Test case number |
---|---|
N1 |
2, 3, 8 |
C1 |
1, 7 |
C2 |
4, 5, 6 |
6.3.8.2 Item Identifier
Test Area Reference: FWK_TIN_ITID
6.3.8.2.1 Conformance Requirements
6.3.8.2.1.1 Normal execution
- CRRN1: If the requested item identifier in the range [1-127] is not already allocated, then this item identifier shall be allocated to the current applet.
- CRRN2: If the requested item identifier is ’00’, the card shall take the first free value in the range [128,255].
6.3.8.2.1.2 Parameters error
- CRRP1: If the requested item identifier is in the range [128,255], then the card shall reject the install command.
6.3.8.2.1.3 Context errors
- CRRC1: If the requested item identifier in the range [1-127] is already allocated, then the card shall reject the install command.
6.3.8.2.2 Test suite files
Test Script: FWK_TIN_ITID_1.scr
Test Applet: FWK_TIN_ITID_1.java
FWK_TIN_ITID_2.java
FWK_TIN_ITID_3.java
Load Script: FWK_TIN_ITID_1.ldr
Cleanup Script: FWK_TIN_ITID_1.clr
Parameter File: FWK_TIN_ITID_1.par
6.3.8.2.3 Test Procedure
Id |
Description |
API/Framework Expectation |
APDU Expectation |
---|---|---|---|
1 |
Bad installation of applet1 Install for install of applet1.The following parameters item Id equal to 128 applet1 is selected |
applet1 is not found, status word 6X XX |
|
2 |
Good installation of applet1 Install for install of applet1. item Id = 1 for the first menu and 127 for the second one A Terminal Profile is sent to the card with only PROFILE_DOWNLOAD, SMS_PP_DOWNLOAD, MENU_SELECTION, SET_UP_MENU and COMMAND_RESULT facilities. |
The SIM answers to the Envelope with status words 91xx to send back to the ME the 2 new menus. The menus are (position/itemId/text) 01/01/menu11 02/127/menu12 |
|
3 |
Bad installation of applet2 Item identifier already allocated Install for install of applet2. item Id = 127 applet2 is selected |
applet2 is not found, status word 6X XX |
|
4 |
Good installation of applet2 Install for install of applet2. item Id = 0 |
The SIM answers to the Envelope with status words 91xx to send back to the ME the 3 menus. The menus are 01/01/menu11 02/127/menu12 03/128/menu21 |
|
5 |
Good installation of applet3 Install for install of applet3. item Id = 0 |
The SIM answers to the Envelope with status words 91xx to send back to the ME the 4 menus. The menus are 01/01/menu11 02/127/menu12 03/128/menu21 04/129/menu31 |
|
6 |
Good delete and installation of applet2 Delete instance of applet2 Perform a RESET and a Terminal Profile with the facilities of PROFILE_DOWNLOAD, SMS-PP_DATA_DOWNLOAD, MENU_SELECTION, COMMAND_RESULT and SET_UP_MENU Install for install of applet2. item Id = 0 |
The SIM answers to the Terminal Profile with status words 91xx to send back to the ME the 3 menus. The menus are 01/01/menu11 02/127/menu12 03/129/menu31 The SIM answers to the Envelope with status words 91xx to send back to the ME the 4 menus. The menus are 01/01/menu11 02/127/menu12 03/128/menu21 04/129/menu31 |
6.3.8.2.4 Test Coverage
CRR number |
Test case number |
---|---|
N1 |
2 |
N2 |
4, 5, 6 |
P1 |
1 |
C1 |
3 |
6.3.8.3 Item Position
Test Area Reference: FWK_TIN_ITPO
6.3.8.3.1 Conformance Requirements
6.3.8.3.1.1 Normal execution
- CRRN1: The position of the new menu entries is an absolute position among the existing ones.
- CRRN2: If the position identifier is 00h, the menu shall have the last position.
6.3.8.3.1.2 Parameters error
No requirements.
6.3.8.3.1.3 Context errors
No requirements.
6.3.8.3.2 Test suite files
Test Script: FWK_TIN_ITPO_1.scr
Test Applet: FWK_TIN_ITPO_1.java
FWK_TIN_ITPO_2.java
FWK_TIN_ITPO_3.java
Load Script: FWK_TIN_ITPO_1.ldr
Cleanup Script: FWK_TIN_ITPO_1.clr
Parameter File: FWK_TIN_ITPO_1.par
6.3.8.3.3 Test Procedure
Id |
Description |
API/Framework Expectation |
APDU Expectation |
---|---|---|---|
1 |
Installation of applet1 Perform Install for install of applet1.Position/ItemId 01/01 02/02 A Terminal Profile is sent to the card |
The menus are (position/itemId/text) 01/01/menu11 02/02/menu12 |
|
2 |
Installation of applet2 Perform Install for install of applet2. Position/ItemId 03/03 04/04 |
The SIM answers to the Envelope with status words 91xx to send back to the ME the 4 menus. The menus are (position/itemId/text) 01/01/menu11 02/02/menu12 03/03/menu21 04/04/menu22 |
|
3 |
Installation of applet3 Perform Install for install of applet3. Position/ItemId 00/05 |
The SIM answers to the Envelope with status words 91xx to send back to the ME the 5 menus. The menus are (position/itemId/text) 01/01/menu11 02/02/menu12 03/03/menu21 04/04/menu22 05/05/menu31 |
6.3.8.3.4 Test Coverage
NOTE: As Item Position management is not fully specified in the 3GPP TS 43.019 [7] or 3GPP TS 23.048 [8] all possible tests cannot be performed.
CRR number |
Test case number |
---|---|
N1 |
1, 2 |
N2 |
3 |
6.3.8.4 Maximum Text Length for a menu entry
Test Area Reference: FWK_TIN_MLME
6.3.8.4.1 Conformance Requirements
6.3.8.4.1.1 Normal execution
- CRRN1: The maximum length of item text string is defined at the installation of the toolkit applet.
6.3.8.4.1.2 Parameters errors
- CRRP1: If initMenuEntry length parameter is greater than the allocated space (Maximum Text Length for a menu entry), then a ToolkitException ALLOWED_LENGTH_EXCEEDED is thrown.
- CRRP2: If changeMenuEntry length parameter is greater than the allocated space (Maximum Text Length for a menu entry), then a ToolkitException ALLOWED_LENGTH_EXCEEDED is thrown.
6.3.8.4.1.3 Context errors
No requirements.
6.3.8.4.2 Test suite files
Test Script: FWK_TIN_MLME_1.scr
Test Applet: FWK_TIN_MLME_1.java
Load Script: FWK_TIN_MLME_1.ldr
Cleanup Script: FWK_TIN_MLME_1.clr
Parameter File: FWK_TIN_MLME_1.par
6.3.8.4.3 Test Procedure
Id |
Description |
API / Framework Expectation |
APDU Expectation |
---|---|---|---|
1 |
Installation of applet with 2 menus not exceeding the maximum text length Install one applet with 2 menu entries allowed and max. text length equal to 10. initMenuEntry defined at the install (install) command MenuEntry = "MenuEntry1", "MenuEntry2" Offset = 0 Length = 10 NextAction = ’00’ HelpSupported = false IconQualifier = ’00’ IconIdentifier = 0 |
||
2 |
initMenuEntry with a too large length initMenuEntry with length equal to 11 MenuEntry = " MenuEntry03" Offset = 0 Length = 11 NextAction = ’00’ HelpSupported = false IconQualifier = ’00’ IconIdentifier = 0 |
ToolkitException ALLOWED_LENGTH_EXCEEDED is thrown |
|
3 |
initMenuEntry with a right length initMenuEntry with length parameter equal to 10 MenuEntry = " MenuEntry3" Offset = 0 Length = 10 NextAction = ’00’ HelpSupported = false IconQualifier = ’00’ IconIdentifier = 0 |
a SET UP MENU (2 items) is issued with TLV item length equal to 11 (Identifier + Text string of item) |
|
4 |
changeMenuEntry with a right length Applet1 is triggered by a EVENT_MENU_SELECTION. changeMenuEntry of menu 1, with length parameter equal to 10 Id = ’01’ MenuEntry = "MenuEntry4" Offset = 0 Length = menuEntry.length NextAction = 0 HelpSupported = false IconQualifier = 0 IconIdentifier = 0 Return from processToolkit |
a SET UP MENU (2 items) is issued with TLV item length equal to 11 (Identifier + Text string of item) |
|
5 |
changeMenuEntry with a too large length Applet1 is triggered by a EVENT_MENU_SELECTION. ChangeMenuEntry of menu 1, with length parameter equal to 11 Id = ’02’ MenuEntry = "MenuEntry05" Offset = 0 Length = menuEntry.length NextAction = 0 HelpSupported = false IconQualifier = 0 IconIdentifier = 0 Return from processToolkit |
ToolkitException ALLOWED_LENGTH_EXCEEDED is thrown |
Shall not receive a SET UP MENU different from the previous one |
6.3.8.4.4 Test Coverage
CRR number |
Test case number |
---|---|
CRRN1 |
1, 3, 4 |
CRRP1 |
2 |
CRRP2 |
5 |
6.3.8.5 Maximum number of menu entries
Test Area Reference: FWK_TIN_NBME
6.3.8.5.1 Conformance Requirements
6.3.8.5.1.1 Normal execution
- CRRN1: The maximum number of menu entries is defined at the installation of the toolkit applet and can be the maximum number of successful invocations of the method initMenuEntry .
6.3.8.5.1.2 Parameters errors
- CRRP1: If the menu entry cannot be initialised (e.g. no more item data in applet loading parameter), a ToolkitException with the REGISTRY_ERROR reason code is thrown.
6.3.8.5.1.3 Context errors
No requirements.
6.3.8.5.2 Test suite files
Test Script: FWK_TIN_NBME_1.scr
Test Applet: FWK_TIN_NBME_1.java
FWK_TIN_NBME_2.java
Load Script: FWK_TIN_NBME_1.ldr
Cleanup Script: FWK_TIN_NBME_1.clr
Parameter File: FWK_TIN_NBME_1.par
6.3.8.5.3 Test Procedure
Id |
Description |
API/Framework Expectation |
APDU Expectation |
---|---|---|---|
1 |
Installation of applet with 3 menus Install (install) applet with max. number of menu entry is ‘3’, defined at the install (install) command. initMenuEntry for each menu entry allowed (3 times) MenuEntry = "menu1", "menu2", "menu3" Offset = 0 Length = 5 NextAction = ’00’ HelpSupported = false IconQualifier = ’00’ IconIdentifier = 0 |
No Exception is thrown |
|
2 |
init of a 4th menu initMenuEntry one more time MenuEntry = "menu4" Offset = 0 Length = 5 NextAction = ’00’ HelpSupported = false IconQualifier = ’00’ IconIdentifier = 0 |
ToolkitException REGISTRY_ERROR is thrown |
SET UP MENU (3 items) is issued with TLV item length equal to 6 (Identifier + Text string of item) |
3 |
Installation of 2nd applet with 0 menu Install (install) another applet, with max. number of menu entry is ‘0’, defined at the install (install) command. initMenuEntry once MenuEntry = "menu1" Offset = 0 Length = 5 NextAction = ’00’ HelpSupported = false IconQualifier = ’00’ IconIdentifier = 0 |
ToolkitException REGISTRY_ERROR is thrown |
Shall not receive a SET UP MENU different from the previous one |
6.3.8.5.4 Test Coverage
CRR number |
Test case number |
---|---|
CRRN1 |
1 |
CRRP1 |
2, 3 |
6.3.8.6 Access Domain
Test Area Reference: FWK_TIN_ACDO
6.3.8.6.1 Conformance Requirements
6.3.8.6.1.1 Normal execution
- CRRN1: The Access Domain parameter indicates the mechanism used to control the applet instance access to the GSM file System (’00’ means full access to the GSM File System, ‘FF’ means no access to the GSM File System).
6.3.8.6.1.2 Parameters errors
- CRRP1: If the Access Domain Parameter requested is not supported, the card shall return the Status Word ‘6A80’, incorrect parameters in data field, to the Install(Install) command.
- CRRP2: If an applet with Access Domain Parameter ‘FF’ (i.e. No Access to the GSM File System) tries to access a GSM file (e.g. invoke the updateBinary(..) method) the framework shall throw a SIMViewException with a AC_NOT_FULFILLED reason.
6.3.8.6.1.3 Context errors
No requirements.
6.3.8.6.2 Test suite files
Test Script: FWK_TIN_ACDO_1.scr
Test Applet: FWK_TIN_ACDO_1.java
FWK_TIN_ACDO_2.java
FWK_TIN_ACDO_3.java
Load Script: FWK_TIN_ACDO_1.ldr
Cleanup Script: FWK_TIN_ACDO_1.clr
Parameter File: FWK_TIN_ACDO_1.par
6.3.8.6.3 Test Procedure
Id |
Description |
API/Framework Expectation |
APDU Expectation |
---|---|---|---|
0 |
Install (install) applet1 with: – Length of Access Domain field value is ‘1’ – Access Domain Parameter value is ’00’ (full access to the GSM File System) Install (install) applet2 with: – Length of Access Domain field value is ‘1’ – Access Domain Parameter value is ‘FF’ (No access to the GSM File System) Install (install) applet3 with: – Length of Access Domain field value is ‘1’ – Access Domain Parameter value is ’00’ (full access to the GSM File System) |
||
1 |
readBinary/readRecord method with full Access Domain Parameter 1- Select EF-TARU file whose Read access condition is ALWAYS Perform the readBinary method: fileOffset = 0 resp = abRead[] respOffset = 0 respLength = 3 2- Select EF-SMS file whose Read access condition is CHV1 Perform the readRecord method: recNumber = 1 mode = REC_ACC_MODE_ABSOLUTE_CURRENT recOffset = 0 resp = abRead[] respOffset = 0 respLength = 3 3- Select EF-TRAC file whose Read access condition is CHV2 Perform the readBinary method: fileOffset = 0 resp = abRead[] respOffset = 0 respLength = 3 4- Select EF-SUME file Read access condition is ADM0 Perform the readBinary method: fileOffset = 0 resp = abRead[] respOffset = 0 respLength = 3 5- Select EF-TNR file whose Read access condition is NEVER Perform the readBinary method: fileOffset = 0 resp = abRead[] respOffset = 0 respLength = 3 |
1 to 4- no exception is thrown 5- SIMViewException AC_NOT_FULFILLED is thrown |
|
2 |
updateBinary/updateRecord method with full Access Domain Parameter For each case, send an Envelope that triggers the applet with the EVENT_UNFORMATTED_SMS_PP_ENV event. 1- Select EF-TNR file whose Update access condition is ALWAYS Perform the updateBinary method: fileOffset = 0 resp = abUpdate[FFFFFF] respOffset = 0 respLength = 3 2- Select EF-SMS file whose Update access condition is CHV1 Perform the updateRecord method: recNumber = 1 mode = REC_ACC_MODE_ABSOLUTE_CURRENT recOffset = 0resp = abUpdate[] respOffset = 0 respLength = 3 3- Select EF-FDN file whose Update access condition is CHV2 Perform the updateBinary method: recNumber = 1 mode = REC_ACC_MODE_ABSOLUTE_CURRENT recOffset = 0 resp = abUpdate[] respOffset = 0 respLength = 3 4- Select EF-SUME file Update access condition is ADM0 Perform the updateBinary method: fileOffset = 0 resp = abUpdate[] respOffset = 0 respLength = 3 5- Select EF-TNU file whose Update access condition is NEVER Perform the updateBinary method: fileOffset = 0 resp = abUpdate[] respOffset = 0 respLength = 3 |
1 to 4- no exception is thrown 5- SIMViewException AC_NOT_FULFILLED is thrown |
|
3 |
invalidate method with full Access Domain Parameter 1- Select EF-TNR file whose Invalidate access condition is ALWAYS Perform the invalidate method 2- Select EF-TIAC file whose Invalidate access condition is CHV1 Perform the invalidate method 3- Select EF-ADN file whose Invalidate access condition is CHV2 Perform the invalidate method 4- Select EF-SUME file Invalidate access condition is ADM0 Perform the invalidate method 5- Select EF-CNIV file whose Invalidate access condition is NEVER Perform the invalidate method |
1 to 4- no exception is thrown 5- SIMViewException AC_NOT_FULFILLED is thrown |
|
4 |
rehabilitate method with full Access Domain Parameter 1- Select EF-TNR file whose Rehabilitate access condition is ALWAYS Perform the rehabilitate method 2- Select EF-IMSI file whose Rehabilitate access condition is CHV1 Perform the rehabilitate method 3- Select EF-ADN file whose Rehabilitate access condition is CHV2 Perform the rehabilitate method 4- Select EF-SUME file Rehabilitate access condition is ADM0 Perform the rehabilitate method 5- Select EF-CNRI file whose Rehabilitate access condition is NEVER Perform the rehabilitate method |
1 to 4- no exception is thrown 5- SIMViewException AC_NOT_FULFILLED is thrown |
|
5 |
increase method with full Access Domain Parameter 1- Select EF-CNR file whose Increase access condition is ALWAYS Perform the increase method: incr = abIncreaseValue[] incrOffset = 0 resp = abRead[] respOffset = 0 2- Select EF-ACM file whose Increase access condition is CHV1 Perform the increase method: incr = abIncreaseValue[] incrOffset = 0 resp = abRead[] respOffset = 0 3- Select EF-CIAC file whose Increase access condition is CHV2 Perform the increase method: incr = abIncreaseValue[] incrOffset = 0 resp = abRead[] respOffset = 0 4- Select EF-CIAA file Increase access condition is ADM0 Perform the increase method: incr = abIncreaseValue[] incrOffset = 0 resp = abRead[] respOffset = 0 5- Select EF-CNU file whose Increase access condition is NEVER Perform the increase method |
1 to 4- no exception is thrown 5- SIMViewException AC_NOT_FULFILLED is thrown |
|
6 |
readBinary method with no Access Domain Parameter Send an Envelope that triggers the applet with the EVENT_UNFORMATTED_SMS_PP_ENV event. Select EF-TARU file whose Read access condition is ALWAYS Perform the readBinary method: fileOffset = 0 resp = abRead[] respOffset = 0 respLength = 3 t |
SIMViewException AC_NOT_FULFILLED is thrown |
|
7 |
updateRecord method with no Access Domain Parameter Send an Envelope that triggers the applet with the EVENT_UNFORMATTED_SMS_PP_ENV event. Select EF-SMS file whose Update access condition is CHV1 Perform the updateRecord method: fileOffset = 0 resp = abUpdate[] respOffset = 0 respLength = 3 |
SIMViewException AC_NOT_FULFILLED is thrown |
|
8 |
invalidate method with no Access Domain Parameter Send an Envelope that triggers the applet with the EVENT_UNFORMATTED_SMS_PP_ENV event. Select EF-ADN file whose Invalidate access condition is CHV2 Perform the invalidate method |
SIMViewException AC_NOT_FULFILLED is thrown |
|
9 |
rehabilitate method with no Access Domain Parameter Send an Envelope that triggers the applet with the EVENT_UNFORMATTED_SMS_PP_ENV event. Select EF-SUME file Rehabilitate access condition is ADM0 Perform the rehabilitate method |
SIMViewException AC_NOT_FULFILLED is thrown |
|
10 |
increase method with no Access Domain Parameter Send an Envelope that triggers the applet with the EVENT_UNFORMATTED_SMS_PP_ENV event. Select EF-CNR file whose Increase access condition is NEVER Perform the increase method |
SIMViewException AC_NOT_FULFILLED is thrown Applet2 finalizes Applet3 restore EF-SUME |
6.3.8.6.4 Test Coverage
NOTE: As Item Position management is not fully specified in the 3GPP TS 43.019 [7] or 3GPP TS 23.048 [8] all possible tests cannot be performed.
CRR number |
Test case number |
---|---|
CRRN1 |
1, 2, 3, 4, 5 |
CRRP1 |
Not tested |
CRRP2 |
6, 7, 8, 9, 10 |
6.3.8.7 Priority Level
Test Area Reference: FWK_TIN_PRLV
6.3.8.7.1 Conformance Requirements
6.3.8.7.1.1 Normal execution
- CRRN1: The priority specifies the order of activation of an applet compared to the other applet registered to the same event (’01’: Highest priority level, ‘FF’ : Lowest priority level).
- CRRN2: If two or more applets are registered to the same event and have the same priority level, the applets are activated according to their installation date (i.e. the most recent applet is activated first).
6.3.8.7.1.2 Parameters errors
No requirements.
6.3.8.7.1.3 Context errors
No requirements.
6.3.8.7.2 Test suite files
Test Script: FWK_TIN_PRLV_x.scr, x from 1 to 12
Test Applet: FWK_TIN_PRLV_x.java, x from 1 to 12, 8A, 8B, 9A, 9B, 10A, 10B
Load Script: FWK_TIN_PRLV_x.ldr, x from 1 to 12
Cleanup Script: FWK_TIN_PRLV_x.clr, x from 1 to 12
Parameter File: FWK_TIN_PRLV_x.par, x from 1 to 12, 8A, 8B, 9A, 9B, 10A, 10B
6.3.8.7.3 Test Procedure
Id |
Description |
API/Framework Expectation |
APDU Expectation |
---|---|---|---|
0 |
All applets are registered on an EVENT_UNFORMATTED_SMS_PP_ENV event |
||
1 |
Trigger 2 applets with 2 different maximum Priority Levels Install (install) applet1 with priority level ‘2’ and applet2 with priority level ‘1’, from package fwk_tin_prlv_1. Send an Envelope that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applets instances and packages |
A static variable is used to validate triggering order: applet2 is triggered before applet1 |
|
2 |
Trigger 2 applets with 2 different maximum Priority Levels Install (install) applet1 with priority level ‘1’ and applet2 with priority level ‘2’, from package fwk_tin_prlv_2. Send an Envelope that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applets instances and packages |
A static variable is used to validate triggering order: applet1 is triggered before applet2. |
|
3 |
Trigger 2 applets with 2 different Priority Levels Install (install) applet1 with priority level ’80’ and applet2 with priority level ‘7F’, from package fwk_tin_prlv_3. Send an Envelope that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applets instances and packages |
A static variable is used to validate triggering order: applet2 is triggered before applet1 |
|
4 |
Trigger 2 applets with 2 different Priority Levels Install (install) applet1 with priority level ‘7F’ and applet2 with priority level ’80’, from package fwk_tin_prlv_4. Send an Envelope that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applets instances and packages |
A static variable is used to validate triggering order: applet2 is triggered before applet1 |
|
5 |
Trigger 3 applets with the same Priority Level Install (install) applet 1, 2, 3 in this order with same priority level from package fwk_tin_prlv_5. Send an Envelope that triggers the 3 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applets instances and packages. |
A static variable is used to validate triggering order: applet3 is triggered before applet2, and applet2 is triggered before applet1. |
|
6 |
Trigger 2 applets from 2 classes, with 2 different Priority Level Install (install) applet1 from class A with priority level ‘2’ Install (install) applet2 from class B with priority level ‘1’ Send an Envelope that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applets instances and packages |
A static variable is used to validate triggering order: applet2 is triggered before applet1 |
|
7 |
Trigger 2 applets from 2 classes, with the same Priority Level Install (install) applet1 from class A with priority level ‘1’ Install (install) applet2 from class B with priority level ‘1’ Send an Envelope that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applets instances and packages |
A static variable is used to validate triggering order: applet2 is triggered before applet1 |
|
8 |
Trigger 2 applets from 2 packages, with 2 different Priority Level Install package fwk_tin_prlv_8. Install (install) applet1 from package fwk_tin_prlv_8A with priority level ‘2’ Install (install) applet2 from package fwk_tin_prlv_8B with priority level ‘1’ Send an Envelope that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applets instances ad packages |
A static variable is used to validate triggering order: applet2 is triggered before applet1 |
|
9 |
Trigger 2 applets from 2 packages, with the same Priority Level Install package fwk_tin_prlv_9. Install (install) applets 1 from package fwk_tin_prlv_9A and applet2 from package fwk_tin_prlv_9B in this order, with same priority level Send an Envelope that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applets instances and packages |
A static variable is used to validate triggering order: applet2 is triggered before applet1 |
|
10 |
Trigger 4 applets from 2 packages 1-Install packages fwk_tin_prlv_10, fwk_tin_prlv_10A and fwk_tin_prlv_10B. Install (install) 2 applets 1 then 2 from package fwk_tin_prlv_10A, with respectively priority levels 1 and 2. Send an Envelope that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. 2- Install (install) 2 applets 3 then 4 from package fwk_tin_prlv_10B, with respectively priority levels 1 and 2. Send an Envelope that triggers the 4 applets. Delete applets instances and packages |
1- A static variable is used to validate triggering order: applet1 is triggered before applet2 2- Applet3 is triggered before applets 1, 4, then 2. |
|
11 |
Trigger 4 applets with the same Priority Level then delete them one after another and trigger them each time 1- Install (install) applet1, 2, 3, 4 in this order with same priority level from package fwk_tin_prlv_11. Send an Enveloppe that triggers the 4 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applet instance 4 2- Send an Enveloppe that triggers the 3 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete applet instance 3 3- Send an Enveloppe that triggers the 2 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. Delete remaining applet instances and packages |
1- A static variable is used to validate triggering order: applets are triggered in order 4, 3, 2, 1. 2- Applets are triggered in order 3, 2, 1. 3- Applets are triggered in order 2, 1. |
|
12 |
Trigger 5 applets with different Priority Levels, alternating install and delete 1- Install (install) applets 1, 2, 3, 4 in this order with respective priority levels 1, 2, 1, 2 Send an Enveloppe that triggers the 4 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. 2- Delete applet instance 1 and install (install) applet5 with priority level 2 Send an Enveloppe that triggers the 4 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. 3- Re-install (install) applet1 with priority level 1 Send an Enveloppe that triggers the 5 applets with the EVENT_UNFORMATTED_SMS_PP_ENV event. |
1- A static variable is used to validate triggering order: applets are triggered in order 3, 1, 4, 2 2- Applets are triggered in order 3, 5, 4, 2 3- Applets are triggered in order 1, 3, 5, 4, 2 |
6.3.8.7.4 Test Coverage
CRR number |
Test case number |
---|---|
CRRN1 |
1, 2, 3, 4, 6, 8, 10, 12 |
CRRN2 |
5, 7, 9, 11 |
6.3.8.8 Channel Allocation
Test Area Reference: FWK_TIN_CHAL
6.3.8.8.1 Conformance Requirements
6.3.8.8.1.1 Normal execution
- CRRN1: One toolkit applet can register to several channels, but a channel can only be allocated to one toolkit applet.
6.3.8.8.1.2 Context errors
- CRRC1 : Allocated channels shall not exceed the maximum number of channels allowed for this applet instance.
- CRRC2 : The total number of channels allocated for all the applets shall not exceed 7. If the maximum number of channels required is greater than ’07’ (maximum numbers of channels specified in TS 11.14 [4]), the card shall return the Status Word ‘6A80’, incorrect parameters in data field, to the Install(Install) command.
6.3.8.8.2 Test suite files
Test Script: FWK_TIN_CHAL_1.scr
Test Applet: FWK_TIN_CHAL_1.java
FWK_TIN_CHAL_2.java
FWK_TIN_CHAL_3.java
Load Script: FWK_TIN_CHAL_1.ldr
Cleanup Script: FWK_TIN_CHAL_1.clr
Parameter File: FWK_TIN_CHAL_1.par
6.3.8.8.3 Test Procedure
Id |
Description |
API/Framework Expectation |
APDU Expectation |
---|---|---|---|
1 |
More than 7 channels at the instantiation of applet1: check that applet1 is not installed 1-Install for install of applet1 with maximum 8 channels allocated. A PoR is asked to be sent via SMS-DELIVER-REPORT. |
1- The SIM answers to the Envelope with status words 9Fxx. A GET RESPONSE is sent and the additional data in the PoR is checked. It must be 01 6A 80. |
|
Reset the card |
|||
2 |
Good installation of applet2 Install for install of applet2 (maximum 4 channels allocated). |
The SIM answers to the Envelope with status words 90 00 |
|
3 |
Open 4 channels Applet2 Applet2 builds a proactive command OPEN CHANNEL 4 times, calling init() and send() methods. |
No exception shall be thrown. |
OPEN CHANNEL proactive command are fetched. Successful TERMINAL RESPONSE of OPEN CHANNEL are sent to the SIM with Channel Id = 01 to 04 |
4 |
Open one more channel Applet2 Applet2 builds a proactive command OPEN CHANNEL once again, calling init() and send() methods. |
Shall throw a ToolkitException with reason COMMAND_NOT_ALLOWED |
|
5 |
Good installation of applet3 Install for install of applet3 (maximum 7 channels allocated). |
The SIM answers to the Envelope with status words 90 00 |
|
6 |
Open 3 channels Applet3 Applet3 builds a proactive command OPEN CHANNEL 3 times, calling init() and send() methods. |
No exception shall be thrown. |
OPEN CHANNEL proactive command is fetched. Successful TERMINAL RESPONSE of OPEN CHANNEL are sent to the SIM with Channel Id from 05 to 07 |
7 |
Open one more channel Applet3 Applet3 builds a proactive command OPEN CHANNEL once again, calling init() and send() methods. |
No exception shall be thrown. |
OPEN CHANNEL proactive command is fetched. Unsuccessful Terminal Response is sent to the SIM with ‘No Channel Available’ as Additional Information on Result. |
6.3.8.8.4 Test Coverage
CRR number |
Test case number |
---|---|
N1 |
2,3 |
C1 |
1, 7 |
C2 |
4,5,6 |
6.3.8.9 Minimum Security Level
Test Area Reference: FWK_TIN_MSL
6.3.8.9.1 Conformance Requirements
6.3.8.9.1.1 Normal execution
- CRRN1: The Receiving Entity shall check the Minimum Security Level during processing the security of the Command Packet.
- CRRN2: The Receiving Entity shall reject the message if the MSL check fails.
- CRRN3: If the MSL check fails, a Response Packet with the ‘Insufficient Security Level’ Response Status Code shall be sent if required.
- CRRN4: If the length of the Minimum Security Level field is greater than zero, the Minimum Security Level is used to specify the minimum level of security to be applied to Secured Packets. The first byte shall be the MSL Parameter, other bytes shall be the MSL Data.
- CRRN5: If the length of the Minimum Security Level field is zero, no minimum security level check shall be performed by the receiving entity.
- CRRN6: If no Minimum Security Level field is present (no MSL length, no MSL parameter and no MSL data), no minimum security level check shall be performed by the receiving entity.
- CRRN7: If the Maximum number of channels field is included in the command data then the Length of Minimum Security Level field shall also be included.
- CRRN8: If an optional parameter is included, then all the previous parameters shall be included also
6.3.8.9.2 Test suite files
Test Script: FWK_TIN_MSL_1.scr
Test Applet: FWK_TIN_MSL_1.java
Load Script: FWK_TIN_MSL_1.ldr
Cleanup Script: FWK_TIN_MSL_1.clr
Parameter File: FWK_TIN_MSL_1.par
6.3.8.9.3 Test Procedure
Id |
Description |
API/Framework Expectation |
APDU Expectation |
---|---|---|---|
1 |
Installation with MSL length of 0 1- Install (install) applet with a MSL length = 0 2- Send formatted SMS PP env with no RC/CC/DS, no Ciphering and counter mode 0 (not checked) 3- Send a formatted SMS PP env with CC, ciphering and counter mode 1 (counter available and no checking) 4- Delete the applet instance |
2- Applet is triggered 3- Applet is triggered |
1- 9000 |
2 |
Installation without MSL field 1- Install (install) applet without MSL field (no MSL length, no MSL parameter and no data) 2- Send formatted SMS PP env with no RC/CC/DS, no Ciphering and counter mode 0 (not checked) 3- Send a formatted SMS PP env with CC, ciphering and counter mode 1 counter available and no checking) 4- Delete the applet instance |
2- Applet is triggered 3- Applet is triggered |
1- 9000 |
6.3.8.9.4 Test Coverage
CRR number |
Test case number |
---|---|
CRRN1 |
Not applicable |
CRRN2 |
Not applicable |
CRRN3 |
Not applicable |
CRRN4 |
Not applicable |
CRRN5 |
1 |
CRRN6 |
2 |
CRRN7 |
Not testable |
CRRN8 |
Not testable |