源码对照:4.2.21.2.3
ES10c 启用 Profile(Case 4) / TC_eUICC_ES10c.EnableProfile_Case4
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
993 行 / 38688 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_EnableProfile_Case4/Import/TC_eUICC_ES10c_EnableProfile_Case4.js
821 行 / 65301 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js993 行 / 38688 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_EnableProfile_Case4_01_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_EnableProfile_Case4_02_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_EnableProfile_Case4_03_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_EnableProfile_Case4_04_Nominal_Enable_Profile_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_EnableProfile_Case4_05_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set + TC_eUICC_ES10c_EnableProfile_Case4_06_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_not_set + TC_eUICC_ES10c_EnableProfile_Case4_07_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_08_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_09_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_10_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported (extracted verbatim)
2
3function TC_eUICC_ES10c_EnableProfile_Case4_01_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
4{
5 if(!Card_Have_ECC_Cert)
6 return;
7
8 TestOfMEPMode = 0;
9
10 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
11 var ISD_P_Test01 = curProfile_ISD_P_AID;
12
13 tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ISD-P AID激活profile,并设置refreshFlag";
14 curDis.TraceStart(sno++,tracenamestr);
15
16 curLogicChannel = 0;
17 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
18 Ini_powerOn_eUICC_LPAe_not_activate();
19
20 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
21 TS_MANAGE_CHANNEL_OPEN();
22
23 curLogicChannel = 1;
24
25 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
26 TS_SELECT("Select ISD",ISD_R_AID,"9000");
27
28 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
29
30 var enableProRequest = new EnableProfileRequest();
31 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
32 enableProRequest.refreshFlag = BooleanValue_BerCode_True;
33 enableProRequest.GenHexData();
34 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
35
36 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
37
38 curLogicChannel = 0;
39 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
40
41 FetchStr = Fetch("","9000","");
42
43 var CmdDetails = GetValueByTag("01",1);
44 var CmdQualifier = CmdDetails.substr(4,2);
45 CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
46
47 curLogicChannel = 0;
48 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
49 Ini_powerOn_eUICC_LPAe_not_activate();
50
51 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
52 TS_MANAGE_CHANNEL_OPEN();
53
54 curLogicChannel = 1;
55
56 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
57 TS_SELECT("Select ISD",ISD_R_AID,"9000");
58
59 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
60
61 var proInfoListRequest = new ProfileInfoListRequest();
62 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
63 proInfoListRequest.tagList = "5A4F9F70";
64 proInfoListRequest.GenHexData();
65 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
66
67
68 var proInfoListResponse = new ProfileInfoListResponse();
69 proInfoListResponse.checkCardResDataFormat(respData);
70
71 try
72 {
73 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
74 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
75 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
76 }catch(e){
77 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
78 }
79
80 curLogicChannel = 0;
81 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
82 var para1 = new SelectFileEFPara_3G("2FE2");
83 SendAPDU(para1.apdu);
84
85 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
86 var para1 = new ReadBinaryPara_3G("00","00","0A");
87 para1.apdu.resvalue = ICCID_OP_PROF1;
88 SendAPDU(para1.apdu);
89
90 RecoverCard();
91
92}
93
94function TC_eUICC_ES10c_EnableProfile_Case4_02_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
95{
96 if(!Card_Have_ECC_Cert)
97 return;
98
99 TestOfMEPMode = 0;
100
101 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
102 var ISD_P_Test01 = curProfile_ISD_P_AID;
103
104 tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ICCID激活profile,并设置refreshFlag";
105 curDis.TraceStart(sno++,tracenamestr);
106
107 curLogicChannel = 0;
108 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
109 Ini_powerOn_eUICC_LPAe_not_activate();
110
111 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
112 TS_MANAGE_CHANNEL_OPEN();
113
114 curLogicChannel = 1;
115
116 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
117 TS_SELECT("Select ISD",ISD_R_AID,"9000");
118
119 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
120 var enableProRequest = new EnableProfileRequest();
121 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
122 enableProRequest.refreshFlag = BooleanValue_BerCode_True;
123 enableProRequest.GenHexData();
124 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
125
126 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
127
128 curLogicChannel = 0;
129 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
130
131 FetchStr = Fetch("","9000","");
132
133 var CmdDetails = GetValueByTag("01",1);
134 var CmdQualifier = CmdDetails.substr(4,2);
135 CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
136
137 curLogicChannel = 0;
138 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
139 Ini_powerOn_eUICC_LPAe_not_activate();
140
141 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
142 TS_MANAGE_CHANNEL_OPEN();
143
144 curLogicChannel = 1;
145
146 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
147 TS_SELECT("Select ISD",ISD_R_AID,"9000");
148
149 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
150 var proInfoListRequest = new ProfileInfoListRequest();
151 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
152 proInfoListRequest.tagList = "5A4F9F70";
153 proInfoListRequest.GenHexData();
154 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
155
156
157 var proInfoListResponse = new ProfileInfoListResponse();
158 proInfoListResponse.checkCardResDataFormat(respData);
159
160 try
161 {
162 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
163 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
164 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
165 }catch(e){
166 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
167 }
168
169 curLogicChannel = 0;
170 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
171 var para1 = new SelectFileEFPara_3G("2FE2");
172 SendAPDU(para1.apdu);
173
174 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
175 var para1 = new ReadBinaryPara_3G("00","00","0A");
176 para1.apdu.resvalue = ICCID_OP_PROF1;
177 SendAPDU(para1.apdu);
178
179 RecoverCard();
180
181}
182
183function TC_eUICC_ES10c_EnableProfile_Case4_03_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
184{
185 if(!Card_Have_ECC_Cert)
186 return;
187
188 TestOfMEPMode = 0;
189
190 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
191 var ISD_P_Test01 = curProfile_ISD_P_AID;
192
193 tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ISD-P AID激活profile,并设置refreshFlag";
194 curDis.TraceStart(sno++,tracenamestr);
195
196 curLogicChannel = 0;
197
198 TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;//add 20260423
199 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
200 Ini_powerOn_eUICC_LPAe_not_activate();
201
202 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
203 TS_MANAGE_CHANNEL_OPEN();
204
205 curLogicChannel = 1;
206
207 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
208 TS_SELECT("Select ISD",ISD_R_AID,"9000");
209
210 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
211
212 var enableProRequest = new EnableProfileRequest();
213 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
214 enableProRequest.refreshFlag = BooleanValue_BerCode_True;
215 enableProRequest.GenHexData();
216 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
217
218 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
219
220 curLogicChannel = 0;
221 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
222 FetchStr = Fetch("","9000","");
223
224 var CmdDetails = GetValueByTag("01",1);
225 var CmdQualifier = CmdDetails.substr(4,2);
226 CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");
227
228 TerminalResponse("00","9000");
229
230 curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
231 curLogicChannel = 0;
232 if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
233 TS_TERMINAL_CAPABILITY_cmd();
234 else
235 obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
236
237 IniCard_SetUpMenu("",1);
238
239
240
241 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
242 TS_MANAGE_CHANNEL_OPEN();
243
244 curLogicChannel = 1;
245
246 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
247 TS_SELECT("Select ISD",ISD_R_AID,"9000");
248
249 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
250
251 var proInfoListRequest = new ProfileInfoListRequest();
252 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
253 proInfoListRequest.tagList = "5A4F9F70";
254 proInfoListRequest.GenHexData();
255 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
256
257
258 var proInfoListResponse = new ProfileInfoListResponse();
259 proInfoListResponse.checkCardResDataFormat(respData);
260
261 try
262 {
263 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
264 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
265 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
266 }catch(e){
267 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
268 }
269
270 curLogicChannel = 0;
271 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
272 var para1 = new SelectFileEFPara_3G("2FE2");
273 SendAPDU(para1.apdu);
274
275 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
276 var para1 = new ReadBinaryPara_3G("00","00","0A");
277 para1.apdu.resvalue = ICCID_OP_PROF1;
278 SendAPDU(para1.apdu);
279
280 RecoverCard();
281}
282
283function TC_eUICC_ES10c_EnableProfile_Case4_04_Nominal_Enable_Profile_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
284{
285 if(!Card_Have_ECC_Cert)
286 return;
287
288 TestOfMEPMode = 0;
289
290 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
291 var ISD_P_Test01 = curProfile_ISD_P_AID;
292
293 tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ICCID激活profile,并设置refreshFlag";
294 curDis.TraceStart(sno++,tracenamestr);
295
296 curLogicChannel = 0;
297 TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;
298 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
299 Ini_powerOn_eUICC_LPAe_not_activate();
300
301 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
302 TS_MANAGE_CHANNEL_OPEN();
303
304 curLogicChannel = 1;
305
306 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
307 TS_SELECT("Select ISD",ISD_R_AID,"9000");
308
309 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
310 var enableProRequest = new EnableProfileRequest();
311 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
312 enableProRequest.refreshFlag = BooleanValue_BerCode_True;
313 enableProRequest.GenHexData();
314 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
315
316 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
317
318 curLogicChannel = 0;
319 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
320
321 FetchStr = Fetch("","9000","");
322
323 var CmdDetails = GetValueByTag("01",1);
324 var CmdQualifier = CmdDetails.substr(4,2);
325 CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");//'09' = eUICC Profile State Change; 102.223-8.6
326
327 TerminalResponse("00","9000");
328
329 curLogicChannel = 0;
330 curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
331
332 curLogicChannel = 0;
333
334 if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
335 TS_TERMINAL_CAPABILITY_cmd();
336 else
337 obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
338
339 IniCard_SetUpMenu("",1);
340
341 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
342 TS_MANAGE_CHANNEL_OPEN();
343
344 curLogicChannel = 1;
345
346 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
347 TS_SELECT("Select ISD",ISD_R_AID,"9000");
348
349 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
350 var proInfoListRequest = new ProfileInfoListRequest();
351 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
352 proInfoListRequest.tagList = "5A4F9F70";
353 proInfoListRequest.GenHexData();
354 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
355
356
357 var proInfoListResponse = new ProfileInfoListResponse();
358 proInfoListResponse.checkCardResDataFormat(respData);
359
360 try
361 {
362 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
363 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
364 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
365 }catch(e){
366 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
367 }
368
369 curLogicChannel = 0;
370 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
371 var para1 = new SelectFileEFPara_3G("2FE2");
372 SendAPDU(para1.apdu);
373
374 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
375 var para1 = new ReadBinaryPara_3G("00","00","0A");
376 para1.apdu.resvalue = ICCID_OP_PROF1;
377 SendAPDU(para1.apdu);
378
379 RecoverCard();
380}
381
382function TC_eUICC_ES10c_EnableProfile_Case4_05_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set()
383{
384 if(!Card_Have_ECC_Cert)
385 return;
386
387 TestOfMEPMode = 0;
388
389 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
390 var ISD_P_Test01 = curProfile_ISD_P_AID;
391
392 tracenamestr = "测试目的:通过ISD-P AID激活profile,不设置refreshFlag";
393 curDis.TraceStart(sno++,tracenamestr);
394
395 curLogicChannel = 0;
396 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
397 Ini_powerOn_eUICC_LPAe_not_activate();
398
399 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
400 TS_MANAGE_CHANNEL_OPEN();
401
402 curLogicChannel = 1;
403
404 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
405 TS_SELECT("Select ISD",ISD_R_AID,"9000");
406
407 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
408
409 var enableProRequest = new EnableProfileRequest();
410 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
411 enableProRequest.refreshFlag = BooleanValue_BerCode_False;
412 enableProRequest.GenHexData();
413 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","9000");
414
415 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
416
417 curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
418 IniCard_SetUpMenu("",1);
419
420 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
421 TS_MANAGE_CHANNEL_OPEN();
422 curLogicChannel = 1;
423 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
424 TS_SELECT("Select ISD",ISD_R_AID,"9000");
425
426 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
427
428 var proInfoListRequest = new ProfileInfoListRequest();
429 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
430 proInfoListRequest.tagList = "5A4F9F70";
431 proInfoListRequest.GenHexData();
432 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
433
434
435 var proInfoListResponse = new ProfileInfoListResponse();
436 proInfoListResponse.checkCardResDataFormat(respData);
437
438 try
439 {
440 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
441 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
442 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
443 }catch(e){
444 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
445 }
446
447 curLogicChannel = 0;
448 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
449 var para1 = new SelectFileEFPara_3G("2FE2");
450 SendAPDU(para1.apdu);
451
452 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
453 var para1 = new ReadBinaryPara_3G("00","00","0A");
454 para1.apdu.resvalue = ICCID_OP_PROF1;
455 SendAPDU(para1.apdu);
456
457 RecoverCard();
458
459}
460
461function TC_eUICC_ES10c_EnableProfile_Case4_06_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_not_set()
462{
463 if(!Card_Have_ECC_Cert)
464 return;
465
466 TestOfMEPMode = 0;
467
468 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
469 var ISD_P_Test01 = curProfile_ISD_P_AID;
470
471 tracenamestr = "测试目的:通过ICCID激活profile,不设置refreshFlag";
472 curDis.TraceStart(sno++,tracenamestr);
473
474 curLogicChannel = 0;
475 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
476 Ini_powerOn_eUICC_LPAe_not_activate();
477
478 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
479 TS_MANAGE_CHANNEL_OPEN();
480
481 curLogicChannel = 1;
482
483 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
484 TS_SELECT("Select ISD",ISD_R_AID,"9000");
485
486 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
487 var enableProRequest = new EnableProfileRequest();
488 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
489 enableProRequest.refreshFlag = BooleanValue_BerCode_False;
490 enableProRequest.GenHexData();
491 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","9000");
492
493 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
494
495 curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
496 IniCard_SetUpMenu("",1);
497
498 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
499 TS_MANAGE_CHANNEL_OPEN();
500 curLogicChannel = 1;
501 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
502 TS_SELECT("Select ISD",ISD_R_AID,"9000");
503
504 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
505 var proInfoListRequest = new ProfileInfoListRequest();
506 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
507 proInfoListRequest.tagList = "5A4F9F70";
508 proInfoListRequest.GenHexData();
509 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
510
511
512 var proInfoListResponse = new ProfileInfoListResponse();
513 proInfoListResponse.checkCardResDataFormat(respData);
514
515 try
516 {
517 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
518 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
519 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
520 }catch(e){
521 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
522 }
523
524 curLogicChannel = 0;
525 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
526 var para1 = new SelectFileEFPara_3G("2FE2");
527 SendAPDU(para1.apdu);
528
529 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
530 var para1 = new ReadBinaryPara_3G("00","00","0A");
531 para1.apdu.resvalue = ICCID_OP_PROF1;
532 SendAPDU(para1.apdu);
533
534 RecoverCard();
535
536}
537
538function TC_eUICC_ES10c_EnableProfile_Case4_07_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_catBusy_not_supported()
539{
540 if(!Card_Have_ECC_Cert)
541 return;
542
543
544 if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
545 return;
546
547 TestOfMEPMode = 0;
548 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
549 var ISD_P_Test01 = curProfile_ISD_P_AID;
550
551 initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
552 var ISD_P_Test02 = curProfile_ISD_P_AID;
553
554 tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ISD-P AID激活profile,并设置refreshFlag";
555 curDis.TraceStart(sno++,tracenamestr);
556
557
558 curLogicChannel = 0;
559 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
560 Ini_powerOn_eUICC_LPAe_not_activate();
561
562 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
563 TS_MANAGE_CHANNEL_OPEN();
564 curLogicChannel = 1;
565 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
566 TS_SELECT("Select ISD",ISD_R_AID,"9000");
567
568
569 curLogicChannel=0;
570 curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
571 sSendType = SendTypeByOTA.SMS;
572 KIC = MNO_SCP80_ENC_KEY;
573 KID = MNO_SCP80_AUTH_KEY;
574 KIK = MNO_SCP80_DATA_ENC_KEY;
575
576
577 sAPDU = "80F28002024F0000";
578 SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
579
580 curLogicChannel=1;
581 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为true;");
582
583 var enableProRequest = new EnableProfileRequest();
584 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
585 enableProRequest.refreshFlag = BooleanValue_BerCode_True;
586 enableProRequest.GenHexData();
587 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
588 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
589
590 curLogicChannel = 0;
591 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
592
593 FetchStr = Fetch("","9000","");
594
595 var CmdDetails = GetValueByTag("01",1);
596 var CmdQualifier = CmdDetails.substr(4,2);
597 CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
598
599 curLogicChannel = 0;
600 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
601 Ini_powerOn_eUICC_LPAe_not_activate();
602
603 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
604 TS_MANAGE_CHANNEL_OPEN();
605
606 curLogicChannel = 1;
607
608 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
609 TS_SELECT("Select ISD",ISD_R_AID,"9000");
610
611 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
612
613 var proInfoListRequest = new ProfileInfoListRequest();
614 proInfoListRequest.GenHexData();
615 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
616
617
618 var proInfoListResponse = new ProfileInfoListResponse();
619 proInfoListResponse.checkCardResDataFormat(respData);
620
621 try
622 {
623 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
624 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
625 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
626
627 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
628 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
629 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
630 }catch(e){
631 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
632 }
633
634 curLogicChannel = 0;
635 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
636 var para1 = new SelectFileEFPara_3G("2FE2");
637 SendAPDU(para1.apdu);
638
639 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
640 var para1 = new ReadBinaryPara_3G("00","00","0A");
641 para1.apdu.resvalue = ICCID_OP_PROF2;
642 SendAPDU(para1.apdu);
643
644 RecoverCard();
645
646
647
648
649}
650
651function TC_eUICC_ES10c_EnableProfile_Case4_08_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_catBusy_not_supported()
652{
653 if(!Card_Have_ECC_Cert)
654 return;
655
656
657 if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
658 return;
659
660 TestOfMEPMode = 0;
661 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
662 var ISD_P_Test01 = curProfile_ISD_P_AID;
663
664 initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
665 var ISD_P_Test02 = curProfile_ISD_P_AID;
666
667 tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ISD-P AID激活profile,不设置refreshFlag";
668 curDis.TraceStart(sno++,tracenamestr);
669
670
671 curLogicChannel = 0;
672 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
673 Ini_powerOn_eUICC_LPAe_not_activate();
674
675 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
676 TS_MANAGE_CHANNEL_OPEN();
677 curLogicChannel = 1;
678 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
679 TS_SELECT("Select ISD",ISD_R_AID,"9000");
680
681
682 curLogicChannel=0;
683 curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
684 sSendType = SendTypeByOTA.SMS;
685 KIC = MNO_SCP80_ENC_KEY;
686 KID = MNO_SCP80_AUTH_KEY;
687 KIK = MNO_SCP80_DATA_ENC_KEY;
688
689
690 sAPDU = "80F28002024F0000";
691 SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
692
693 curLogicChannel=1;
694 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false(not set);");
695
696 var enableProRequest = new EnableProfileRequest();
697 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
698 enableProRequest.refreshFlag = BooleanValue_BerCode_False;
699 enableProRequest.GenHexData();
700 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
701 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
702
703 curLogicChannel = 0;
704 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
705
706 FetchStr = Fetch("","9000","");
707 var CmdDetails = GetValueByTag("01",1);
708 var CmdQualifier = CmdDetails.substr(4,2);
709 CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
710
711 curLogicChannel = 0;
712 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
713 Ini_powerOn_eUICC_LPAe_not_activate();
714
715 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
716 TS_MANAGE_CHANNEL_OPEN();
717
718 curLogicChannel = 1;
719
720 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
721 TS_SELECT("Select ISD",ISD_R_AID,"9000");
722
723 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
724
725 var proInfoListRequest = new ProfileInfoListRequest();
726 proInfoListRequest.GenHexData();
727 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
728
729
730 var proInfoListResponse = new ProfileInfoListResponse();
731 proInfoListResponse.checkCardResDataFormat(respData);
732
733 try
734 {
735 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
736 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
737 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
738
739 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
740 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
741 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
742 }catch(e){
743 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
744 }
745
746 curLogicChannel = 0;
747 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
748 var para1 = new SelectFileEFPara_3G("2FE2");
749 SendAPDU(para1.apdu);
750
751 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
752 var para1 = new ReadBinaryPara_3G("00","00","0A");
753 para1.apdu.resvalue = ICCID_OP_PROF2;
754 SendAPDU(para1.apdu);
755
756 RecoverCard();
757
758}
759
760function TC_eUICC_ES10c_EnableProfile_Case4_09_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported()
761{
762 if(!Card_Have_ECC_Cert)
763 return;
764
765
766 if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
767 return;
768
769 TestOfMEPMode = 0;
770 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
771 var ISD_P_Test01 = curProfile_ISD_P_AID;
772
773 initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
774 var ISD_P_Test02 = curProfile_ISD_P_AID;
775
776 tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ISD-P AID激活profile,设置refreshFlag";
777 curDis.TraceStart(sno++,tracenamestr);
778
779
780 curLogicChannel = 0;
781 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
782 Ini_powerOn_eUICC_LPAe_not_activate();
783
784 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
785 TS_MANAGE_CHANNEL_OPEN();
786 curLogicChannel = 1;
787 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
788 TS_SELECT("Select ISD",ISD_R_AID,"9000");
789
790
791 curLogicChannel=0;
792 curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
793 sSendType = SendTypeByOTA.SMS;
794 KIC = MNO_SCP80_ENC_KEY;
795 KID = MNO_SCP80_AUTH_KEY;
796 KIK = MNO_SCP80_DATA_ENC_KEY;
797
798
799 sAPDU = "80F28002024F0000";
800
801 SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
802
803 var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
804 CardSendMessageToServerExpandedRemoteCmd(exResPara);
805
806 curLogicChannel=1;
807 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为true;");
808
809 var enableProRequest = new EnableProfileRequest();
810 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
811 enableProRequest.refreshFlag = BooleanValue_BerCode_True;
812 enableProRequest.GenHexData();
813 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
814 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
815
816 curLogicChannel = 0;
817 curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
818 TerminalResponse("00","91XX");
819 var ss = obj.GetState();
820 HaveReEntry91XX = false;
821
822 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
823 FetchStr = Fetch("","9000","");
824 var CmdDetails = GetValueByTag("01",1);
825 var CmdQualifier = CmdDetails.substr(4,2);
826 CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
827
828 curLogicChannel = 0;
829 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
830 Ini_powerOn_eUICC_LPAe_not_activate();
831
832 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
833 TS_MANAGE_CHANNEL_OPEN();
834
835 curLogicChannel = 1;
836
837 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
838 TS_SELECT("Select ISD",ISD_R_AID,"9000");
839
840 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
841
842 var proInfoListRequest = new ProfileInfoListRequest();
843 proInfoListRequest.GenHexData();
844 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
845
846
847 var proInfoListResponse = new ProfileInfoListResponse();
848 proInfoListResponse.checkCardResDataFormat(respData);
849
850 try
851 {
852 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
853 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
854 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
855
856 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
857 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
858 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
859 }catch(e){
860 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
861 }
862
863 curLogicChannel = 0;
864 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
865 var para1 = new SelectFileEFPara_3G("2FE2");
866 SendAPDU(para1.apdu);
867
868 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
869 var para1 = new ReadBinaryPara_3G("00","00","0A");
870 para1.apdu.resvalue = ICCID_OP_PROF2;
871 SendAPDU(para1.apdu);
872
873 RecoverCard();
874
875}
876
877function TC_eUICC_ES10c_EnableProfile_Case4_10_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported()
878{
879 if(!Card_Have_ECC_Cert)
880 return;
881
882
883 if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
884 return;
885
886 TestOfMEPMode = 0;
887 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
888 var ISD_P_Test01 = curProfile_ISD_P_AID;
889
890 initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
891 var ISD_P_Test02 = curProfile_ISD_P_AID;
892
893 tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ISD-P AID激活profile,不设置refreshFlag";
894 curDis.TraceStart(sno++,tracenamestr);
895
896
897 curLogicChannel = 0;
898 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
899 Ini_powerOn_eUICC_LPAe_not_activate();
900
901 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
902 TS_MANAGE_CHANNEL_OPEN();
903 curLogicChannel = 1;
904 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
905 TS_SELECT("Select ISD",ISD_R_AID,"9000");
906
907
908 curLogicChannel=0;
909 curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
910 sSendType = SendTypeByOTA.SMS;
911 KIC = MNO_SCP80_ENC_KEY;
912 KID = MNO_SCP80_AUTH_KEY;
913 KIK = MNO_SCP80_DATA_ENC_KEY;
914
915
916 sAPDU = "80F28002024F0000";
917
918 SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
919
920 var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
921 CardSendMessageToServerExpandedRemoteCmd(exResPara);
922
923 curLogicChannel=1;
924 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
925
926 var enableProRequest = new EnableProfileRequest();
927 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
928 enableProRequest.refreshFlag = BooleanValue_BerCode_False;
929 enableProRequest.GenHexData();
930 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
931
932 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
933
934 curLogicChannel = 0;
935 curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
936 TerminalResponse("00","91XX");
937 var ss = obj.GetState();
938 HaveReEntry91XX = false;
939
940 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
941 FetchStr = Fetch("","9000","");
942 var CmdDetails = GetValueByTag("01",1);
943 var CmdQualifier = CmdDetails.substr(4,2);
944 CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
945
946 curLogicChannel = 0;
947 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
948 Ini_powerOn_eUICC_LPAe_not_activate();
949
950 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
951 TS_MANAGE_CHANNEL_OPEN();
952
953 curLogicChannel = 1;
954
955 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
956 TS_SELECT("Select ISD",ISD_R_AID,"9000");
957
958 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
959
960 var proInfoListRequest = new ProfileInfoListRequest();
961 proInfoListRequest.GenHexData();
962 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
963
964
965 var proInfoListResponse = new ProfileInfoListResponse();
966 proInfoListResponse.checkCardResDataFormat(respData);
967
968 try
969 {
970 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
971 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
972 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
973
974 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
975 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
976 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
977 }catch(e){
978 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
979 }
980
981 curLogicChannel = 0;
982 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
983 var para1 = new SelectFileEFPara_3G("2FE2");
984 SendAPDU(para1.apdu);
985
986 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
987 var para1 = new ReadBinaryPara_3G("00","00","0A");
988 para1.apdu.resvalue = ICCID_OP_PROF2;
989 SendAPDU(para1.apdu);
990
991 RecoverCard();
992}
993
-cas 盲生成TC_eUICC_ES10c_EnableProfile_Case4/Import/TC_eUICC_ES10c_EnableProfile_Case4.js821 行 / 65301 字符 / gb18030
1// Author: 卡思Cas智能体
2// Date: 20261005-152741
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.EnableProfile_Case4,Test Sequence #01-#10 Nominal (all 10 sequences),适用性 M。
4// Test points: ICH-SEQ01-IC1-K1-C1 ATR_present;ICH-SEQ01-IC1-K2-C2 FCP_Template
5// ICH-SEQ01-IC1-K2-C4 SW;ICH-SEQ01-IC1-K3-C4 SW;ICH-SEQ01-IC1-K4-C4 final SW
6// ICH-SEQ01-IC2-K1-C4 SW;ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted;ICH-SEQ01-IC2-K2-C4 SW
7// S1-C1 SW1 91;S1-C2 enableResult ok;S2-C1 proactive command envelope;IC4-IC1-K1-C1 ATR_present
8// IC4-IC1-K2-C2 FCP_Template;IC4-IC1-K2-C4 SW;IC4-IC1-K3-C4 SW;IC4-IC1-K4-C4 final SW
9// IC4-IC2-K1-C4 SW;IC4-IC2-K1-C3 CHANNEL_NUMBER extracted;IC4-IC2-K2-C4 SW;S4-C1 SW
10// S4-C2 contains PROFILE_INFO1;S5-C1 SW;S6-C1 SW;S6-C2 READ_BINARY data;S7-C1 SW1 91
11// S7-C2 enableResult ok;S8-C1 proactive command envelope;IC10-IC1-K1-C1 ATR_present
12// IC10-IC1-K2-C2 FCP_Template;IC10-IC1-K2-C4 SW;IC10-IC1-K3-C4 SW;IC10-IC1-K4-C4 final SW
13// IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted;IC10-IC2-K2-C4 SW;S10-C1 SW
14// S10-C2 contains PROFILE_INFO1;S11-C1 SW;S12-C1 SW;S12-C2 READ_BINARY data;S13-C1 SW1 91
15// S13-C2 enableResult ok;S14-C1 proactive command envelope;S15-C1 SW;IC17-IC1-K2-C2 FCP_Template
16// IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW;IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW
17// IC18-IC2-K1-C3 CHANNEL_NUMBER extracted;IC18-IC2-K2-C4 SW;S18-C1 SW
18// S18-C2 contains PROFILE_INFO1;S19-C1 SW;S20-C1 SW;S20-C2 READ_BINARY data;S21-C1 SW1 91
19// S21-C2 enableResult ok;S22-C1 proactive command envelope;S23-C1 SW;IC25-IC1-K2-C2 FCP_Template
20// IC25-IC1-K2-C4 SW;IC25-IC1-K3-C4 SW;IC25-IC1-K4-C4 final SW;IC26-IC2-K1-C4 SW
21// IC26-IC2-K1-C3 CHANNEL_NUMBER extracted;IC26-IC2-K2-C4 SW;S26-C1 SW
22// S26-C2 contains PROFILE_INFO1;S27-C1 SW;S28-C1 SW;S28-C2 READ_BINARY data;S29-C1 SW
23// S29-C2 enableResult ok;S30-C1 final SW;S31-C1 SW;S31-C2 contains PROFILE_INFO1;S32-C1 SW
24// S33-C1 SW;S33-C2 READ_BINARY data;S34-C1 SW;S34-C2 enableResult ok;S35-C1 final SW;S36-C1 SW
25// S36-C2 contains PROFILE_INFO1;S37-C1 SW;S38-C1 SW;S38-C2 READ_BINARY data;S39-C1 SW1 91
26// S40-C1 SW1 91;S40-C2 enableResult ok;S41-C1 proactive command envelope
27// IC43-IC1-K1-C1 ATR_present;IC43-IC1-K2-C2 FCP_Template;IC43-IC1-K2-C4 SW;IC43-IC1-K3-C4 SW
28// IC43-IC1-K4-C4 final SW;IC43-IC2-K1-C4 SW;IC43-IC2-K1-C3 CHANNEL_NUMBER extracted
29// IC43-IC2-K2-C4 SW;S43-C1 SW;S43-C2 contains PROFILE_INFO1_DISABLED
30// S43-C3 contains PROFILE_INFO2_ENABLED;S44-C1 SW;S45-C1 SW;S45-C2 READ_BINARY data;S46-C1 SW1 91
31// S47-C1 SW;S47-C2 enableResult ok;S48-C1 SW;S48-C2 contains PROFILE_INFO1_DISABLED
32// S48-C3 contains PROFILE_INFO2_ENABLED;S49-C1 SW;S50-C1 SW;S50-C2 READ_BINARY data;S51-C1 SW1 91
33// S52-C1 proactive command envelope;S53-C1 SW;S53-C2 enableResult ok;S54-C1 SW1 91
34// S55-C1 proactive command envelope;IC57-IC1-K1-C1 ATR_present;IC57-IC1-K2-C2 FCP_Template
35// IC57-IC1-K2-C4 SW;IC57-IC1-K3-C4 SW;IC57-IC1-K4-C4 final SW;IC57-IC2-K1-C4 SW
36// IC57-IC2-K1-C3 CHANNEL_NUMBER extracted;IC57-IC2-K2-C4 SW;S57-C1 SW
37// S57-C2 contains PROFILE_INFO1_DISABLED;S57-C3 contains PROFILE_INFO2_ENABLED;S58-C1 SW
38// S59-C1 SW;S59-C2 READ_BINARY data;S60-C1 SW1 91;S61-C1 proactive command envelope;S62-C1 SW
39// S62-C2 enableResult ok;S63-C1 SW1 != 91;S64-C1 SW;S64-C2 contains PROFILE_INFO1_DISABLED
40// S64-C3 contains PROFILE_INFO2_ENABLED;S65-C1 SW;S66-C1 SW;S66-C2 READ_BINARY data
41// 本函数由 CaseIR 4.2.21.2.3 编译生成(fullwave-blindgen-live-70-W1-laneA2,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
42// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
43// 适用性 M:编译期门,运行时由 harness 环境前置承担。
44function TC_eUICC_ES10c_EnableProfile_Case4_01_10_Nominal_all_10_sequences() {
45 var bind = curBind;
46 var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_EnableProfile_Case4_01_10_Nominal_all_10_sequences");
47 // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "ccd6682ef04d74b7", "authority_reference": "E_tc_4221/468-468/G_annexB_dynamic:L51"}
48 var cardCtxLoad1 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID1", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
49 // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "ccd6682ef04d74b7", "authority_reference": "E_tc_4221/607-607/G_annexB_dynamic:L52"}
50 var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID2", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
51 // TC-GEN-1 eUICC: The PROFILE_OPERATIONAL1 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
52 // SEQ01-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
53 // SEQ01-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
54 // SEQ02-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
55 // SEQ02-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
56 // SEQ02-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
57 // SEQ03-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
58 // SEQ03-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
59 // SEQ03-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
60 // SEQ03-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
61 // SEQ04-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
62 // SEQ04-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
63 // SEQ04-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
64 // SEQ05-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
65 // SEQ05-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
66 // SEQ05-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
67 // SEQ05-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
68 // SEQ06-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
69 // SEQ06-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
70 // SEQ06-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
71 // SEQ07-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
72 // SEQ07-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
73 // SEQ07-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
74 // SEQ07-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
75 // SEQ07-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
76 // SEQ07-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
77 // SEQ07-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
78 // SEQ08-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
79 // SEQ08-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
80 // SEQ08-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
81 // SEQ08-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
82 // SEQ08-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
83 // SEQ08-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
84 // SEQ08-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
85 // SEQ09-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
86 // SEQ09-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
87 // SEQ09-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
88 // SEQ09-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
89 // SEQ09-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
90 // SEQ09-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
91 // SEQ10-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
92 // SEQ10-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
93 // SEQ10-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
94 // SEQ10-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
95 // SEQ10-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
96 // SEQ10-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
97 // PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
98
99 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
100 var s68 = bind.resetAndAtr();
101 bind.checkData("ICH-SEQ01-IC1-K1-C1 ATR_present", "1", s68.atr_hex !== "" ? "1" : "0");
102
103 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
104 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
105 var s69 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
106 bind.checkData("ICH-SEQ01-IC1-K2-C2 FCP_Template", "1", s69.resp.length > 0 ? "1" : "0");
107 bind.checkData("ICH-SEQ01-IC1-K2-C4 SW", "9000", s69.sw);
108
109 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
110 var s70 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
111 bind.checkData("ICH-SEQ01-IC1-K3-C4 SW", "9000", s70.sw);
112
113 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
114 var steady71 = bind.runToSteadyState(function () {
115 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
116 });
117 bind.checkData("ICH-SEQ01-IC1-K4-C4 final SW", "9000", steady71.final.sw);
118
119 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
120 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
121 var s72 = bind.manageChannelOpen("9000");
122 bind.checkData("ICH-SEQ01-IC2-K1-C4 SW", "9000", s72.sw);
123 bind.checkData("ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s72.chan !== null ? "1" : "0");
124
125 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
126 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
127 var s73 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
128 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
129 bind.checkData("ICH-SEQ01-IC2-K2-C4 SW", "9000", s73.sw);
130
131 // 步骤 1:MTD_STORE_DATA(tc_step)
132 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
133 var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
134
135 // 步骤 2:SEQ01-1] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
136 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
137 var sdCla2 = s72.chan !== null ? (s72.chan <= 3 ? 128 + s72.chan : 188 + s72.chan).toString(16).toUpperCase() : null;
138 // runtime-bound payload: ISD_P_AID1 stays in execution domain
139 var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), "00", null);
140 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s2.cmd, profileAidSession);
141 bind.checkData("S1-C1 SW1 91", "91", s2.sw.substring(0, 2));
142 var r2w2 = BindGecaProc.parseGecaResponse(s2.resp, {outer: "BF31", required: ["80"]});
143 bind.checkData("S1-C2 enableResult ok", "00", (r2w2.ok && r2w2.fields["80"] === "00") ? "00" : (r2w2.fields["80"] || "absent"));
144
145 // 步骤 3:SEQ01-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
146 // FETCH header literals follow the golden wire evidence 8012 (same
147 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
148 // gives mechanism only). Le = pending length from the last 91XX
149 // (chain rule, binding-internal state).
150 var s3 = bind.fetchPending("80", "12", "00", "00", null);
151 bind.checkData("S2-C1 proactive command envelope", "1", (s3.resp.length >= 4 && s3.resp.substring(0, 2) === "D0") ? "1" : "0");
152 // S2-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
153 // S3:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
154 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
155 var s3tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
156
157 // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
158 var s74 = bind.resetAndAtr();
159 bind.checkData("IC4-IC1-K1-C1 ATR_present", "1", s74.atr_hex !== "" ? "1" : "0");
160
161 // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
162 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
163 var s75 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
164 bind.checkData("IC4-IC1-K2-C2 FCP_Template", "1", s75.resp.length > 0 ? "1" : "0");
165 bind.checkData("IC4-IC1-K2-C4 SW", "9000", s75.sw);
166
167 // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
168 var s76 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
169 bind.checkData("IC4-IC1-K3-C4 SW", "9000", s76.sw);
170
171 // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
172 var steady77 = bind.runToSteadyState(function () {
173 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
174 });
175 bind.checkData("IC4-IC1-K4-C4 final SW", "9000", steady77.final.sw);
176
177 // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
178 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
179 var s78 = bind.manageChannelOpen("9000");
180 bind.checkData("IC4-IC2-K1-C4 SW", "9000", s78.sw);
181 bind.checkData("IC4-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s78.chan !== null ? "1" : "0");
182
183 // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
184 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
185 var s79 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
186 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
187 bind.checkData("IC4-IC2-K2-C4 SW", "9000", s79.sw);
188
189 // 步骤 5:SEQ01-4] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
190 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
191 var sdCla5 = s78.chan !== null ? (s78.chan <= 3 ? 128 + s78.chan : 188 + s78.chan).toString(16).toUpperCase() : null;
192 // runtime-bound payload: ISD_P_AID1 stays in execution domain
193 var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
194 bind.checkData("S4-C1 SW", "9000", s5.sw);
195 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s5.cmd, profileAidSession);
196 var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
197 var r2has5_0 = false;
198 for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
199 var f = r2p5.elements[r2i5_0].fields;
200 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has5_0 = true; break; }
201 }
202 bind.checkData("S4-C2 contains PROFILE_INFO1", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
203
204 // 步骤 6:SEQ01-5] [SELECT_ICCID(tc_step)
205 var s6 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
206 bind.checkData("S5-C1 SW", "9000", s6.sw);
207
208 // 步骤 7:SEQ01-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
209 var s7 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
210 bind.checkData("S6-C1 SW", "9000", s7.sw);
211 bind.checkData("S6-C2 READ_BINARY data", "989209012143658709F5", s7.resp);
212
213 // 步骤 8:SEQ02-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
214 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
215 var sdCla8 = s78.chan !== null ? (s78.chan <= 3 ? 128 + s78.chan : 188 + s78.chan).toString(16).toUpperCase() : null;
216 var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF310F5A0A989209012143658709F50101FF", "00", null);
217 bind.checkData("S7-C1 SW1 91", "91", s8.sw.substring(0, 2));
218 var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF31", required: ["80"]});
219 bind.checkData("S7-C2 enableResult ok", "00", (r2w8.ok && r2w8.fields["80"] === "00") ? "00" : (r2w8.fields["80"] || "absent"));
220
221 // 步骤 9:SEQ02-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
222 // FETCH header literals follow the golden wire evidence 8012 (same
223 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
224 // gives mechanism only). Le = pending length from the last 91XX
225 // (chain rule, binding-internal state).
226 var s9 = bind.fetchPending("80", "12", "00", "00", null);
227 bind.checkData("S8-C1 proactive command envelope", "1", (s9.resp.length >= 4 && s9.resp.substring(0, 2) === "D0") ? "1" : "0");
228 // S8-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
229 // S9:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
230 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
231 var s9tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
232
233 // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
234 var s80 = bind.resetAndAtr();
235 bind.checkData("IC10-IC1-K1-C1 ATR_present", "1", s80.atr_hex !== "" ? "1" : "0");
236
237 // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
238 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
239 var s81 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
240 bind.checkData("IC10-IC1-K2-C2 FCP_Template", "1", s81.resp.length > 0 ? "1" : "0");
241 bind.checkData("IC10-IC1-K2-C4 SW", "9000", s81.sw);
242
243 // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
244 var s82 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
245 bind.checkData("IC10-IC1-K3-C4 SW", "9000", s82.sw);
246
247 // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
248 var steady83 = bind.runToSteadyState(function () {
249 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
250 });
251 bind.checkData("IC10-IC1-K4-C4 final SW", "9000", steady83.final.sw);
252
253 // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
254 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
255 var s84 = bind.manageChannelOpen("9000");
256 bind.checkData("IC10-IC2-K1-C4 SW", "9000", s84.sw);
257 bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s84.chan !== null ? "1" : "0");
258
259 // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
260 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
261 var s85 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
262 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
263 bind.checkData("IC10-IC2-K2-C4 SW", "9000", s85.sw);
264
265 // 步骤 11:SEQ02-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
266 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
267 var sdCla11 = s84.chan !== null ? (s84.chan <= 3 ? 128 + s84.chan : 188 + s84.chan).toString(16).toUpperCase() : null;
268 var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
269 bind.checkData("S10-C1 SW", "9000", s11.sw);
270 var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
271 var r2has11_0 = false;
272 for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
273 var f = r2p11.elements[r2i11_0].fields;
274 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has11_0 = true; break; }
275 }
276 bind.checkData("S10-C2 contains PROFILE_INFO1", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
277
278 // 步骤 12:SEQ02-5] [SELECT_ICCID(tc_step)
279 var s12 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
280 bind.checkData("S11-C1 SW", "9000", s12.sw);
281
282 // 步骤 13:SEQ02-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
283 var s13 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
284 bind.checkData("S12-C1 SW", "9000", s13.sw);
285 bind.checkData("S12-C2 READ_BINARY data", "989209012143658709F5", s13.resp);
286
287 // 步骤 14:SEQ03-1] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
288 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
289 var sdCla14 = s84.chan !== null ? (s84.chan <= 3 ? 128 + s84.chan : 188 + s84.chan).toString(16).toUpperCase() : null;
290 // runtime-bound payload: ISD_P_AID1 stays in execution domain
291 var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), "00", null);
292 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s14.cmd, profileAidSession);
293 bind.checkData("S13-C1 SW1 91", "91", s14.sw.substring(0, 2));
294 var r2w14 = BindGecaProc.parseGecaResponse(s14.resp, {outer: "BF31", required: ["80"]});
295 bind.checkData("S13-C2 enableResult ok", "00", (r2w14.ok && r2w14.fields["80"] === "00") ? "00" : (r2w14.fields["80"] || "absent"));
296
297 // 步骤 15:SEQ03-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
298 // FETCH header literals follow the golden wire evidence 8012 (same
299 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
300 // gives mechanism only). Le = pending length from the last 91XX
301 // (chain rule, binding-internal state).
302 var s15 = bind.fetchPending("80", "12", "00", "00", null);
303 bind.checkData("S14-C1 proactive command envelope", "1", (s15.resp.length >= 4 && s15.resp.substring(0, 2) === "D0") ? "1" : "0");
304 // S14-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
305
306 // 步骤 16:SEQ03-3] TERMINAL RESPONSE(tc_step)
307 // TERMINAL RESPONSE data is dynamically built by the binding from the
308 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
309 // Header literals follow the golden wire evidence 8014.
310 var s16 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
311 bind.checkData("S15-C1 SW", "9000", s16.sw);
312
313 // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
314 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
315 var s86 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
316 bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s86.resp.length > 0 ? "1" : "0");
317 bind.checkData("IC17-IC1-K2-C4 SW", "9000", s86.sw);
318
319 // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
320 var s87 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
321 bind.checkData("IC17-IC1-K3-C4 SW", "9000", s87.sw);
322
323 // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
324 var steady88 = bind.runToSteadyState(function () {
325 return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
326 });
327 bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady88.final.sw);
328
329 // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
330 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
331 var s89 = bind.manageChannelOpen("9000");
332 bind.checkData("IC18-IC2-K1-C4 SW", "9000", s89.sw);
333 bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s89.chan !== null ? "1" : "0");
334
335 // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
336 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
337 var s90 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
338 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
339 bind.checkData("IC18-IC2-K2-C4 SW", "9000", s90.sw);
340
341 // 步骤 19:SEQ03-6] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
342 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
343 var sdCla19 = s89.chan !== null ? (s89.chan <= 3 ? 128 + s89.chan : 188 + s89.chan).toString(16).toUpperCase() : null;
344 // runtime-bound payload: ISD_P_AID1 stays in execution domain
345 var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
346 bind.checkData("S18-C1 SW", "9000", s19.sw);
347 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s19.cmd, profileAidSession);
348 var r2p19 = BindEs10xProcProfile.walkChoiceList(s19.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
349 var r2has19_0 = false;
350 for (var r2i19_0 = 0; r2i19_0 < r2p19.elements.length; r2i19_0++) {
351 var f = r2p19.elements[r2i19_0].fields;
352 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has19_0 = true; break; }
353 }
354 bind.checkData("S18-C2 contains PROFILE_INFO1", "1", (r2p19.branch_tag === "A0" && r2has19_0) ? "1" : "0");
355
356 // 步骤 20:SEQ03-7] [SELECT_ICCID(tc_step)
357 var s20 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
358 bind.checkData("S19-C1 SW", "9000", s20.sw);
359
360 // 步骤 21:SEQ03-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
361 var s21 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
362 bind.checkData("S20-C1 SW", "9000", s21.sw);
363 bind.checkData("S20-C2 READ_BINARY data", "989209012143658709F5", s21.resp);
364
365 // 步骤 22:SEQ04-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
366 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
367 var sdCla22 = s89.chan !== null ? (s89.chan <= 3 ? 128 + s89.chan : 188 + s89.chan).toString(16).toUpperCase() : null;
368 var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF310F5A0A989209012143658709F50101FF", "00", null);
369 bind.checkData("S21-C1 SW1 91", "91", s22.sw.substring(0, 2));
370 var r2w22 = BindGecaProc.parseGecaResponse(s22.resp, {outer: "BF31", required: ["80"]});
371 bind.checkData("S21-C2 enableResult ok", "00", (r2w22.ok && r2w22.fields["80"] === "00") ? "00" : (r2w22.fields["80"] || "absent"));
372
373 // 步骤 23:SEQ04-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
374 // FETCH header literals follow the golden wire evidence 8012 (same
375 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
376 // gives mechanism only). Le = pending length from the last 91XX
377 // (chain rule, binding-internal state).
378 var s23 = bind.fetchPending("80", "12", "00", "00", null);
379 bind.checkData("S22-C1 proactive command envelope", "1", (s23.resp.length >= 4 && s23.resp.substring(0, 2) === "D0") ? "1" : "0");
380 // S22-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
381
382 // 步骤 24:SEQ04-3] TERMINAL RESPONSE(tc_step)
383 // TERMINAL RESPONSE data is dynamically built by the binding from the
384 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
385 // Header literals follow the golden wire evidence 8014.
386 var s24 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
387 bind.checkData("S23-C1 SW", "9000", s24.sw);
388
389 // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
390 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
391 var s91 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
392 bind.checkData("IC25-IC1-K2-C2 FCP_Template", "1", s91.resp.length > 0 ? "1" : "0");
393 bind.checkData("IC25-IC1-K2-C4 SW", "9000", s91.sw);
394
395 // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
396 var s92 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
397 bind.checkData("IC25-IC1-K3-C4 SW", "9000", s92.sw);
398
399 // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
400 var steady93 = bind.runToSteadyState(function () {
401 return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
402 });
403 bind.checkData("IC25-IC1-K4-C4 final SW", "9000", steady93.final.sw);
404
405 // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
406 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
407 var s94 = bind.manageChannelOpen("9000");
408 bind.checkData("IC26-IC2-K1-C4 SW", "9000", s94.sw);
409 bind.checkData("IC26-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s94.chan !== null ? "1" : "0");
410
411 // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
412 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
413 var s95 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
414 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
415 bind.checkData("IC26-IC2-K2-C4 SW", "9000", s95.sw);
416
417 // 步骤 27:SEQ04-6] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
418 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
419 var sdCla27 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
420 var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
421 bind.checkData("S26-C1 SW", "9000", s27.sw);
422 var r2p27 = BindEs10xProcProfile.walkChoiceList(s27.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
423 var r2has27_0 = false;
424 for (var r2i27_0 = 0; r2i27_0 < r2p27.elements.length; r2i27_0++) {
425 var f = r2p27.elements[r2i27_0].fields;
426 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has27_0 = true; break; }
427 }
428 bind.checkData("S26-C2 contains PROFILE_INFO1", "1", (r2p27.branch_tag === "A0" && r2has27_0) ? "1" : "0");
429
430 // 步骤 28:SEQ04-7] [SELECT_ICCID(tc_step)
431 var s28 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
432 bind.checkData("S27-C1 SW", "9000", s28.sw);
433
434 // 步骤 29:SEQ04-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
435 var s29 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
436 bind.checkData("S28-C1 SW", "9000", s29.sw);
437 bind.checkData("S28-C2 READ_BINARY data", "989209012143658709F5", s29.resp);
438
439 // 步骤 30:SEQ05-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1, RQ24_010)
440 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
441 var sdCla30 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
442 // runtime-bound payload: ISD_P_AID1 stays in execution domain
443 var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "010100", profileAidSession), "00", "9000");
444 bind.checkData("S29-C1 SW", "9000", s30.sw);
445 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s30.cmd, profileAidSession);
446 var r2w30 = BindGecaProc.parseGecaResponse(s30.resp, {outer: "BF31", required: ["80"]});
447 bind.checkData("S29-C2 enableResult ok", "00", (r2w30.ok && r2w30.fields["80"] === "00") ? "00" : (r2w30.fields["80"] || "absent"));
448
449 // 步骤 31:SEQ05-2] [TERMINAL_PROFILE(tc_step;REQ: RQ32_018_1, RQ57_135_4)
450 var steady31 = bind.runToSteadyState(function () {
451 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
452 });
453 bind.checkData("S30-C1 final SW", "9000", steady31.final.sw);
454
455 // 步骤 32:SEQ05-3] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1, RQ24_010)
456 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
457 var sdCla32 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
458 // runtime-bound payload: ISD_P_AID1 stays in execution domain
459 var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
460 bind.checkData("S31-C1 SW", "9000", s32.sw);
461 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s32.cmd, profileAidSession);
462 var r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
463 var r2has32_0 = false;
464 for (var r2i32_0 = 0; r2i32_0 < r2p32.elements.length; r2i32_0++) {
465 var f = r2p32.elements[r2i32_0].fields;
466 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has32_0 = true; break; }
467 }
468 bind.checkData("S31-C2 contains PROFILE_INFO1", "1", (r2p32.branch_tag === "A0" && r2has32_0) ? "1" : "0");
469
470 // 步骤 33:SEQ05-4] [SELECT_ICCID(tc_step)
471 var s33 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
472 bind.checkData("S32-C1 SW", "9000", s33.sw);
473
474 // 步骤 34:SEQ05-5] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
475 var s34 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
476 bind.checkData("S33-C1 SW", "9000", s34.sw);
477 bind.checkData("S33-C2 READ_BINARY data", "989209012143658709F5", s34.resp);
478
479 // 步骤 35:SEQ06-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1)
480 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
481 var sdCla35 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
482 var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF310F5A0A989209012143658709F5010100", "00", "9000");
483 bind.checkData("S34-C1 SW", "9000", s35.sw);
484 var r2w35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF31", required: ["80"]});
485 bind.checkData("S34-C2 enableResult ok", "00", (r2w35.ok && r2w35.fields["80"] === "00") ? "00" : (r2w35.fields["80"] || "absent"));
486
487 // 步骤 36:SEQ06-2] [TERMINAL_PROFILE(tc_step;REQ: RQ32_018_1, RQ57_135_4)
488 var steady36 = bind.runToSteadyState(function () {
489 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
490 });
491 bind.checkData("S35-C1 final SW", "9000", steady36.final.sw);
492
493 // 步骤 37:SEQ06-3] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1)
494 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
495 var sdCla37 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
496 var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
497 bind.checkData("S36-C1 SW", "9000", s37.sw);
498 var r2p37 = BindEs10xProcProfile.walkChoiceList(s37.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
499 var r2has37_0 = false;
500 for (var r2i37_0 = 0; r2i37_0 < r2p37.elements.length; r2i37_0++) {
501 var f = r2p37.elements[r2i37_0].fields;
502 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has37_0 = true; break; }
503 }
504 bind.checkData("S36-C2 contains PROFILE_INFO1", "1", (r2p37.branch_tag === "A0" && r2has37_0) ? "1" : "0");
505
506 // 步骤 38:SEQ06-4] [SELECT_ICCID(tc_step)
507 var s38 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
508 bind.checkData("S37-C1 SW", "9000", s38.sw);
509
510 // 步骤 39:SEQ06-5] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
511 var s39 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
512 bind.checkData("S38-C1 SW", "9000", s39.sw);
513 bind.checkData("S38-C2 READ_BINARY data", "989209012143658709F5", s39.resp);
514
515 // 步骤 40:SEQ07-IC3] MTD_SEND_SMS_PP(tc_step)
516 // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
517 // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
518 // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
519 var s40 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
520 bind.checkData("S39-C1 SW1 91", "91", s40.sw.substring(0, 2));
521
522 // 步骤 41:SEQ07-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
523 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
524 var sdCla41 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
525 // runtime-bound payload: ISD_P_AID2 stays in execution domain
526 var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "0101FF", profileAidSession), "00", null);
527 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s41.cmd, profileAidSession);
528 bind.checkData("S40-C1 SW1 91", "91", s41.sw.substring(0, 2));
529 var r2w41 = BindGecaProc.parseGecaResponse(s41.resp, {outer: "BF31", required: ["80"]});
530 bind.checkData("S40-C2 enableResult ok", "00", (r2w41.ok && r2w41.fields["80"] === "00") ? "00" : (r2w41.fields["80"] || "absent"));
531
532 // 步骤 42:SEQ07-2] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
533 // FETCH header literals follow the golden wire evidence 8012 (same
534 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
535 // gives mechanism only). Le = pending length from the last 91XX
536 // (chain rule, binding-internal state).
537 var s42 = bind.fetchPending("80", "12", "00", "00", null);
538 bind.checkData("S41-C1 proactive command envelope", "1", (s42.resp.length >= 4 && s42.resp.substring(0, 2) === "D0") ? "1" : "0");
539 // S41-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
540 // S42:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
541 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
542 var s42tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
543
544 // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
545 var s96 = bind.resetAndAtr();
546 bind.checkData("IC43-IC1-K1-C1 ATR_present", "1", s96.atr_hex !== "" ? "1" : "0");
547
548 // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
549 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
550 var s97 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
551 bind.checkData("IC43-IC1-K2-C2 FCP_Template", "1", s97.resp.length > 0 ? "1" : "0");
552 bind.checkData("IC43-IC1-K2-C4 SW", "9000", s97.sw);
553
554 // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
555 var s98 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
556 bind.checkData("IC43-IC1-K3-C4 SW", "9000", s98.sw);
557
558 // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
559 var steady99 = bind.runToSteadyState(function () {
560 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
561 });
562 bind.checkData("IC43-IC1-K4-C4 final SW", "9000", steady99.final.sw);
563
564 // IC ref inline @E 步骤 43(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
565 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
566 var s100 = bind.manageChannelOpen("9000");
567 bind.checkData("IC43-IC2-K1-C4 SW", "9000", s100.sw);
568 bind.checkData("IC43-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s100.chan !== null ? "1" : "0");
569
570 // IC ref inline @E 步骤 43(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
571 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
572 var s101 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
573 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
574 bind.checkData("IC43-IC2-K2-C4 SW", "9000", s101.sw);
575
576 // 步骤 44:SEQ07-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
577 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
578 var sdCla44 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
579 var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF2D00", "00", "9000");
580 bind.checkData("S43-C1 SW", "9000", s44.sw);
581 var r2p44 = BindEs10xProcProfile.walkChoiceList(s44.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
582 var r2has44_0 = false;
583 for (var r2i44_0 = 0; r2i44_0 < r2p44.elements.length; r2i44_0++) {
584 var f = r2p44.elements[r2i44_0].fields;
585 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has44_0 = true; break; }
586 }
587 bind.checkData("S43-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p44.branch_tag === "A0" && r2has44_0) ? "1" : "0");
588 var r2has44_0 = false;
589 for (var r2i44_0 = 0; r2i44_0 < r2p44.elements.length; r2i44_0++) {
590 var f = r2p44.elements[r2i44_0].fields;
591 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has44_0 = true; break; }
592 }
593 bind.checkData("S43-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p44.branch_tag === "A0" && r2has44_0) ? "1" : "0");
594
595 // 步骤 45:SEQ07-5] [SELECT_ICCID(tc_step)
596 var s45 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
597 bind.checkData("S44-C1 SW", "9000", s45.sw);
598
599 // 步骤 46:SEQ07-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
600 var s46 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
601 bind.checkData("S45-C1 SW", "9000", s46.sw);
602 bind.checkData("S45-C2 READ_BINARY data", "989209013254769810F9", s46.resp);
603
604 // 步骤 47:SEQ08-IC3] MTD_SEND_SMS_PP(tc_step)
605 // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
606 // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
607 // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
608 var s47 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
609 bind.checkData("S46-C1 SW1 91", "91", s47.sw.substring(0, 2));
610
611 // 步骤 48:SEQ08-1] MTD_STORE_DATA(tc_step)
612 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
613 var sdCla48 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
614 // runtime-bound payload: ISD_P_AID2 stays in execution domain
615 var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), "00", "9000");
616 bind.checkData("S47-C1 SW", "9000", s48.sw);
617 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s48.cmd, profileAidSession);
618 var r2w48 = BindGecaProc.parseGecaResponse(s48.resp, {outer: "BF31", required: ["80"]});
619 bind.checkData("S47-C2 enableResult ok", "00", (r2w48.ok && r2w48.fields["80"] === "00") ? "00" : (r2w48.fields["80"] || "absent"));
620
621 // 步骤 49:SEQ08-2] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
622 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
623 var sdCla49 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
624 var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", "BF2D00", "00", "9000");
625 bind.checkData("S48-C1 SW", "9000", s49.sw);
626 var r2p49 = BindEs10xProcProfile.walkChoiceList(s49.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
627 var r2has49_0 = false;
628 for (var r2i49_0 = 0; r2i49_0 < r2p49.elements.length; r2i49_0++) {
629 var f = r2p49.elements[r2i49_0].fields;
630 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has49_0 = true; break; }
631 }
632 bind.checkData("S48-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p49.branch_tag === "A0" && r2has49_0) ? "1" : "0");
633 var r2has49_0 = false;
634 for (var r2i49_0 = 0; r2i49_0 < r2p49.elements.length; r2i49_0++) {
635 var f = r2p49.elements[r2i49_0].fields;
636 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has49_0 = true; break; }
637 }
638 bind.checkData("S48-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p49.branch_tag === "A0" && r2has49_0) ? "1" : "0");
639
640 // 步骤 50:SEQ08-3] [SELECT_ICCID(tc_step)
641 var s50 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
642 bind.checkData("S49-C1 SW", "9000", s50.sw);
643
644 // 步骤 51:SEQ08-4] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
645 var s51 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
646 bind.checkData("S50-C1 SW", "9000", s51.sw);
647 bind.checkData("S50-C2 READ_BINARY data", "989209013254769810F9", s51.resp);
648
649 // 步骤 52:SEQ09-IC3] MTD_SEND_SMS_PP(tc_step)
650 // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
651 // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
652 // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
653 var s52 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
654 bind.checkData("S51-C1 SW1 91", "91", s52.sw.substring(0, 2));
655
656 // 步骤 53:SEQ09-1] FETCH 'XX'(tc_step)
657 // FETCH header literals follow the golden wire evidence 8012 (same
658 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
659 // gives mechanism only). Le = pending length from the last 91XX
660 // (chain rule, binding-internal state).
661 var s53 = bind.fetchPending("80", "12", "00", "00", null);
662 bind.checkData("S52-C1 proactive command envelope", "1", (s53.resp.length >= 4 && s53.resp.substring(0, 2) === "D0") ? "1" : "0");
663 // S52-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
664 // S53:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
665 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
666 var s53tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
667
668 // 步骤 54:SEQ09-2] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
669 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
670 var sdCla54 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
671 // runtime-bound payload: ISD_P_AID2 stays in execution domain
672 var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "0101FF", profileAidSession), "00", "9000");
673 bind.checkData("S53-C1 SW", "9000", s54.sw);
674 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s54.cmd, profileAidSession);
675 var r2w54 = BindGecaProc.parseGecaResponse(s54.resp, {outer: "BF31", required: ["80"]});
676 bind.checkData("S53-C2 enableResult ok", "00", (r2w54.ok && r2w54.fields["80"] === "00") ? "00" : (r2w54.fields["80"] || "absent"));
677
678 // 步骤 55:SEQ09-3] TERMINAL RESPONSE(tc_step)
679 // TERMINAL RESPONSE data is dynamically built by the binding from the
680 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
681 // Header literals follow the golden wire evidence 8014.
682 var s55 = bind.terminalResponseForPending("80", "14", "00", "00", null);
683 bind.checkData("S54-C1 SW1 91", "91", s55.sw.substring(0, 2));
684
685 // 步骤 56:SEQ09-4] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
686 // FETCH header literals follow the golden wire evidence 8012 (same
687 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
688 // gives mechanism only). Le = pending length from the last 91XX
689 // (chain rule, binding-internal state).
690 var s56 = bind.fetchPending("80", "12", "00", "00", null);
691 bind.checkData("S55-C1 proactive command envelope", "1", (s56.resp.length >= 4 && s56.resp.substring(0, 2) === "D0") ? "1" : "0");
692 // S55-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
693 // S56:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
694 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
695 var s56tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
696
697 // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
698 var s102 = bind.resetAndAtr();
699 bind.checkData("IC57-IC1-K1-C1 ATR_present", "1", s102.atr_hex !== "" ? "1" : "0");
700
701 // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
702 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
703 var s103 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
704 bind.checkData("IC57-IC1-K2-C2 FCP_Template", "1", s103.resp.length > 0 ? "1" : "0");
705 bind.checkData("IC57-IC1-K2-C4 SW", "9000", s103.sw);
706
707 // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
708 var s104 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
709 bind.checkData("IC57-IC1-K3-C4 SW", "9000", s104.sw);
710
711 // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
712 var steady105 = bind.runToSteadyState(function () {
713 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
714 });
715 bind.checkData("IC57-IC1-K4-C4 final SW", "9000", steady105.final.sw);
716
717 // IC ref inline @E 步骤 57(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
718 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
719 var s106 = bind.manageChannelOpen("9000");
720 bind.checkData("IC57-IC2-K1-C4 SW", "9000", s106.sw);
721 bind.checkData("IC57-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s106.chan !== null ? "1" : "0");
722
723 // IC ref inline @E 步骤 57(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
724 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
725 var s107 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
726 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
727 bind.checkData("IC57-IC2-K2-C4 SW", "9000", s107.sw);
728
729 // 步骤 58:SEQ09-6] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
730 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
731 var sdCla58 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
732 var s58 = bind.sendApdu(sdCla58, "E2", "91", "00", "BF2D00", "00", "9000");
733 bind.checkData("S57-C1 SW", "9000", s58.sw);
734 var r2p58 = BindEs10xProcProfile.walkChoiceList(s58.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
735 var r2has58_0 = false;
736 for (var r2i58_0 = 0; r2i58_0 < r2p58.elements.length; r2i58_0++) {
737 var f = r2p58.elements[r2i58_0].fields;
738 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has58_0 = true; break; }
739 }
740 bind.checkData("S57-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p58.branch_tag === "A0" && r2has58_0) ? "1" : "0");
741 var r2has58_0 = false;
742 for (var r2i58_0 = 0; r2i58_0 < r2p58.elements.length; r2i58_0++) {
743 var f = r2p58.elements[r2i58_0].fields;
744 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has58_0 = true; break; }
745 }
746 bind.checkData("S57-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p58.branch_tag === "A0" && r2has58_0) ? "1" : "0");
747
748 // 步骤 59:SEQ09-7] [SELECT_ICCID(tc_step)
749 var s59 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
750 bind.checkData("S58-C1 SW", "9000", s59.sw);
751
752 // 步骤 60:SEQ09-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
753 var s60 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
754 bind.checkData("S59-C1 SW", "9000", s60.sw);
755 bind.checkData("S59-C2 READ_BINARY data", "989209013254769810F9", s60.resp);
756
757 // 步骤 61:SEQ10-IC3] MTD_SEND_SMS_PP(tc_step)
758 // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
759 // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
760 // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
761 var s61 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
762 bind.checkData("S60-C1 SW1 91", "91", s61.sw.substring(0, 2));
763
764 // 步骤 62:SEQ10-1] FETCH 'XX'(tc_step)
765 // FETCH header literals follow the golden wire evidence 8012 (same
766 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
767 // gives mechanism only). Le = pending length from the last 91XX
768 // (chain rule, binding-internal state).
769 var s62 = bind.fetchPending("80", "12", "00", "00", null);
770 bind.checkData("S61-C1 proactive command envelope", "1", (s62.resp.length >= 4 && s62.resp.substring(0, 2) === "D0") ? "1" : "0");
771 // S61-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
772 // S62:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
773 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
774 var s62tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
775
776 // 步骤 63:SEQ10-2] MTD_STORE_DATA(tc_step)
777 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
778 var sdCla63 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
779 // runtime-bound payload: ISD_P_AID2 stays in execution domain
780 var s63 = bind.sendApdu(sdCla63, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), "00", "9000");
781 bind.checkData("S62-C1 SW", "9000", s63.sw);
782 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s63.cmd, profileAidSession);
783 var r2w63 = BindGecaProc.parseGecaResponse(s63.resp, {outer: "BF31", required: ["80"]});
784 bind.checkData("S62-C2 enableResult ok", "00", (r2w63.ok && r2w63.fields["80"] === "00") ? "00" : (r2w63.fields["80"] || "absent"));
785
786 // 步骤 64:SEQ10-3] TERMINAL RESPONSE(tc_step)
787 // TERMINAL RESPONSE data is dynamically built by the binding from the
788 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
789 // Header literals follow the golden wire evidence 8014.
790 var s64 = bind.terminalResponseForPending("80", "14", "00", "00", null);
791 bind.checkData("S63-C1 SW1 != 91", "1", s64.sw.substring(0, 2) !== "91" ? "1" : "0");
792
793 // 步骤 65:SEQ10-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
794 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
795 var sdCla65 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
796 var s65 = bind.sendApdu(sdCla65, "E2", "91", "00", "BF2D00", "00", "9000");
797 bind.checkData("S64-C1 SW", "9000", s65.sw);
798 var r2p65 = BindEs10xProcProfile.walkChoiceList(s65.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
799 var r2has65_0 = false;
800 for (var r2i65_0 = 0; r2i65_0 < r2p65.elements.length; r2i65_0++) {
801 var f = r2p65.elements[r2i65_0].fields;
802 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has65_0 = true; break; }
803 }
804 bind.checkData("S64-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p65.branch_tag === "A0" && r2has65_0) ? "1" : "0");
805 var r2has65_0 = false;
806 for (var r2i65_0 = 0; r2i65_0 < r2p65.elements.length; r2i65_0++) {
807 var f = r2p65.elements[r2i65_0].fields;
808 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has65_0 = true; break; }
809 }
810 bind.checkData("S64-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p65.branch_tag === "A0" && r2has65_0) ? "1" : "0");
811
812 // 步骤 66:SEQ10-5] [SELECT_ICCID(tc_step)
813 var s66 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
814 bind.checkData("S65-C1 SW", "9000", s66.sw);
815
816 // 步骤 67:SEQ10-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
817 var s67 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
818 bind.checkData("S66-C1 SW", "9000", s67.sw);
819 bind.checkData("S66-C2 READ_BINARY data", "989209013254769810F9", s67.resp);
820}
821
完整 unified diff
行级差异:新增 819 行 / 删除 991 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(1815 行)
--- -man
+++ -cas
@@ -1,993 +1,821 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_EnableProfile_Case4_01_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_EnableProfile_Case4_02_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_EnableProfile_Case4_03_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_EnableProfile_Case4_04_Nominal_Enable_Profile_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_EnableProfile_Case4_05_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set + TC_eUICC_ES10c_EnableProfile_Case4_06_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_not_set + TC_eUICC_ES10c_EnableProfile_Case4_07_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_08_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_09_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported + TC_eUICC_ES10c_EnableProfile_Case4_10_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported (extracted verbatim)
-
-function TC_eUICC_ES10c_EnableProfile_Case4_01_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ISD-P AID激活profile,并设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
-
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
- enableProRequest.refreshFlag = BooleanValue_BerCode_True;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-
- FetchStr = Fetch("","9000","");
-
- var CmdDetails = GetValueByTag("01",1);
- var CmdQualifier = CmdDetails.substr(4,2);
- CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF1;
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_02_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ICCID激活profile,并设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = BooleanValue_BerCode_True;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-
- FetchStr = Fetch("","9000","");
-
- var CmdDetails = GetValueByTag("01",1);
- var CmdQualifier = CmdDetails.substr(4,2);
- CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF1;
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_03_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ISD-P AID激活profile,并设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;//add 20260423
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
-
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
- enableProRequest.refreshFlag = BooleanValue_BerCode_True;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
- FetchStr = Fetch("","9000","");
-
- var CmdDetails = GetValueByTag("01",1);
- var CmdQualifier = CmdDetails.substr(4,2);
- CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");
-
- TerminalResponse("00","9000");
-
- curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
- curLogicChannel = 0;
- if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
- TS_TERMINAL_CAPABILITY_cmd();
- else
- obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
-
- IniCard_SetUpMenu("",1);
-
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF1;
- SendAPDU(para1.apdu);
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_04_Nominal_Enable_Profile_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ICCID激活profile,并设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = BooleanValue_BerCode_True;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-
- FetchStr = Fetch("","9000","");
-
- var CmdDetails = GetValueByTag("01",1);
- var CmdQualifier = CmdDetails.substr(4,2);
- CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");//'09' = eUICC Profile State Change; 102.223-8.6
-
- TerminalResponse("00","9000");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
-
- curLogicChannel = 0;
-
- if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
- TS_TERMINAL_CAPABILITY_cmd();
- else
- obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
-
- IniCard_SetUpMenu("",1);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF1;
- SendAPDU(para1.apdu);
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_05_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:通过ISD-P AID激活profile,不设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
-
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
- enableProRequest.refreshFlag = BooleanValue_BerCode_False;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","9000");
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
- IniCard_SetUpMenu("",1);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF1;
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_06_Nominal_Enable_Profile_by_ICCID_and_refreshFlag_not_set()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:通过ICCID激活profile,不设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = BooleanValue_BerCode_False;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","9000");
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
- IniCard_SetUpMenu("",1);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF1;
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_07_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_catBusy_not_supported()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
-
- if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
- return;
-
- TestOfMEPMode = 0;
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
- var ISD_P_Test02 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ISD-P AID激活profile,并设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
-
- curLogicChannel=0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
- sSendType = SendTypeByOTA.SMS;
- KIC = MNO_SCP80_ENC_KEY;
- KID = MNO_SCP80_AUTH_KEY;
- KIK = MNO_SCP80_DATA_ENC_KEY;
-
-
- sAPDU = "80F28002024F0000";
- SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
-
- curLogicChannel=1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为true;");
-
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
- enableProRequest.refreshFlag = BooleanValue_BerCode_True;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-
- FetchStr = Fetch("","9000","");
-
- var CmdDetails = GetValueByTag("01",1);
- var CmdQualifier = CmdDetails.substr(4,2);
- CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF2;
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-
-
-
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_08_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_catBusy_not_supported()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
-
- if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
- return;
-
- TestOfMEPMode = 0;
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
- var ISD_P_Test02 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ISD-P AID激活profile,不设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
-
- curLogicChannel=0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
- sSendType = SendTypeByOTA.SMS;
- KIC = MNO_SCP80_ENC_KEY;
- KID = MNO_SCP80_AUTH_KEY;
- KIK = MNO_SCP80_DATA_ENC_KEY;
-
-
- sAPDU = "80F28002024F0000";
- SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
-
- curLogicChannel=1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false(not set);");
-
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
- enableProRequest.refreshFlag = BooleanValue_BerCode_False;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
-
- FetchStr = Fetch("","9000","");
- var CmdDetails = GetValueByTag("01",1);
- var CmdQualifier = CmdDetails.substr(4,2);
- CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF2;
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_09_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
-
- if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
- return;
-
- TestOfMEPMode = 0;
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
- var ISD_P_Test02 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ISD-P AID激活profile,设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
-
- curLogicChannel=0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
- sSendType = SendTypeByOTA.SMS;
- KIC = MNO_SCP80_ENC_KEY;
- KID = MNO_SCP80_AUTH_KEY;
- KIK = MNO_SCP80_DATA_ENC_KEY;
-
-
- sAPDU = "80F28002024F0000";
-
- SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
-
- var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
- CardSendMessageToServerExpandedRemoteCmd(exResPara);
-
- curLogicChannel=1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为true;");
-
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
- enableProRequest.refreshFlag = BooleanValue_BerCode_True;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
- TerminalResponse("00","91XX");
- var ss = obj.GetState();
- HaveReEntry91XX = false;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
- FetchStr = Fetch("","9000","");
- var CmdDetails = GetValueByTag("01",1);
- var CmdQualifier = CmdDetails.substr(4,2);
- CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF2;
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_EnableProfile_Case4_10_Nominal_Enable_Profile_by_ISD_P_AID_and_refreshFlag_not_set_while_proactive_session_is_ongoing_with_Terminal_Response_outstanding_catBusy_not_supported()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
-
- if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
- return;
-
- TestOfMEPMode = 0;
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Disabled();
- var ISD_P_Test02 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ISD-P AID激活profile,不设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
-
- curLogicChannel=0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SMS-PP;");
- sSendType = SendTypeByOTA.SMS;
- KIC = MNO_SCP80_ENC_KEY;
- KID = MNO_SCP80_AUTH_KEY;
- KIK = MNO_SCP80_DATA_ENC_KEY;
-
-
- sAPDU = "80F28002024F0000";
-
- SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210015",sAPDU);
-
- var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
- CardSendMessageToServerExpandedRemoteCmd(exResPara);
-
- curLogicChannel=1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为false;");
-
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test02);
- enableProRequest.refreshFlag = BooleanValue_BerCode_False;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"91","00","91XX");
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
- TerminalResponse("00","91XX");
- var ss = obj.GetState();
- HaveReEntry91XX = false;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
- FetchStr = Fetch("","9000","");
- var CmdDetails = GetValueByTag("01",1);
- var CmdQualifier = CmdDetails.substr(4,2);
- CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");//'04' = UICC Reset;
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
- var para1 = new SelectFileEFPara_3G("2FE2");
- SendAPDU(para1.apdu);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
- var para1 = new ReadBinaryPara_3G("00","00","0A");
- para1.apdu.resvalue = ICCID_OP_PROF2;
- SendAPDU(para1.apdu);
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261005-152741
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.EnableProfile_Case4,Test Sequence #01-#10 Nominal (all 10 sequences),适用性 M。
+// Test points: ICH-SEQ01-IC1-K1-C1 ATR_present;ICH-SEQ01-IC1-K2-C2 FCP_Template
+// ICH-SEQ01-IC1-K2-C4 SW;ICH-SEQ01-IC1-K3-C4 SW;ICH-SEQ01-IC1-K4-C4 final SW
+// ICH-SEQ01-IC2-K1-C4 SW;ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted;ICH-SEQ01-IC2-K2-C4 SW
+// S1-C1 SW1 91;S1-C2 enableResult ok;S2-C1 proactive command envelope;IC4-IC1-K1-C1 ATR_present
+// IC4-IC1-K2-C2 FCP_Template;IC4-IC1-K2-C4 SW;IC4-IC1-K3-C4 SW;IC4-IC1-K4-C4 final SW
+// IC4-IC2-K1-C4 SW;IC4-IC2-K1-C3 CHANNEL_NUMBER extracted;IC4-IC2-K2-C4 SW;S4-C1 SW
+// S4-C2 contains PROFILE_INFO1;S5-C1 SW;S6-C1 SW;S6-C2 READ_BINARY data;S7-C1 SW1 91
+// S7-C2 enableResult ok;S8-C1 proactive command envelope;IC10-IC1-K1-C1 ATR_present
+// IC10-IC1-K2-C2 FCP_Template;IC10-IC1-K2-C4 SW;IC10-IC1-K3-C4 SW;IC10-IC1-K4-C4 final SW
+// IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted;IC10-IC2-K2-C4 SW;S10-C1 SW
+// S10-C2 contains PROFILE_INFO1;S11-C1 SW;S12-C1 SW;S12-C2 READ_BINARY data;S13-C1 SW1 91
+// S13-C2 enableResult ok;S14-C1 proactive command envelope;S15-C1 SW;IC17-IC1-K2-C2 FCP_Template
+// IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW;IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW
+// IC18-IC2-K1-C3 CHANNEL_NUMBER extracted;IC18-IC2-K2-C4 SW;S18-C1 SW
+// S18-C2 contains PROFILE_INFO1;S19-C1 SW;S20-C1 SW;S20-C2 READ_BINARY data;S21-C1 SW1 91
+// S21-C2 enableResult ok;S22-C1 proactive command envelope;S23-C1 SW;IC25-IC1-K2-C2 FCP_Template
+// IC25-IC1-K2-C4 SW;IC25-IC1-K3-C4 SW;IC25-IC1-K4-C4 final SW;IC26-IC2-K1-C4 SW
+// IC26-IC2-K1-C3 CHANNEL_NUMBER extracted;IC26-IC2-K2-C4 SW;S26-C1 SW
+// S26-C2 contains PROFILE_INFO1;S27-C1 SW;S28-C1 SW;S28-C2 READ_BINARY data;S29-C1 SW
+// S29-C2 enableResult ok;S30-C1 final SW;S31-C1 SW;S31-C2 contains PROFILE_INFO1;S32-C1 SW
+// S33-C1 SW;S33-C2 READ_BINARY data;S34-C1 SW;S34-C2 enableResult ok;S35-C1 final SW;S36-C1 SW
+// S36-C2 contains PROFILE_INFO1;S37-C1 SW;S38-C1 SW;S38-C2 READ_BINARY data;S39-C1 SW1 91
+// S40-C1 SW1 91;S40-C2 enableResult ok;S41-C1 proactive command envelope
+// IC43-IC1-K1-C1 ATR_present;IC43-IC1-K2-C2 FCP_Template;IC43-IC1-K2-C4 SW;IC43-IC1-K3-C4 SW
+// IC43-IC1-K4-C4 final SW;IC43-IC2-K1-C4 SW;IC43-IC2-K1-C3 CHANNEL_NUMBER extracted
+// IC43-IC2-K2-C4 SW;S43-C1 SW;S43-C2 contains PROFILE_INFO1_DISABLED
+// S43-C3 contains PROFILE_INFO2_ENABLED;S44-C1 SW;S45-C1 SW;S45-C2 READ_BINARY data;S46-C1 SW1 91
+// S47-C1 SW;S47-C2 enableResult ok;S48-C1 SW;S48-C2 contains PROFILE_INFO1_DISABLED
+// S48-C3 contains PROFILE_INFO2_ENABLED;S49-C1 SW;S50-C1 SW;S50-C2 READ_BINARY data;S51-C1 SW1 91
+// S52-C1 proactive command envelope;S53-C1 SW;S53-C2 enableResult ok;S54-C1 SW1 91
+// S55-C1 proactive command envelope;IC57-IC1-K1-C1 ATR_present;IC57-IC1-K2-C2 FCP_Template
+// IC57-IC1-K2-C4 SW;IC57-IC1-K3-C4 SW;IC57-IC1-K4-C4 final SW;IC57-IC2-K1-C4 SW
+// IC57-IC2-K1-C3 CHANNEL_NUMBER extracted;IC57-IC2-K2-C4 SW;S57-C1 SW
+// S57-C2 contains PROFILE_INFO1_DISABLED;S57-C3 contains PROFILE_INFO2_ENABLED;S58-C1 SW
+// S59-C1 SW;S59-C2 READ_BINARY data;S60-C1 SW1 91;S61-C1 proactive command envelope;S62-C1 SW
+// S62-C2 enableResult ok;S63-C1 SW1 != 91;S64-C1 SW;S64-C2 contains PROFILE_INFO1_DISABLED
+// S64-C3 contains PROFILE_INFO2_ENABLED;S65-C1 SW;S66-C1 SW;S66-C2 READ_BINARY data
+// 本函数由 CaseIR 4.2.21.2.3 编译生成(fullwave-blindgen-live-70-W1-laneA2,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 M:编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10c_EnableProfile_Case4_01_10_Nominal_all_10_sequences() {
+ var bind = curBind;
+ var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_EnableProfile_Case4_01_10_Nominal_all_10_sequences");
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "ccd6682ef04d74b7", "authority_reference": "E_tc_4221/468-468/G_annexB_dynamic:L51"}
+ var cardCtxLoad1 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID1", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "ccd6682ef04d74b7", "authority_reference": "E_tc_4221/607-607/G_annexB_dynamic:L52"}
+ var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID2", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+ // TC-GEN-1 eUICC: The PROFILE_OPERATIONAL1 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ01-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ01-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ02-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ02-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ02-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ03-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ03-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ03-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ03-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ04-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ04-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ04-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ05-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ05-IC-T2 eUICC: The PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ05-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ05-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ06-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ06-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ06-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ07-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ07-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ07-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ07-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ07-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ07-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ07-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ08-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ08-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ08-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ08-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ08-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ08-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ08-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ09-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ09-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ09-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ09-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ09-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ09-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ10-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ10-IC-T2 eUICC: The PROFILE_OPERATIONAL2 has been installed on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ10-IC-T3 eUICC: The PROFILE_OPERATIONAL2 is Disabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ10-IC-T4 eUICC: The PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ10-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // SEQ10-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s68 = bind.resetAndAtr();
+ bind.checkData("ICH-SEQ01-IC1-K1-C1 ATR_present", "1", s68.atr_hex !== "" ? "1" : "0");
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s69 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("ICH-SEQ01-IC1-K2-C2 FCP_Template", "1", s69.resp.length > 0 ? "1" : "0");
+ bind.checkData("ICH-SEQ01-IC1-K2-C4 SW", "9000", s69.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s70 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("ICH-SEQ01-IC1-K3-C4 SW", "9000", s70.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady71 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("ICH-SEQ01-IC1-K4-C4 final SW", "9000", steady71.final.sw);
+
+ // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s72 = bind.manageChannelOpen("9000");
+ bind.checkData("ICH-SEQ01-IC2-K1-C4 SW", "9000", s72.sw);
+ bind.checkData("ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s72.chan !== null ? "1" : "0");
+
+ // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s73 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("ICH-SEQ01-IC2-K2-C4 SW", "9000", s73.sw);
+
+ // 步骤 1:MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
+
+ // 步骤 2:SEQ01-1] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla2 = s72.chan !== null ? (s72.chan <= 3 ? 128 + s72.chan : 188 + s72.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), "00", null);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s2.cmd, profileAidSession);
+ bind.checkData("S1-C1 SW1 91", "91", s2.sw.substring(0, 2));
+ var r2w2 = BindGecaProc.parseGecaResponse(s2.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S1-C2 enableResult ok", "00", (r2w2.ok && r2w2.fields["80"] === "00") ? "00" : (r2w2.fields["80"] || "absent"));
+
+ // 步骤 3:SEQ01-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s3 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S2-C1 proactive command envelope", "1", (s3.resp.length >= 4 && s3.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S2-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S3:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s3tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s74 = bind.resetAndAtr();
+ bind.checkData("IC4-IC1-K1-C1 ATR_present", "1", s74.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s75 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC4-IC1-K2-C2 FCP_Template", "1", s75.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC4-IC1-K2-C4 SW", "9000", s75.sw);
+
+ // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s76 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC4-IC1-K3-C4 SW", "9000", s76.sw);
+
+ // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady77 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC4-IC1-K4-C4 final SW", "9000", steady77.final.sw);
+
+ // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s78 = bind.manageChannelOpen("9000");
+ bind.checkData("IC4-IC2-K1-C4 SW", "9000", s78.sw);
+ bind.checkData("IC4-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s78.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s79 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC4-IC2-K2-C4 SW", "9000", s79.sw);
+
+ // 步骤 5:SEQ01-4] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla5 = s78.chan !== null ? (s78.chan <= 3 ? 128 + s78.chan : 188 + s78.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S4-C1 SW", "9000", s5.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s5.cmd, profileAidSession);
+ var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has5_0 = false;
+ for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
+ var f = r2p5.elements[r2i5_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has5_0 = true; break; }
+ }
+ bind.checkData("S4-C2 contains PROFILE_INFO1", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
+
+ // 步骤 6:SEQ01-5] [SELECT_ICCID(tc_step)
+ var s6 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S5-C1 SW", "9000", s6.sw);
+
+ // 步骤 7:SEQ01-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s7 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S6-C1 SW", "9000", s7.sw);
+ bind.checkData("S6-C2 READ_BINARY data", "989209012143658709F5", s7.resp);
+
+ // 步骤 8:SEQ02-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla8 = s78.chan !== null ? (s78.chan <= 3 ? 128 + s78.chan : 188 + s78.chan).toString(16).toUpperCase() : null;
+ var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF310F5A0A989209012143658709F50101FF", "00", null);
+ bind.checkData("S7-C1 SW1 91", "91", s8.sw.substring(0, 2));
+ var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S7-C2 enableResult ok", "00", (r2w8.ok && r2w8.fields["80"] === "00") ? "00" : (r2w8.fields["80"] || "absent"));
+
+ // 步骤 9:SEQ02-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s9 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S8-C1 proactive command envelope", "1", (s9.resp.length >= 4 && s9.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S8-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S9:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s9tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s80 = bind.resetAndAtr();
+ bind.checkData("IC10-IC1-K1-C1 ATR_present", "1", s80.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s81 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC10-IC1-K2-C2 FCP_Template", "1", s81.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC10-IC1-K2-C4 SW", "9000", s81.sw);
+
+ // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s82 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC10-IC1-K3-C4 SW", "9000", s82.sw);
+
+ // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady83 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC10-IC1-K4-C4 final SW", "9000", steady83.final.sw);
+
+ // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s84 = bind.manageChannelOpen("9000");
+ bind.checkData("IC10-IC2-K1-C4 SW", "9000", s84.sw);
+ bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s84.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s85 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC10-IC2-K2-C4 SW", "9000", s85.sw);
+
+ // 步骤 11:SEQ02-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla11 = s84.chan !== null ? (s84.chan <= 3 ? 128 + s84.chan : 188 + s84.chan).toString(16).toUpperCase() : null;
+ var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S10-C1 SW", "9000", s11.sw);
+ var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has11_0 = false;
+ for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
+ var f = r2p11.elements[r2i11_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has11_0 = true; break; }
+ }
+ bind.checkData("S10-C2 contains PROFILE_INFO1", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
+
+ // 步骤 12:SEQ02-5] [SELECT_ICCID(tc_step)
+ var s12 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S11-C1 SW", "9000", s12.sw);
+
+ // 步骤 13:SEQ02-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s13 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S12-C1 SW", "9000", s13.sw);
+ bind.checkData("S12-C2 READ_BINARY data", "989209012143658709F5", s13.resp);
+
+ // 步骤 14:SEQ03-1] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla14 = s84.chan !== null ? (s84.chan <= 3 ? 128 + s84.chan : 188 + s84.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), "00", null);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s14.cmd, profileAidSession);
+ bind.checkData("S13-C1 SW1 91", "91", s14.sw.substring(0, 2));
+ var r2w14 = BindGecaProc.parseGecaResponse(s14.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S13-C2 enableResult ok", "00", (r2w14.ok && r2w14.fields["80"] === "00") ? "00" : (r2w14.fields["80"] || "absent"));
+
+ // 步骤 15:SEQ03-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s15 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S14-C1 proactive command envelope", "1", (s15.resp.length >= 4 && s15.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S14-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+ // 步骤 16:SEQ03-3] TERMINAL RESPONSE(tc_step)
+ // TERMINAL RESPONSE data is dynamically built by the binding from the
+ // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+ // Header literals follow the golden wire evidence 8014.
+ var s16 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s16.sw);
+
+ // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s86 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s86.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC17-IC1-K2-C4 SW", "9000", s86.sw);
+
+ // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s87 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC17-IC1-K3-C4 SW", "9000", s87.sw);
+
+ // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
+ var steady88 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
+ });
+ bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady88.final.sw);
+
+ // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s89 = bind.manageChannelOpen("9000");
+ bind.checkData("IC18-IC2-K1-C4 SW", "9000", s89.sw);
+ bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s89.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s90 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC18-IC2-K2-C4 SW", "9000", s90.sw);
+
+ // 步骤 19:SEQ03-6] MTD_STORE_DATA(tc_step;REQ: RQ24_010, RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla19 = s89.chan !== null ? (s89.chan <= 3 ? 128 + s89.chan : 188 + s89.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S18-C1 SW", "9000", s19.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s19.cmd, profileAidSession);
+ var r2p19 = BindEs10xProcProfile.walkChoiceList(s19.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has19_0 = false;
+ for (var r2i19_0 = 0; r2i19_0 < r2p19.elements.length; r2i19_0++) {
+ var f = r2p19.elements[r2i19_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has19_0 = true; break; }
+ }
+ bind.checkData("S18-C2 contains PROFILE_INFO1", "1", (r2p19.branch_tag === "A0" && r2has19_0) ? "1" : "0");
+
+ // 步骤 20:SEQ03-7] [SELECT_ICCID(tc_step)
+ var s20 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S19-C1 SW", "9000", s20.sw);
+
+ // 步骤 21:SEQ03-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s21 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S20-C1 SW", "9000", s21.sw);
+ bind.checkData("S20-C2 READ_BINARY data", "989209012143658709F5", s21.resp);
+
+ // 步骤 22:SEQ04-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla22 = s89.chan !== null ? (s89.chan <= 3 ? 128 + s89.chan : 188 + s89.chan).toString(16).toUpperCase() : null;
+ var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF310F5A0A989209012143658709F50101FF", "00", null);
+ bind.checkData("S21-C1 SW1 91", "91", s22.sw.substring(0, 2));
+ var r2w22 = BindGecaProc.parseGecaResponse(s22.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S21-C2 enableResult ok", "00", (r2w22.ok && r2w22.fields["80"] === "00") ? "00" : (r2w22.fields["80"] || "absent"));
+
+ // 步骤 23:SEQ04-2] FETCH 'XX'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s23 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S22-C1 proactive command envelope", "1", (s23.resp.length >= 4 && s23.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S22-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+ // 步骤 24:SEQ04-3] TERMINAL RESPONSE(tc_step)
+ // TERMINAL RESPONSE data is dynamically built by the binding from the
+ // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+ // Header literals follow the golden wire evidence 8014.
+ var s24 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+ bind.checkData("S23-C1 SW", "9000", s24.sw);
+
+ // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s91 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC25-IC1-K2-C2 FCP_Template", "1", s91.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC25-IC1-K2-C4 SW", "9000", s91.sw);
+
+ // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s92 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC25-IC1-K3-C4 SW", "9000", s92.sw);
+
+ // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
+ var steady93 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
+ });
+ bind.checkData("IC25-IC1-K4-C4 final SW", "9000", steady93.final.sw);
+
+ // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s94 = bind.manageChannelOpen("9000");
+ bind.checkData("IC26-IC2-K1-C4 SW", "9000", s94.sw);
+ bind.checkData("IC26-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s94.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s95 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC26-IC2-K2-C4 SW", "9000", s95.sw);
+
+ // 步骤 27:SEQ04-6] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_016_1, RQ32_016_2, RQ57_128, RQ57_129, RQ57_133_3, RQ57_136, RQ57_137)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla27 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+ var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S26-C1 SW", "9000", s27.sw);
+ var r2p27 = BindEs10xProcProfile.walkChoiceList(s27.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has27_0 = false;
+ for (var r2i27_0 = 0; r2i27_0 < r2p27.elements.length; r2i27_0++) {
+ var f = r2p27.elements[r2i27_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has27_0 = true; break; }
+ }
+ bind.checkData("S26-C2 contains PROFILE_INFO1", "1", (r2p27.branch_tag === "A0" && r2has27_0) ? "1" : "0");
+
+ // 步骤 28:SEQ04-7] [SELECT_ICCID(tc_step)
+ var s28 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S27-C1 SW", "9000", s28.sw);
+
+ // 步骤 29:SEQ04-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s29 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S28-C1 SW", "9000", s29.sw);
+ bind.checkData("S28-C2 READ_BINARY data", "989209012143658709F5", s29.resp);
+
+ // 步骤 30:SEQ05-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1, RQ24_010)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla30 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "010100", profileAidSession), "00", "9000");
+ bind.checkData("S29-C1 SW", "9000", s30.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s30.cmd, profileAidSession);
+ var r2w30 = BindGecaProc.parseGecaResponse(s30.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S29-C2 enableResult ok", "00", (r2w30.ok && r2w30.fields["80"] === "00") ? "00" : (r2w30.fields["80"] || "absent"));
+
+ // 步骤 31:SEQ05-2] [TERMINAL_PROFILE(tc_step;REQ: RQ32_018_1, RQ57_135_4)
+ var steady31 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("S30-C1 final SW", "9000", steady31.final.sw);
+
+ // 步骤 32:SEQ05-3] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1, RQ24_010)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla32 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S31-C1 SW", "9000", s32.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s32.cmd, profileAidSession);
+ var r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has32_0 = false;
+ for (var r2i32_0 = 0; r2i32_0 < r2p32.elements.length; r2i32_0++) {
+ var f = r2p32.elements[r2i32_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has32_0 = true; break; }
+ }
+ bind.checkData("S31-C2 contains PROFILE_INFO1", "1", (r2p32.branch_tag === "A0" && r2has32_0) ? "1" : "0");
+
+ // 步骤 33:SEQ05-4] [SELECT_ICCID(tc_step)
+ var s33 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S32-C1 SW", "9000", s33.sw);
+
+ // 步骤 34:SEQ05-5] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s34 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S33-C1 SW", "9000", s34.sw);
+ bind.checkData("S33-C2 READ_BINARY data", "989209012143658709F5", s34.resp);
+
+ // 步骤 35:SEQ06-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla35 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+ var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF310F5A0A989209012143658709F5010100", "00", "9000");
+ bind.checkData("S34-C1 SW", "9000", s35.sw);
+ var r2w35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S34-C2 enableResult ok", "00", (r2w35.ok && r2w35.fields["80"] === "00") ? "00" : (r2w35.fields["80"] || "absent"));
+
+ // 步骤 36:SEQ06-2] [TERMINAL_PROFILE(tc_step;REQ: RQ32_018_1, RQ57_135_4)
+ var steady36 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("S35-C1 final SW", "9000", steady36.final.sw);
+
+ // 步骤 37:SEQ06-3] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_017_1, RQ32_017_2, RQ57_128, RQ57_129, RQ57_132, RQ57_136, RQ57_137, RQ57_132_1)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla37 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+ var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S36-C1 SW", "9000", s37.sw);
+ var r2p37 = BindEs10xProcProfile.walkChoiceList(s37.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has37_0 = false;
+ for (var r2i37_0 = 0; r2i37_0 < r2p37.elements.length; r2i37_0++) {
+ var f = r2p37.elements[r2i37_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has37_0 = true; break; }
+ }
+ bind.checkData("S36-C2 contains PROFILE_INFO1", "1", (r2p37.branch_tag === "A0" && r2has37_0) ? "1" : "0");
+
+ // 步骤 38:SEQ06-4] [SELECT_ICCID(tc_step)
+ var s38 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S37-C1 SW", "9000", s38.sw);
+
+ // 步骤 39:SEQ06-5] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s39 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S38-C1 SW", "9000", s39.sw);
+ bind.checkData("S38-C2 READ_BINARY data", "989209012143658709F5", s39.resp);
+
+ // 步骤 40:SEQ07-IC3] MTD_SEND_SMS_PP(tc_step)
+ // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+ // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+ // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+ var s40 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+ bind.checkData("S39-C1 SW1 91", "91", s40.sw.substring(0, 2));
+
+ // 步骤 41:SEQ07-1] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla41 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain
+ var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "0101FF", profileAidSession), "00", null);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s41.cmd, profileAidSession);
+ bind.checkData("S40-C1 SW1 91", "91", s41.sw.substring(0, 2));
+ var r2w41 = BindGecaProc.parseGecaResponse(s41.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S40-C2 enableResult ok", "00", (r2w41.ok && r2w41.fields["80"] === "00") ? "00" : (r2w41.fields["80"] || "absent"));
+
+ // 步骤 42:SEQ07-2] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s42 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S41-C1 proactive command envelope", "1", (s42.resp.length >= 4 && s42.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S41-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S42:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s42tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s96 = bind.resetAndAtr();
+ bind.checkData("IC43-IC1-K1-C1 ATR_present", "1", s96.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s97 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC43-IC1-K2-C2 FCP_Template", "1", s97.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC43-IC1-K2-C4 SW", "9000", s97.sw);
+
+ // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s98 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC43-IC1-K3-C4 SW", "9000", s98.sw);
+
+ // IC ref inline @E 步骤 43(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady99 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC43-IC1-K4-C4 final SW", "9000", steady99.final.sw);
+
+ // IC ref inline @E 步骤 43(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s100 = bind.manageChannelOpen("9000");
+ bind.checkData("IC43-IC2-K1-C4 SW", "9000", s100.sw);
+ bind.checkData("IC43-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s100.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 43(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s101 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC43-IC2-K2-C4 SW", "9000", s101.sw);
+
+ // 步骤 44:SEQ07-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla44 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+ var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S43-C1 SW", "9000", s44.sw);
+ var r2p44 = BindEs10xProcProfile.walkChoiceList(s44.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has44_0 = false;
+ for (var r2i44_0 = 0; r2i44_0 < r2p44.elements.length; r2i44_0++) {
+ var f = r2p44.elements[r2i44_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has44_0 = true; break; }
+ }
+ bind.checkData("S43-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p44.branch_tag === "A0" && r2has44_0) ? "1" : "0");
+ var r2has44_0 = false;
+ for (var r2i44_0 = 0; r2i44_0 < r2p44.elements.length; r2i44_0++) {
+ var f = r2p44.elements[r2i44_0].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has44_0 = true; break; }
+ }
+ bind.checkData("S43-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p44.branch_tag === "A0" && r2has44_0) ? "1" : "0");
+
+ // 步骤 45:SEQ07-5] [SELECT_ICCID(tc_step)
+ var s45 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S44-C1 SW", "9000", s45.sw);
+
+ // 步骤 46:SEQ07-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s46 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S45-C1 SW", "9000", s46.sw);
+ bind.checkData("S45-C2 READ_BINARY data", "989209013254769810F9", s46.resp);
+
+ // 步骤 47:SEQ08-IC3] MTD_SEND_SMS_PP(tc_step)
+ // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+ // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+ // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+ var s47 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+ bind.checkData("S46-C1 SW1 91", "91", s47.sw.substring(0, 2));
+
+ // 步骤 48:SEQ08-1] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla48 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain
+ var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), "00", "9000");
+ bind.checkData("S47-C1 SW", "9000", s48.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s48.cmd, profileAidSession);
+ var r2w48 = BindGecaProc.parseGecaResponse(s48.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S47-C2 enableResult ok", "00", (r2w48.ok && r2w48.fields["80"] === "00") ? "00" : (r2w48.fields["80"] || "absent"));
+
+ // 步骤 49:SEQ08-2] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla49 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+ var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S48-C1 SW", "9000", s49.sw);
+ var r2p49 = BindEs10xProcProfile.walkChoiceList(s49.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has49_0 = false;
+ for (var r2i49_0 = 0; r2i49_0 < r2p49.elements.length; r2i49_0++) {
+ var f = r2p49.elements[r2i49_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has49_0 = true; break; }
+ }
+ bind.checkData("S48-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p49.branch_tag === "A0" && r2has49_0) ? "1" : "0");
+ var r2has49_0 = false;
+ for (var r2i49_0 = 0; r2i49_0 < r2p49.elements.length; r2i49_0++) {
+ var f = r2p49.elements[r2i49_0].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has49_0 = true; break; }
+ }
+ bind.checkData("S48-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p49.branch_tag === "A0" && r2has49_0) ? "1" : "0");
+
+ // 步骤 50:SEQ08-3] [SELECT_ICCID(tc_step)
+ var s50 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S49-C1 SW", "9000", s50.sw);
+
+ // 步骤 51:SEQ08-4] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s51 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S50-C1 SW", "9000", s51.sw);
+ bind.checkData("S50-C2 READ_BINARY data", "989209013254769810F9", s51.resp);
+
+ // 步骤 52:SEQ09-IC3] MTD_SEND_SMS_PP(tc_step)
+ // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+ // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+ // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+ var s52 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+ bind.checkData("S51-C1 SW1 91", "91", s52.sw.substring(0, 2));
+
+ // 步骤 53:SEQ09-1] FETCH 'XX'(tc_step)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s53 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S52-C1 proactive command envelope", "1", (s53.resp.length >= 4 && s53.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S52-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S53:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s53tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // 步骤 54:SEQ09-2] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla54 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain
+ var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "0101FF", profileAidSession), "00", "9000");
+ bind.checkData("S53-C1 SW", "9000", s54.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s54.cmd, profileAidSession);
+ var r2w54 = BindGecaProc.parseGecaResponse(s54.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S53-C2 enableResult ok", "00", (r2w54.ok && r2w54.fields["80"] === "00") ? "00" : (r2w54.fields["80"] || "absent"));
+
+ // 步骤 55:SEQ09-3] TERMINAL RESPONSE(tc_step)
+ // TERMINAL RESPONSE data is dynamically built by the binding from the
+ // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+ // Header literals follow the golden wire evidence 8014.
+ var s55 = bind.terminalResponseForPending("80", "14", "00", "00", null);
+ bind.checkData("S54-C1 SW1 91", "91", s55.sw.substring(0, 2));
+
+ // 步骤 56:SEQ09-4] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s56 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S55-C1 proactive command envelope", "1", (s56.resp.length >= 4 && s56.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S55-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S56:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s56tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s102 = bind.resetAndAtr();
+ bind.checkData("IC57-IC1-K1-C1 ATR_present", "1", s102.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s103 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC57-IC1-K2-C2 FCP_Template", "1", s103.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC57-IC1-K2-C4 SW", "9000", s103.sw);
+
+ // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s104 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC57-IC1-K3-C4 SW", "9000", s104.sw);
+
+ // IC ref inline @E 步骤 57(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady105 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC57-IC1-K4-C4 final SW", "9000", steady105.final.sw);
+
+ // IC ref inline @E 步骤 57(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s106 = bind.manageChannelOpen("9000");
+ bind.checkData("IC57-IC2-K1-C4 SW", "9000", s106.sw);
+ bind.checkData("IC57-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s106.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 57(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s107 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC57-IC2-K2-C4 SW", "9000", s107.sw);
+
+ // 步骤 58:SEQ09-6] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla58 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
+ var s58 = bind.sendApdu(sdCla58, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S57-C1 SW", "9000", s58.sw);
+ var r2p58 = BindEs10xProcProfile.walkChoiceList(s58.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has58_0 = false;
+ for (var r2i58_0 = 0; r2i58_0 < r2p58.elements.length; r2i58_0++) {
+ var f = r2p58.elements[r2i58_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has58_0 = true; break; }
+ }
+ bind.checkData("S57-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p58.branch_tag === "A0" && r2has58_0) ? "1" : "0");
+ var r2has58_0 = false;
+ for (var r2i58_0 = 0; r2i58_0 < r2p58.elements.length; r2i58_0++) {
+ var f = r2p58.elements[r2i58_0].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has58_0 = true; break; }
+ }
+ bind.checkData("S57-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p58.branch_tag === "A0" && r2has58_0) ? "1" : "0");
+
+ // 步骤 59:SEQ09-7] [SELECT_ICCID(tc_step)
+ var s59 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S58-C1 SW", "9000", s59.sw);
+
+ // 步骤 60:SEQ09-8] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s60 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S59-C1 SW", "9000", s60.sw);
+ bind.checkData("S59-C2 READ_BINARY data", "989209013254769810F9", s60.resp);
+
+ // 步骤 61:SEQ10-IC3] MTD_SEND_SMS_PP(tc_step)
+ // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+ // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+ // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+ var s61 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+ bind.checkData("S60-C1 SW1 91", "91", s61.sw.substring(0, 2));
+
+ // 步骤 62:SEQ10-1] FETCH 'XX'(tc_step)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s62 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S61-C1 proactive command envelope", "1", (s62.resp.length >= 4 && s62.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S61-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S62:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s62tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // 步骤 63:SEQ10-2] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla63 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain
+ var s63 = bind.sendApdu(sdCla63, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), "00", "9000");
+ bind.checkData("S62-C1 SW", "9000", s63.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s63.cmd, profileAidSession);
+ var r2w63 = BindGecaProc.parseGecaResponse(s63.resp, {outer: "BF31", required: ["80"]});
+ bind.checkData("S62-C2 enableResult ok", "00", (r2w63.ok && r2w63.fields["80"] === "00") ? "00" : (r2w63.fields["80"] || "absent"));
+
+ // 步骤 64:SEQ10-3] TERMINAL RESPONSE(tc_step)
+ // TERMINAL RESPONSE data is dynamically built by the binding from the
+ // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+ // Header literals follow the golden wire evidence 8014.
+ var s64 = bind.terminalResponseForPending("80", "14", "00", "00", null);
+ bind.checkData("S63-C1 SW1 != 91", "1", s64.sw.substring(0, 2) !== "91" ? "1" : "0");
+
+ // 步骤 65:SEQ10-4] MTD_STORE_DATA(tc_step;REQ: RQ32_011)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla65 = s106.chan !== null ? (s106.chan <= 3 ? 128 + s106.chan : 188 + s106.chan).toString(16).toUpperCase() : null;
+ var s65 = bind.sendApdu(sdCla65, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S64-C1 SW", "9000", s65.sw);
+ var r2p65 = BindEs10xProcProfile.walkChoiceList(s65.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has65_0 = false;
+ for (var r2i65_0 = 0; r2i65_0 < r2p65.elements.length; r2i65_0++) {
+ var f = r2p65.elements[r2i65_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has65_0 = true; break; }
+ }
+ bind.checkData("S64-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p65.branch_tag === "A0" && r2has65_0) ? "1" : "0");
+ var r2has65_0 = false;
+ for (var r2i65_0 = 0; r2i65_0 < r2p65.elements.length; r2i65_0++) {
+ var f = r2p65.elements[r2i65_0].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has65_0 = true; break; }
+ }
+ bind.checkData("S64-C3 contains PROFILE_INFO2_ENABLED", "1", (r2p65.branch_tag === "A0" && r2has65_0) ? "1" : "0");
+
+ // 步骤 66:SEQ10-5] [SELECT_ICCID(tc_step)
+ var s66 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "9000");
+ bind.checkData("S65-C1 SW", "9000", s66.sw);
+
+ // 步骤 67:SEQ10-6] [READ_BINARY] with <L>=0x0A(tc_step;REQ: RQ34_015)
+ var s67 = bind.sendApdu("00", "B0", "00", "00", null, "0A", "9000");
+ bind.checkData("S66-C1 SW", "9000", s67.sw);
+ bind.checkData("S66-C2 READ_BINARY data", "989209013254769810F9", s67.resp);
}