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