源码对照:4.2.22.2.1
ES10c 停用 Profile(Case 3) / TC_eUICC_ES10c.DisableProfile_Case3
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
891 行 / 34823 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_DisableProfile_Case3/Import/TC_eUICC_ES10c_DisableProfile_Case3.js
699 行 / 55487 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js891 行 / 34823 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_DisableProfile_Case3_01_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_DisableProfile_Case3_02_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_DisableProfile_Case3_03_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_DisableProfile_Case3_04_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_DisableProfile_Case3_05_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_not_set + TC_eUICC_ES10c_DisableProfile_Case3_06_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_not_set + TC_eUICC_ES10c_DisableProfile_Case3_07_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_set_while_proactive_sessionisongoing_catBusynotsupported + TC_eUICC_ES10c_DisableProfile_Case3_08_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_not_set_while_proactive_sessionisongoing_catBusynotsupported + TC_eUICC_ES10c_DisableProfile_Case3_09_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_set_while_proactive_sessionisongoing_withTerminalResponseoutstanding_catBusynotsupported + TC_eUICC_ES10c_DisableProfile_Case3_10_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_not_set_while_proactive_sessionisongoing_withTerminalResponseoutstanding_catBusynotsupported (extracted verbatim)
2
3function TC_eUICC_ES10c_DisableProfile_Case3_01_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
4{
5 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
6 var ISD_P_Test01 = curProfile_ISD_P_AID;
7
8 tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ISD-P AID去失效profile,并设置refreshFlag";
9 curDis.TraceStart(sno++,tracenamestr);
10
11 curLogicChannel = 0;
12 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
13 Ini_powerOn_eUICC_LPAe_not_activate();
14
15 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
16 TS_MANAGE_CHANNEL_OPEN();
17
18 curLogicChannel = 1;
19
20 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
21 TS_SELECT("Select ISD",ISD_R_AID,"9000");
22
23 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为FF;");
24 var disableProRequest = new DisableProfileRequest();
25 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
26 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
27 disableProRequest.GenHexData();
28 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
29
30 curStrHandle.CheckData("", respData, "DisableProfileResponse");
31
32 curLogicChannel = 0;
33 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
34
35 FetchStr = Fetch("","9000","");
36
37 var CmdDetails = GetValueByTag("01",1);
38 var CmdQualifier = CmdDetails.substr(4,2);
39 CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
40
41 curLogicChannel = 0;
42 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
43 Ini_powerOn_eUICC_LPAe_not_activate();
44
45 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
46 TS_MANAGE_CHANNEL_OPEN();
47
48 curLogicChannel = 1;
49
50 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
51 TS_SELECT("Select ISD",ISD_R_AID,"9000");
52
53 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
54 var proInfoListRequest = new ProfileInfoListRequest();
55 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
56 proInfoListRequest.tagList = "5A4F9F70";
57 proInfoListRequest.GenHexData();
58 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
59
60
61 var proInfoListResponse = new ProfileInfoListResponse();
62 proInfoListResponse.checkCardResDataFormat(respData);
63
64 try
65 {
66 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
67 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
68 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
69 }catch(e){
70 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
71 }
72
73 curLogicChannel = 0;
74 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
75 var para1 = new SelectFileEFPara_3G("2FE2");
76 para1.apdu.ressw = "6A82";
77 SendAPDU(para1.apdu);
78
79 RecoverCard();
80
81}
82
83function TC_eUICC_ES10c_DisableProfile_Case3_02_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
84{
85 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
86 var ISD_P_Test01 = curProfile_ISD_P_AID;
87
88 tracenamestr = "测试目的:设备支持 “UICC Reset”,通过ICCID去失效profile,并设置refreshFlag";
89 curDis.TraceStart(sno++,tracenamestr);
90
91 curLogicChannel = 0;
92 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
93 Ini_powerOn_eUICC_LPAe_not_activate();
94
95 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
96 TS_MANAGE_CHANNEL_OPEN();
97
98 curLogicChannel = 1;
99
100 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
101 TS_SELECT("Select ISD",ISD_R_AID,"9000");
102
103 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为FF;");
104 var disableProRequest = new DisableProfileRequest();
105 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
106 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
107 disableProRequest.GenHexData();
108 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
109
110 curStrHandle.CheckData("", respData, "DisableProfileResponse");
111
112 curLogicChannel = 0;
113 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
114
115 FetchStr = Fetch("","9000","");
116
117 var CmdDetails = GetValueByTag("01",1);
118 var CmdQualifier = CmdDetails.substr(4,2);
119 CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
120
121 curLogicChannel = 0;
122 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
123 Ini_powerOn_eUICC_LPAe_not_activate();
124
125 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
126 TS_MANAGE_CHANNEL_OPEN();
127
128 curLogicChannel = 1;
129
130 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
131 TS_SELECT("Select ISD",ISD_R_AID,"9000");
132
133 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
134 var proInfoListRequest = new ProfileInfoListRequest();
135 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
136 proInfoListRequest.tagList = "5A4F9F70";
137 proInfoListRequest.GenHexData();
138 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
139
140
141 var proInfoListResponse = new ProfileInfoListResponse();
142 proInfoListResponse.checkCardResDataFormat(respData);
143
144 try
145 {
146 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
147 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
148 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
149 }catch(e){
150 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
151 }
152
153 curLogicChannel = 0;
154 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
155 var para1 = new SelectFileEFPara_3G("2FE2");
156 para1.apdu.ressw = "6A82";
157 SendAPDU(para1.apdu);
158
159 RecoverCard();
160}
161
162function TC_eUICC_ES10c_DisableProfile_Case3_03_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
163{
164 if(!Card_Have_ECC_Cert)
165 return;
166
167 TestOfMEPMode = 0;
168
169 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
170 var ISD_P_Test01 = curProfile_ISD_P_AID;
171
172 tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ISD-P AID去失效profile,并设置refreshFlag";
173 curDis.TraceStart(sno++,tracenamestr);
174
175 curLogicChannel = 0;
176
177 TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;//add 20260423
178 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
179 Ini_powerOn_eUICC_LPAe_not_activate();
180
181
182 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
183 TS_MANAGE_CHANNEL_OPEN();
184
185 curLogicChannel = 1;
186
187 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
188 TS_SELECT("Select ISD",ISD_R_AID,"9000");
189
190 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为FF;");
191 var disableProRequest = new DisableProfileRequest();
192 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
193 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
194 disableProRequest.GenHexData();
195 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
196
197 curStrHandle.CheckData("", respData, "DisableProfileResponse");
198
199
200 curLogicChannel = 0;
201 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
202
203 FetchStr = Fetch("","9000","");
204
205 var CmdDetails = GetValueByTag("01",1);
206 var CmdQualifier = CmdDetails.substr(4,2);
207 CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");//'09' = eUICC Profile State Change; 102.223-8.6
208
209 TerminalResponse("00","9000");
210
211
212 curLogicChannel = 0;
213 curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
214
215 curLogicChannel = 0;
216
217 if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
218 TS_TERMINAL_CAPABILITY_cmd();
219 else
220 obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
221
222 IniCard_SetUpMenu("",1);
223
224
225
226 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
227 TS_MANAGE_CHANNEL_OPEN();
228
229 curLogicChannel = 1;
230
231 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
232 TS_SELECT("Select ISD",ISD_R_AID,"9000");
233
234 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
235
236 var proInfoListRequest = new ProfileInfoListRequest();
237 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
238 proInfoListRequest.tagList = "5A4F9F70";
239 proInfoListRequest.GenHexData();
240 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
241
242
243 var proInfoListResponse = new ProfileInfoListResponse();
244 proInfoListResponse.checkCardResDataFormat(respData);
245
246 try
247 {
248 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
249 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
250 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
251 }catch(e){
252 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
253 }
254
255 curLogicChannel = 0;
256 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
257 var para1 = new SelectFileEFPara_3G("2FE2");
258 para1.apdu.ressw = "6A82";
259 SendAPDU(para1.apdu);
260
261 RecoverCard();
262}
263
264function TC_eUICC_ES10c_DisableProfile_Case3_04_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
265{
266 if(!Card_Have_ECC_Cert)
267 return;
268
269 TestOfMEPMode = 0;
270
271 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
272 var ISD_P_Test01 = curProfile_ISD_P_AID;
273
274 tracenamestr = "测试目的:设备支持 “eUICC Profile State Change”,通过ICCID去失效profile,并设置refreshFlag";
275 curDis.TraceStart(sno++,tracenamestr);
276
277 curLogicChannel = 0;
278
279 TERMINAL_PROFILE_Default = TERMINAL_PROFILE_eUICCProfileStateChanged;//add 20260423
280 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
281 Ini_powerOn_eUICC_LPAe_not_activate();
282
283
284 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
285 TS_MANAGE_CHANNEL_OPEN();
286
287 curLogicChannel = 1;
288
289 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
290 TS_SELECT("Select ISD",ISD_R_AID,"9000");
291
292 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为FF;");
293 var disableProRequest = new DisableProfileRequest();
294 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
295 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
296 disableProRequest.GenHexData();
297 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
298
299 curStrHandle.CheckData("", respData, "DisableProfileResponse");
300
301
302 curLogicChannel = 0;
303 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
304
305 FetchStr = Fetch("","9000","");
306
307 var CmdDetails = GetValueByTag("01",1);
308 var CmdQualifier = CmdDetails.substr(4,2);
309 CheckData("09",CmdQualifier,"the command qualifier is equal to ’09’ (eUICC Profile State Change)");//'09' = eUICC Profile State Change; 102.223-8.6
310
311 TerminalResponse("00","9000");
312
313
314 curLogicChannel = 0;
315 curDis.TestStepStart2(stno++,"eUICC卡片初始化:从第 2 步到第 4 步,[SELECT_MF]、[TERMINAL_CAPABILITY_LPAd] 、[TERMINAL_PROFILE_eUICCProfileStateChanged] ");
316
317 curLogicChannel = 0;
318
319 if (check_eUICC_support_TERMINAL_CAPABILITY_cmd())
320 TS_TERMINAL_CAPABILITY_cmd();
321 else
322 obj.SubLevel("eUICC不支持”TERMINAL_CAPABILITY“命令", level_of_SubLevel.warning);
323
324 IniCard_SetUpMenu("",1);
325
326
327
328 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
329 TS_MANAGE_CHANNEL_OPEN();
330
331 curLogicChannel = 1;
332
333 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
334 TS_SELECT("Select ISD",ISD_R_AID,"9000");
335
336 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
337
338 var proInfoListRequest = new ProfileInfoListRequest();
339 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
340 proInfoListRequest.tagList = "5A4F9F70";
341 proInfoListRequest.GenHexData();
342 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
343
344
345 var proInfoListResponse = new ProfileInfoListResponse();
346 proInfoListResponse.checkCardResDataFormat(respData);
347
348 try
349 {
350 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
351 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
352 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
353 }catch(e){
354 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
355 }
356
357 curLogicChannel = 0;
358 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
359 var para1 = new SelectFileEFPara_3G("2FE2");
360 para1.apdu.ressw = "6A82";
361 SendAPDU(para1.apdu);
362
363 RecoverCard();
364}
365
366function TC_eUICC_ES10c_DisableProfile_Case3_05_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_not_set()
367{
368 if(!Card_Have_ECC_Cert)
369 return;
370
371 TestOfMEPMode = 0;
372
373 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
374 var ISD_P_Test01 = curProfile_ISD_P_AID;
375
376 tracenamestr = "测试目的:通过ISD-P AID去失效profile,不设置refreshFlag";
377 curDis.TraceStart(sno++,tracenamestr);
378
379 curLogicChannel = 0;
380 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
381 Ini_powerOn_eUICC_LPAe_not_activate();
382
383 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
384 TS_MANAGE_CHANNEL_OPEN();
385
386 curLogicChannel = 1;
387
388 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
389 TS_SELECT("Select ISD",ISD_R_AID,"9000");
390
391
392 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为False;");
393 var disableProRequest = new DisableProfileRequest();
394 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
395 disableProRequest.refreshFlag = BooleanValue_BerCode_False;
396 disableProRequest.GenHexData();
397 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
398
399 curStrHandle.CheckData("", respData, "DisableProfileResponse");
400
401
402 curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
403 IniCard_SetUpMenu("",1);
404
405
406 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
407 TS_MANAGE_CHANNEL_OPEN();
408 curLogicChannel = 1;
409 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
410 TS_SELECT("Select ISD",ISD_R_AID,"9000");
411
412 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
413
414 var proInfoListRequest = new ProfileInfoListRequest();
415 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
416 proInfoListRequest.tagList = "5A4F9F70";
417 proInfoListRequest.GenHexData();
418 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
419
420
421 var proInfoListResponse = new ProfileInfoListResponse();
422 proInfoListResponse.checkCardResDataFormat(respData);
423
424 try
425 {
426 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
427 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
428 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
429 }catch(e){
430 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
431 }
432
433 curLogicChannel = 0;
434 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
435 var para1 = new SelectFileEFPara_3G("2FE2");
436 para1.apdu.ressw = "6A82";
437 SendAPDU(para1.apdu);
438
439 RecoverCard();
440
441}
442
443function TC_eUICC_ES10c_DisableProfile_Case3_06_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_not_set()
444{
445 if(!Card_Have_ECC_Cert)
446 return;
447
448 TestOfMEPMode = 0;
449
450 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
451 var ISD_P_Test01 = curProfile_ISD_P_AID;
452
453 tracenamestr = "测试目的:通过ICCID去失效profile,不设置refreshFlag";
454 curDis.TraceStart(sno++,tracenamestr);
455
456 curLogicChannel = 0;
457 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
458 Ini_powerOn_eUICC_LPAe_not_activate();
459
460 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
461 TS_MANAGE_CHANNEL_OPEN();
462
463 curLogicChannel = 1;
464
465 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
466 TS_SELECT("Select ISD",ISD_R_AID,"9000");
467
468
469 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为False;");
470
471 var disableProRequest = new DisableProfileRequest();
472 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
473 disableProRequest.refreshFlag = BooleanValue_BerCode_False;
474 disableProRequest.GenHexData();
475 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
476
477 curStrHandle.CheckData("", respData, "DisableProfileResponse");
478
479 curDis.TestStepStart2(stno++,"读卡器向卡片发送 TERMINAL_PROFILE命令;");
480 IniCard_SetUpMenu("",1);
481
482
483 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
484 TS_MANAGE_CHANNEL_OPEN();
485 curLogicChannel = 1;
486 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
487 TS_SELECT("Select ISD",ISD_R_AID,"9000");
488
489 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
490 var proInfoListRequest = new ProfileInfoListRequest();
491 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
492 proInfoListRequest.tagList = "5A4F9F70";
493 proInfoListRequest.GenHexData();
494 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
495
496
497 var proInfoListResponse = new ProfileInfoListResponse();
498 proInfoListResponse.checkCardResDataFormat(respData);
499
500 try
501 {
502 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
503 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
504 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
505 }catch(e){
506 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
507 }
508
509 curLogicChannel = 0;
510 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
511 var para1 = new SelectFileEFPara_3G("2FE2");
512 para1.apdu.ressw = "6A82";
513 SendAPDU(para1.apdu);
514
515 RecoverCard();
516
517}
518
519function TC_eUICC_ES10c_DisableProfile_Case3_07_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_set_while_proactive_sessionisongoing_catBusynotsupported()
520{
521
522 //测试入口条件
523 if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
524 return;
525
526 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
527 var ISD_P_Test01 = curProfile_ISD_P_AID;
528
529
530 tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ICCID去失效profile,并设置refreshFlag";
531 curDis.TraceStart(sno++,tracenamestr);
532
533 curLogicChannel = 0;
534 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
535 Ini_powerOn_eUICC_LPAe_not_activate();
536
537 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
538 TS_MANAGE_CHANNEL_OPEN();
539 curLogicChannel = 1;
540
541 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
542 TS_SELECT("Select ISD",ISD_R_AID,"9000");
543
544 curLogicChannel = 0;
545 var sSendType = SendTypeByOTA.SMS;
546 KIC = MNO_SCP80_ENC_KEY;
547 KID = MNO_SCP80_AUTH_KEY;
548 KIK = MNO_SCP80_DATA_ENC_KEY;
549 curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
550 sAPDU = "80F28002024F00";
551 SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
552 HaveReEntry91XX = true;
553 var ss = obj.GetState();
554 ReEntry91XXLength = ss.substr(2,2);
555
556 curLogicChannel = 1;
557 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为FF;");
558 var disableProRequest = new DisableProfileRequest();
559 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
560 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
561 disableProRequest.GenHexData();
562 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
563 curStrHandle.CheckData("", respData, "DisableProfileResponse");
564
565 curLogicChannel = 0;
566 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Fetch命令,主动式命令refresh;");
567 FetchStr = Fetch("","9000","");
568
569 var CmdDetails = GetValueByTag("01",1);
570 var CmdQualifier = CmdDetails.substr(4,2);
571 CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
572
573
574 curLogicChannel = 0;
575 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
576 Ini_powerOn_eUICC_LPAe_not_activate();
577
578 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
579 TS_MANAGE_CHANNEL_OPEN();
580
581 curLogicChannel = 1;
582 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
583 TS_SELECT("Select ISD",ISD_R_AID,"9000");
584
585
586 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
587 var proInfoListRequest = new ProfileInfoListRequest();
588 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
589 proInfoListRequest.tagList = "5A4F9F70";
590 proInfoListRequest.GenHexData();
591 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
592
593 var proInfoListResponse = new ProfileInfoListResponse();
594 proInfoListResponse.checkCardResDataFormat(respData);
595
596 try
597 {
598 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
599 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
600 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
601 }catch(e){
602 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
603 }
604
605 curLogicChannel = 0;
606 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
607 var para1 = new SelectFileEFPara_3G("2FE2");
608 para1.apdu.ressw = "6A82";
609 SendAPDU(para1.apdu);
610
611 RecoverCard();
612}
613
614function TC_eUICC_ES10c_DisableProfile_Case3_08_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_not_set_while_proactive_sessionisongoing_catBusynotsupported()
615{
616
617 //测试入口条件
618 if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
619 return;
620
621 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
622 var ISD_P_Test01 = curProfile_ISD_P_AID;
623
624
625 tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过ICCID去失效profile,不设置refreshFlag";
626 curDis.TraceStart(sno++,tracenamestr);
627
628 curLogicChannel = 0;
629 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
630 Ini_powerOn_eUICC_LPAe_not_activate();
631
632 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
633 TS_MANAGE_CHANNEL_OPEN();
634 curLogicChannel = 1;
635
636 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
637 TS_SELECT("Select ISD",ISD_R_AID,"9000");
638
639 curLogicChannel = 0;
640 var sSendType = SendTypeByOTA.SMS;
641 KIC = MNO_SCP80_ENC_KEY;
642 KID = MNO_SCP80_AUTH_KEY;
643 KIK = MNO_SCP80_DATA_ENC_KEY;
644 curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
645 sAPDU = "80F28002024F00";
646 SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
647 HaveReEntry91XX = true;
648 var ss = obj.GetState();
649 ReEntry91XXLength = ss.substr(2,2);
650
651 curLogicChannel = 1;
652 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为False;");
653 var disableProRequest = new DisableProfileRequest();
654 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
655 disableProRequest.refreshFlag = BooleanValue_BerCode_False;
656 disableProRequest.GenHexData();
657 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
658 curStrHandle.CheckData("", respData, "DisableProfileResponse");
659
660
661 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
662 var proInfoListRequest = new ProfileInfoListRequest();
663 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
664 proInfoListRequest.tagList = "5A4F9F70";
665 proInfoListRequest.GenHexData();
666 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
667
668 var proInfoListResponse = new ProfileInfoListResponse();
669 proInfoListResponse.checkCardResDataFormat(respData);
670
671 try
672 {
673 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
674 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
675 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
676 }catch(e){
677 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
678 }
679
680 curLogicChannel = 0;
681 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
682 var para1 = new SelectFileEFPara_3G("2FE2");
683 para1.apdu.ressw = "6A82";
684 SendAPDU(para1.apdu);
685
686 RecoverCard();
687}
688
689function TC_eUICC_ES10c_DisableProfile_Case3_09_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_set_while_proactive_sessionisongoing_withTerminalResponseoutstanding_catBusynotsupported()
690{
691 //测试入口条件
692 if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
693 return;
694
695 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
696 var ISD_P_Test01 = curProfile_ISD_P_AID;
697
698
699 tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ICCID去失效profile,设置refreshFlag";
700 curDis.TraceStart(sno++,tracenamestr);
701
702 curLogicChannel = 0;
703 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
704 Ini_powerOn_eUICC_LPAe_not_activate();
705
706 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
707 TS_MANAGE_CHANNEL_OPEN();
708 curLogicChannel = 1;
709
710 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
711 TS_SELECT("Select ISD",ISD_R_AID,"9000");
712
713 curLogicChannel = 0;
714 curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
715
716 var sSendType = SendTypeByOTA.SMS;
717 KIC = MNO_SCP80_ENC_KEY;
718 KID = MNO_SCP80_AUTH_KEY;
719 KIK = MNO_SCP80_DATA_ENC_KEY;
720 sAPDU = "80F28002024F00";
721 SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
722 HaveReEntry91XX = true;
723 var ss = obj.GetState();
724 ReEntry91XXLength = ss.substr(2,2);
725
726 curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
727 curLogicChannel = 0;
728 CardSendMessageToServer(sSendType,1,"0161XX","00");
729
730
731
732 curLogicChannel = 1;
733 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为FF;");
734 var disableProRequest = new DisableProfileRequest();
735 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
736 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
737 disableProRequest.GenHexData();
738 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
739 curStrHandle.CheckData("", respData, "DisableProfileResponse");
740
741 curLogicChannel = 0;
742 curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
743 TerminalResponse("00","91XX");
744 var ss = obj.GetState();
745 HaveReEntry91XX = false;
746
747
748 curDis.TestStepStart2(stno++,"Fetch;");
749 FetchStr = Fetch(ss.substr(2),"9000","");
750 var CmdDetails = GetValueByTag("01",1);
751 var CmdQualifier = CmdDetails.substr(4,2);
752 curStrHandle.CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
753
754
755 curLogicChannel = 0;
756 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
757 Ini_powerOn_eUICC_LPAe_not_activate();
758
759 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
760 TS_MANAGE_CHANNEL_OPEN();
761 curLogicChannel = 1;
762
763 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
764 TS_SELECT("Select ISD",ISD_R_AID,"9000");
765
766 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile1状态;");
767 var proInfoListRequest = new ProfileInfoListRequest();
768 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
769 proInfoListRequest.tagList = "5A4F9F70";
770 proInfoListRequest.GenHexData();
771 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
772
773 var proInfoListResponse = new ProfileInfoListResponse();
774 proInfoListResponse.checkCardResDataFormat(respData);
775
776 try
777 {
778 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
779 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
780 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
781 }catch(e){
782 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
783 }
784
785
786
787 curLogicChannel = 0;
788 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
789 var para1 = new SelectFileEFPara_3G("2FE2");
790 SendAPDU(para1.apdu);
791
792 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
793 var para1 = new ReadBinaryPara_3G("00","00","0A");
794 para1.apdu.ressw = "6A82";
795 SendAPDU(para1.apdu);
796
797 RecoverCard();
798}
799
800function TC_eUICC_ES10c_DisableProfile_Case3_10_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_not_set_while_proactive_sessionisongoing_withTerminalResponseoutstanding_catBusynotsupported()
801{
802 //测试入口条件
803 if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
804 return;
805
806 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
807 var ISD_P_Test01 = curProfile_ISD_P_AID;
808
809
810 tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过ICCID去失效profile,不设置refreshFlag";
811 curDis.TraceStart(sno++,tracenamestr);
812
813 curLogicChannel = 0;
814 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
815 Ini_powerOn_eUICC_LPAe_not_activate();
816
817 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
818 TS_MANAGE_CHANNEL_OPEN();
819 curLogicChannel = 1;
820
821 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
822 TS_SELECT("Select ISD",ISD_R_AID,"9000");
823
824 curLogicChannel = 0;
825 curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
826
827 var sSendType = SendTypeByOTA.SMS;
828 KIC = MNO_SCP80_ENC_KEY;
829 KID = MNO_SCP80_AUTH_KEY;
830 KIK = MNO_SCP80_DATA_ENC_KEY;
831 sAPDU = "80F28002024F00";
832 SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
833 HaveReEntry91XX = true;
834 var ss = obj.GetState();
835 ReEntry91XXLength = ss.substr(2,2);
836
837 curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
838 curLogicChannel = 0;
839 CardSendMessageToServer(sSendType,1,"0161XX","00");
840
841
842
843 curLogicChannel = 1;
844 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为Flase;");
845 var disableProRequest = new DisableProfileRequest();
846 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
847 disableProRequest.refreshFlag = BooleanValue_BerCode_False;
848 disableProRequest.GenHexData();
849 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
850 curStrHandle.CheckData("", respData, "DisableProfileResponse");
851
852 curLogicChannel = 0;
853 curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
854 TerminalResponse("00","91XX");
855 var ss = obj.GetState();
856 HaveReEntry91XX = false;
857
858
859 curLogicChannel = 1;
860 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile1状态;");
861 var proInfoListRequest = new ProfileInfoListRequest();
862 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
863 proInfoListRequest.tagList = "5A4F9F70";
864 proInfoListRequest.GenHexData();
865 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
866
867 var proInfoListResponse = new ProfileInfoListResponse();
868 proInfoListResponse.checkCardResDataFormat(respData);
869
870 try
871 {
872 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
873 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
874 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
875 }catch(e){
876 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
877 }
878
879 curLogicChannel = 0;
880 curDis.TestStepStart2(stno++,"读卡器向卡片发送 Select命令,选择ICCID;");
881 var para1 = new SelectFileEFPara_3G("2FE2");
882 SendAPDU(para1.apdu);
883
884 curDis.TestStepStart2(stno++,"读卡器向卡片发送read binary命令;");
885 var para1 = new ReadBinaryPara_3G("00","00","0A");
886 para1.apdu.ressw = "6A82";
887 SendAPDU(para1.apdu);
888
889 RecoverCard();
890}
891
-cas 盲生成TC_eUICC_ES10c_DisableProfile_Case3/Import/TC_eUICC_ES10c_DisableProfile_Case3.js699 行 / 55487 字符 / gb18030
1// Author: 卡思Cas智能体
2// Date: 20261005-152741
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.DisableProfile_Case3,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-C2 response data absent;S1-C1 SW1 91;S2-C1 proactive command envelope
8// IC4-IC1-K1-C1 ATR_present;IC4-IC1-K2-C2 FCP_Template;IC4-IC1-K2-C4 SW;IC4-IC1-K3-C4 SW
9// IC4-IC1-K4-C4 final SW;IC4-IC2-K1-C4 SW;IC4-IC2-K1-C3 CHANNEL_NUMBER extracted;IC4-IC2-K2-C4 SW
10// S4-C1 SW;S4-C2 contains PROFILE_INFO1_DISABLED;S5-C1 SW;S6-C2 response data absent;S6-C1 SW1 91
11// S7-C1 proactive command envelope;IC9-IC1-K1-C1 ATR_present;IC9-IC1-K2-C2 FCP_Template
12// IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW;IC9-IC1-K4-C4 final SW;IC9-IC2-K1-C4 SW
13// IC9-IC2-K1-C3 CHANNEL_NUMBER extracted;IC9-IC2-K2-C4 SW;S9-C1 SW
14// S9-C2 contains PROFILE_INFO1_DISABLED;S10-C1 SW;S11-C2 response data absent;S11-C1 SW1 91
15// S12-C1 proactive command envelope;S13-C1 SW;IC15-IC1-K2-C2 FCP_Template;IC15-IC1-K2-C4 SW
16// IC15-IC1-K3-C4 SW;IC15-IC1-K4-C4 final SW;IC16-IC2-K1-C4 SW
17// IC16-IC2-K1-C3 CHANNEL_NUMBER extracted;IC16-IC2-K2-C4 SW;S16-C1 SW
18// S16-C2 contains PROFILE_INFO1_DISABLED;S17-C1 SW;S18-C2 response data absent;S18-C1 SW1 91
19// S19-C1 proactive command envelope;S20-C1 SW;IC22-IC1-K2-C2 FCP_Template;IC22-IC1-K2-C4 SW
20// IC22-IC1-K3-C4 SW;IC22-IC1-K4-C4 final SW;IC23-IC2-K1-C4 SW
21// IC23-IC2-K1-C3 CHANNEL_NUMBER extracted;IC23-IC2-K2-C4 SW;S23-C1 SW
22// S23-C2 contains PROFILE_INFO1_DISABLED;S24-C1 SW;S25-C1 SW;S25-C2 response data absent
23// S26-C1 SW;S26-C2 contains PROFILE_INFO1_DISABLED;S27-C1 SW;S28-C1 SW
24// S28-C2 response data absent;S29-C1 SW;S29-C2 contains PROFILE_INFO1_DISABLED;S30-C1 SW
25// S31-C1 SW1 91;S32-C2 response data absent;S32-C1 SW1 91;S33-C1 proactive command envelope
26// IC35-IC1-K1-C1 ATR_present;IC35-IC1-K2-C2 FCP_Template;IC35-IC1-K2-C4 SW;IC35-IC1-K3-C4 SW
27// IC35-IC1-K4-C4 final SW;IC35-IC2-K1-C4 SW;IC35-IC2-K1-C3 CHANNEL_NUMBER extracted
28// IC35-IC2-K2-C4 SW;S35-C1 SW;S35-C2 contains PROFILE_INFO1_DISABLED;S36-C1 SW;S37-C1 SW1 91
29// S38-C1 SW;S38-C2 response data absent;S39-C1 SW;S39-C2 contains PROFILE_INFO1_DISABLED
30// S40-C1 SW;S41-C1 SW1 91;S42-C1 proactive command envelope;S43-C1 SW;S43-C2 response data absent
31// S44-C1 SW1 91;S45-C1 proactive command envelope;IC47-IC1-K1-C1 ATR_present
32// IC47-IC1-K2-C2 FCP_Template;IC47-IC1-K2-C4 SW;IC47-IC1-K3-C4 SW;IC47-IC1-K4-C4 final SW
33// IC47-IC2-K1-C4 SW;IC47-IC2-K1-C3 CHANNEL_NUMBER extracted;IC47-IC2-K2-C4 SW;S47-C1 SW
34// S47-C2 contains PROFILE_INFO1_DISABLED;S48-C1 SW;S49-C1 SW1 91
35// S50-C1 proactive command envelope;S51-C1 SW;S51-C2 response data absent;S52-C1 SW1 != 91
36// S53-C1 SW;S53-C2 contains PROFILE_INFO1_DISABLED;S54-C1 SW
37// 本函数由 CaseIR 4.2.22.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA2,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
38// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
39// 适用性 M:编译期门,运行时由 harness 环境前置承担。
40function TC_eUICC_ES10c_DisableProfile_Case3_01_10_Nominal_all_10_sequences() {
41 var bind = curBind;
42 var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_DisableProfile_Case3_01_10_Nominal_all_10_sequences");
43 // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "4336cd72d19df228", "authority_reference": "E_tc_4222/38-38/G_annexB_dynamic:L51"}
44 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});
45 // 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).
46 // SEQ01-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
47 // 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).
48 // SEQ02-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
49 // SEQ02-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
50 // SEQ02-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
51 // SEQ03-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
52 // 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).
53 // SEQ03-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
54 // SEQ03-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
55 // SEQ04-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
56 // SEQ04-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
57 // SEQ04-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
58 // SEQ05-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
59 // 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).
60 // SEQ05-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
61 // SEQ05-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
62 // SEQ06-IC-T1 eUICC: The PROFILE_OPERATIONAL1 is Enabled on the eUICC.: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
63 // SEQ06-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
64 // SEQ06-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
65 // 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).
66 // SEQ07-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
67 // SEQ07-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
68 // SEQ07-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
69 // 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).
70 // SEQ08-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
71 // SEQ08-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
72 // SEQ08-IC4 Do not send FETCH command: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
73 // 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).
74 // SEQ09-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
75 // SEQ09-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
76 // 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).
77 // SEQ10-IC1 PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
78 // SEQ10-IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
79 // PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
80
81 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
82 var s56 = bind.resetAndAtr();
83 bind.checkData("ICH-SEQ01-IC1-K1-C1 ATR_present", "1", s56.atr_hex !== "" ? "1" : "0");
84
85 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
86 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
87 var s57 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
88 bind.checkData("ICH-SEQ01-IC1-K2-C2 FCP_Template", "1", s57.resp.length > 0 ? "1" : "0");
89 bind.checkData("ICH-SEQ01-IC1-K2-C4 SW", "9000", s57.sw);
90
91 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
92 var s58 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
93 bind.checkData("ICH-SEQ01-IC1-K3-C4 SW", "9000", s58.sw);
94
95 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
96 var steady59 = bind.runToSteadyState(function () {
97 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
98 });
99 bind.checkData("ICH-SEQ01-IC1-K4-C4 final SW", "9000", steady59.final.sw);
100
101 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
102 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
103 var s60 = bind.manageChannelOpen("9000");
104 bind.checkData("ICH-SEQ01-IC2-K1-C4 SW", "9000", s60.sw);
105 bind.checkData("ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s60.chan !== null ? "1" : "0");
106
107 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
108 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
109 var s61 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
110 // 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.
111 bind.checkData("ICH-SEQ01-IC2-K2-C4 SW", "9000", s61.sw);
112
113 // 步骤 1:MTD_STORE_DATA(tc_step)
114 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
115 var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
116
117 // 步骤 2:SEQ01-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151, RQ24_010)
118 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
119 var sdCla2 = s60.chan !== null ? (s60.chan <= 3 ? 128 + s60.chan : 188 + s60.chan).toString(16).toUpperCase() : null;
120 // runtime-bound payload: ISD_P_AID1 stays in execution domain
121 var s2 = bind.sendApdu(sdCla2, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "0101FF", profileAidSession), null, null);
122 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s2.cmd, profileAidSession);
123 bind.checkData("S1-C2 response data absent", "1", s2.resp === "" ? "1" : "0");
124 bind.checkData("S1-C1 SW1 91", "91", s2.sw.substring(0, 2));
125
126 // 步骤 3:SEQ01-2] FETCH 'XX'(tc_step;REQ: RQ32_038, RQ32_039, RQ32_039_1, RQ32_041_2, RQ57_142_13, RQ57_142_14)
127 // FETCH header literals follow the golden wire evidence 8012 (same
128 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
129 // gives mechanism only). Le = pending length from the last 91XX
130 // (chain rule, binding-internal state).
131 var s3 = bind.fetchPending("80", "12", "00", "00", null);
132 bind.checkData("S2-C1 proactive command envelope", "1", (s3.resp.length >= 4 && s3.resp.substring(0, 2) === "D0") ? "1" : "0");
133 // S2-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
134 // S3:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
135 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
136 var s3tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
137
138 // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
139 var s62 = bind.resetAndAtr();
140 bind.checkData("IC4-IC1-K1-C1 ATR_present", "1", s62.atr_hex !== "" ? "1" : "0");
141
142 // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
143 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
144 var s63 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
145 bind.checkData("IC4-IC1-K2-C2 FCP_Template", "1", s63.resp.length > 0 ? "1" : "0");
146 bind.checkData("IC4-IC1-K2-C4 SW", "9000", s63.sw);
147
148 // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
149 var s64 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
150 bind.checkData("IC4-IC1-K3-C4 SW", "9000", s64.sw);
151
152 // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
153 var steady65 = bind.runToSteadyState(function () {
154 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
155 });
156 bind.checkData("IC4-IC1-K4-C4 final SW", "9000", steady65.final.sw);
157
158 // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
159 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
160 var s66 = bind.manageChannelOpen("9000");
161 bind.checkData("IC4-IC2-K1-C4 SW", "9000", s66.sw);
162 bind.checkData("IC4-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s66.chan !== null ? "1" : "0");
163
164 // IC ref inline @E 步骤 4(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
165 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
166 var s67 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
167 // 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.
168 bind.checkData("IC4-IC2-K2-C4 SW", "9000", s67.sw);
169
170 // 步骤 5:SEQ01-4] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151, RQ24_010)
171 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
172 var sdCla5 = s66.chan !== null ? (s66.chan <= 3 ? 128 + s66.chan : 188 + s66.chan).toString(16).toUpperCase() : null;
173 // runtime-bound payload: ISD_P_AID1 stays in execution domain
174 var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
175 bind.checkData("S4-C1 SW", "9000", s5.sw);
176 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s5.cmd, profileAidSession);
177 var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
178 var r2has5_0 = false;
179 for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
180 var f = r2p5.elements[r2i5_0].fields;
181 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has5_0 = true; break; }
182 }
183 bind.checkData("S4-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
184
185 // 步骤 6:SEQ01-5] [SELECT_ICCID(tc_step;REQ: RQ24_025)
186 var s6 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
187 bind.checkData("S5-C1 SW", "6A82", s6.sw);
188
189 // 步骤 7:SEQ02-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151)
190 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
191 var sdCla7 = s66.chan !== null ? (s66.chan <= 3 ? 128 + s66.chan : 188 + s66.chan).toString(16).toUpperCase() : null;
192 var s7 = bind.sendApdu(sdCla7, "E2", "90", "00", "BF320F5A0A989209012143658709F50101FF", null, null);
193 bind.checkData("S6-C2 response data absent", "1", s7.resp === "" ? "1" : "0");
194 bind.checkData("S6-C1 SW1 91", "91", s7.sw.substring(0, 2));
195
196 // 步骤 8:SEQ02-2] FETCH 'XX'(tc_step;REQ: RQ32_038, RQ32_039, RQ32_039_1, RQ32_041_2, RQ57_142_13, RQ57_142_14)
197 // FETCH header literals follow the golden wire evidence 8012 (same
198 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
199 // gives mechanism only). Le = pending length from the last 91XX
200 // (chain rule, binding-internal state).
201 var s8 = bind.fetchPending("80", "12", "00", "00", null);
202 bind.checkData("S7-C1 proactive command envelope", "1", (s8.resp.length >= 4 && s8.resp.substring(0, 2) === "D0") ? "1" : "0");
203 // S7-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
204 // S8:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
205 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
206 var s8tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
207
208 // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
209 var s68 = bind.resetAndAtr();
210 bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s68.atr_hex !== "" ? "1" : "0");
211
212 // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
213 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
214 var s69 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
215 bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s69.resp.length > 0 ? "1" : "0");
216 bind.checkData("IC9-IC1-K2-C4 SW", "9000", s69.sw);
217
218 // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
219 var s70 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
220 bind.checkData("IC9-IC1-K3-C4 SW", "9000", s70.sw);
221
222 // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
223 var steady71 = bind.runToSteadyState(function () {
224 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
225 });
226 bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady71.final.sw);
227
228 // IC ref inline @E 步骤 9(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
229 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
230 var s72 = bind.manageChannelOpen("9000");
231 bind.checkData("IC9-IC2-K1-C4 SW", "9000", s72.sw);
232 bind.checkData("IC9-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s72.chan !== null ? "1" : "0");
233
234 // IC ref inline @E 步骤 9(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
235 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
236 var s73 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
237 // 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.
238 bind.checkData("IC9-IC2-K2-C4 SW", "9000", s73.sw);
239
240 // 步骤 10:SEQ02-4] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151)
241 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
242 var sdCla10 = s72.chan !== null ? (s72.chan <= 3 ? 128 + s72.chan : 188 + s72.chan).toString(16).toUpperCase() : null;
243 var s10 = bind.sendApdu(sdCla10, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
244 bind.checkData("S9-C1 SW", "9000", s10.sw);
245 var r2p10 = BindEs10xProcProfile.walkChoiceList(s10.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
246 var r2has10_0 = false;
247 for (var r2i10_0 = 0; r2i10_0 < r2p10.elements.length; r2i10_0++) {
248 var f = r2p10.elements[r2i10_0].fields;
249 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has10_0 = true; break; }
250 }
251 bind.checkData("S9-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p10.branch_tag === "A0" && r2has10_0) ? "1" : "0");
252
253 // 步骤 11:SEQ02-5] [SELECT_ICCID(tc_step;REQ: RQ24_025)
254 var s11 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
255 bind.checkData("S10-C1 SW", "6A82", s11.sw);
256
257 // 步骤 12:SEQ03-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151, RQ24_010)
258 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
259 var sdCla12 = s72.chan !== null ? (s72.chan <= 3 ? 128 + s72.chan : 188 + s72.chan).toString(16).toUpperCase() : null;
260 // runtime-bound payload: ISD_P_AID1 stays in execution domain
261 var s12 = bind.sendApdu(sdCla12, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "0101FF", profileAidSession), null, null);
262 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s12.cmd, profileAidSession);
263 bind.checkData("S11-C2 response data absent", "1", s12.resp === "" ? "1" : "0");
264 bind.checkData("S11-C1 SW1 91", "91", s12.sw.substring(0, 2));
265
266 // 步骤 13:SEQ03-2] FETCH 'XX'(tc_step;REQ: RQ32_038, RQ32_039, RQ32_039_1, RQ32_041_2, RQ57_142_13, RQ57_142_14)
267 // FETCH header literals follow the golden wire evidence 8012 (same
268 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
269 // gives mechanism only). Le = pending length from the last 91XX
270 // (chain rule, binding-internal state).
271 var s13 = bind.fetchPending("80", "12", "00", "00", null);
272 bind.checkData("S12-C1 proactive command envelope", "1", (s13.resp.length >= 4 && s13.resp.substring(0, 2) === "D0") ? "1" : "0");
273 // S12-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
274
275 // 步骤 14:SEQ03-3] TERMINAL RESPONSE(tc_step)
276 // TERMINAL RESPONSE data is dynamically built by the binding from the
277 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
278 // Header literals follow the golden wire evidence 8014.
279 var s14 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
280 bind.checkData("S13-C1 SW", "9000", s14.sw);
281
282 // IC ref inline @E 步骤 15(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
283 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
284 var s74 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
285 bind.checkData("IC15-IC1-K2-C2 FCP_Template", "1", s74.resp.length > 0 ? "1" : "0");
286 bind.checkData("IC15-IC1-K2-C4 SW", "9000", s74.sw);
287
288 // IC ref inline @E 步骤 15(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
289 var s75 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
290 bind.checkData("IC15-IC1-K3-C4 SW", "9000", s75.sw);
291
292 // IC ref inline @E 步骤 15(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
293 var steady76 = bind.runToSteadyState(function () {
294 return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
295 });
296 bind.checkData("IC15-IC1-K4-C4 final SW", "9000", steady76.final.sw);
297
298 // IC ref inline @E 步骤 16(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
299 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
300 var s77 = bind.manageChannelOpen("9000");
301 bind.checkData("IC16-IC2-K1-C4 SW", "9000", s77.sw);
302 bind.checkData("IC16-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s77.chan !== null ? "1" : "0");
303
304 // IC ref inline @E 步骤 16(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
305 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
306 var s78 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
307 // 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.
308 bind.checkData("IC16-IC2-K2-C4 SW", "9000", s78.sw);
309
310 // 步骤 17:SEQ03-6] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151, RQ24_010)
311 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
312 var sdCla17 = s77.chan !== null ? (s77.chan <= 3 ? 128 + s77.chan : 188 + s77.chan).toString(16).toUpperCase() : null;
313 // runtime-bound payload: ISD_P_AID1 stays in execution domain
314 var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
315 bind.checkData("S16-C1 SW", "9000", s17.sw);
316 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s17.cmd, profileAidSession);
317 var r2p17 = BindEs10xProcProfile.walkChoiceList(s17.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
318 var r2has17_0 = false;
319 for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
320 var f = r2p17.elements[r2i17_0].fields;
321 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has17_0 = true; break; }
322 }
323 bind.checkData("S16-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
324
325 // 步骤 18:SEQ03-7] [SELECT_ICCID(tc_step;REQ: RQ24_025)
326 var s18 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
327 bind.checkData("S17-C1 SW", "6A82", s18.sw);
328
329 // 步骤 19:SEQ04-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151)
330 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
331 var sdCla19 = s77.chan !== null ? (s77.chan <= 3 ? 128 + s77.chan : 188 + s77.chan).toString(16).toUpperCase() : null;
332 var s19 = bind.sendApdu(sdCla19, "E2", "90", "00", "BF320F5A0A989209012143658709F50101FF", null, null);
333 bind.checkData("S18-C2 response data absent", "1", s19.resp === "" ? "1" : "0");
334 bind.checkData("S18-C1 SW1 91", "91", s19.sw.substring(0, 2));
335
336 // 步骤 20:SEQ04-2] FETCH 'XX'(tc_step;REQ: RQ32_038, RQ32_039, RQ32_039_1, RQ32_041_2, RQ57_142_13, RQ57_142_14)
337 // FETCH header literals follow the golden wire evidence 8012 (same
338 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
339 // gives mechanism only). Le = pending length from the last 91XX
340 // (chain rule, binding-internal state).
341 var s20 = bind.fetchPending("80", "12", "00", "00", null);
342 bind.checkData("S19-C1 proactive command envelope", "1", (s20.resp.length >= 4 && s20.resp.substring(0, 2) === "D0") ? "1" : "0");
343 // S19-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
344
345 // 步骤 21:SEQ04-3] TERMINAL RESPONSE(tc_step)
346 // TERMINAL RESPONSE data is dynamically built by the binding from the
347 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
348 // Header literals follow the golden wire evidence 8014.
349 var s21 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
350 bind.checkData("S20-C1 SW", "9000", s21.sw);
351
352 // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 2):SELECT_MF(K 语料机械展开)
353 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
354 var s79 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
355 bind.checkData("IC22-IC1-K2-C2 FCP_Template", "1", s79.resp.length > 0 ? "1" : "0");
356 bind.checkData("IC22-IC1-K2-C4 SW", "9000", s79.sw);
357
358 // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
359 var s80 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
360 bind.checkData("IC22-IC1-K3-C4 SW", "9000", s80.sw);
361
362 // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
363 var steady81 = bind.runToSteadyState(function () {
364 return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
365 });
366 bind.checkData("IC22-IC1-K4-C4 final SW", "9000", steady81.final.sw);
367
368 // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
369 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
370 var s82 = bind.manageChannelOpen("9000");
371 bind.checkData("IC23-IC2-K1-C4 SW", "9000", s82.sw);
372 bind.checkData("IC23-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s82.chan !== null ? "1" : "0");
373
374 // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
375 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
376 var s83 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
377 // 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.
378 bind.checkData("IC23-IC2-K2-C4 SW", "9000", s83.sw);
379
380 // 步骤 24:SEQ04-6] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151)
381 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
382 var sdCla24 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
383 var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
384 bind.checkData("S23-C1 SW", "9000", s24.sw);
385 var r2p24 = BindEs10xProcProfile.walkChoiceList(s24.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
386 var r2has24_0 = false;
387 for (var r2i24_0 = 0; r2i24_0 < r2p24.elements.length; r2i24_0++) {
388 var f = r2p24.elements[r2i24_0].fields;
389 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has24_0 = true; break; }
390 }
391 bind.checkData("S23-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p24.branch_tag === "A0" && r2has24_0) ? "1" : "0");
392
393 // 步骤 25:SEQ04-7] [SELECT_ICCID(tc_step;REQ: RQ24_025)
394 var s25 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
395 bind.checkData("S24-C1 SW", "6A82", s25.sw);
396
397 // 步骤 26:SEQ05-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_038, RQ32_041_1, RQ57_142_1, RQ57_142_2, RQ57_142_3, RQ57_142_6, RQ57_142_9, RQ57_142_14, RQ57_151, RQ29_002, RQ29_022)
398 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
399 var sdCla26 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
400 // runtime-bound payload: ISD_P_AID1 stays in execution domain
401 var s26 = bind.sendApdu(sdCla26, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "010100", profileAidSession), null, "9000");
402 bind.checkData("S25-C1 SW", "9000", s26.sw);
403 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s26.cmd, profileAidSession);
404 bind.checkData("S25-C2 response data absent", "1", s26.resp === "" ? "1" : "0");
405
406 // 步骤 27:SEQ05-2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_038, RQ32_041_1, RQ57_142_1, RQ57_142_2, RQ57_142_3, RQ57_142_6, RQ57_142_9, RQ57_142_14, RQ57_151)
407 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
408 var sdCla27 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
409 // runtime-bound payload: ISD_P_AID1 stays in execution domain
410 var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
411 bind.checkData("S26-C1 SW", "9000", s27.sw);
412 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s27.cmd, profileAidSession);
413 var r2p27 = BindEs10xProcProfile.walkChoiceList(s27.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
414 var r2has27_0 = false;
415 for (var r2i27_0 = 0; r2i27_0 < r2p27.elements.length; r2i27_0++) {
416 var f = r2p27.elements[r2i27_0].fields;
417 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has27_0 = true; break; }
418 }
419 bind.checkData("S26-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p27.branch_tag === "A0" && r2has27_0) ? "1" : "0");
420
421 // 步骤 28:SEQ05-3] [SELECT_ICCID(tc_step;REQ: RQ24_025)
422 var s28 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
423 bind.checkData("S27-C1 SW", "6A82", s28.sw);
424
425 // 步骤 29:SEQ06-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_038, RQ32_041_1, RQ57_142_1, RQ57_142_2, RQ57_142_3, RQ57_142_6, RQ57_142_9, RQ57_142_14, RQ57_151, RQ29_002, RQ29_022)
426 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
427 var sdCla29 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
428 var s29 = bind.sendApdu(sdCla29, "E2", "90", "00", "BF320F5A0A989209012143658709F5010100", null, "9000");
429 bind.checkData("S28-C1 SW", "9000", s29.sw);
430 bind.checkData("S28-C2 response data absent", "1", s29.resp === "" ? "1" : "0");
431
432 // 步骤 30:SEQ06-2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_038, RQ32_041_1, RQ57_142_1, RQ57_142_2, RQ57_142_3, RQ57_142_6, RQ57_142_9, RQ57_142_14, RQ57_151)
433 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
434 var sdCla30 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
435 var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
436 bind.checkData("S29-C1 SW", "9000", s30.sw);
437 var r2p30 = BindEs10xProcProfile.walkChoiceList(s30.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
438 var r2has30_0 = false;
439 for (var r2i30_0 = 0; r2i30_0 < r2p30.elements.length; r2i30_0++) {
440 var f = r2p30.elements[r2i30_0].fields;
441 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has30_0 = true; break; }
442 }
443 bind.checkData("S29-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p30.branch_tag === "A0" && r2has30_0) ? "1" : "0");
444
445 // 步骤 31:SEQ06-3] [SELECT_ICCID(tc_step;REQ: RQ24_025)
446 var s31 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
447 bind.checkData("S30-C1 SW", "6A82", s31.sw);
448
449 // 步骤 32:SEQ07-IC3] MTD_SEND_SMS_PP(tc_step)
450 // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
451 // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
452 // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
453 var s32 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
454 bind.checkData("S31-C1 SW1 91", "91", s32.sw.substring(0, 2));
455
456 // 步骤 33:SEQ07-1] MTD_STORE_DATA_Case3(tc_step)
457 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
458 var sdCla33 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
459 var s33 = bind.sendApdu(sdCla33, "E2", "90", "00", "BF320F5A0A989209012143658709F50101FF", null, null);
460 bind.checkData("S32-C2 response data absent", "1", s33.resp === "" ? "1" : "0");
461 bind.checkData("S32-C1 SW1 91", "91", s33.sw.substring(0, 2));
462
463 // 步骤 34:SEQ07-2] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
464 // FETCH header literals follow the golden wire evidence 8012 (same
465 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
466 // gives mechanism only). Le = pending length from the last 91XX
467 // (chain rule, binding-internal state).
468 var s34 = bind.fetchPending("80", "12", "00", "00", null);
469 bind.checkData("S33-C1 proactive command envelope", "1", (s34.resp.length >= 4 && s34.resp.substring(0, 2) === "D0") ? "1" : "0");
470 // S33-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
471 // S34:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
472 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
473 var s34tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
474
475 // IC ref inline @E 步骤 35(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
476 var s84 = bind.resetAndAtr();
477 bind.checkData("IC35-IC1-K1-C1 ATR_present", "1", s84.atr_hex !== "" ? "1" : "0");
478
479 // IC ref inline @E 步骤 35(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
480 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
481 var s85 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
482 bind.checkData("IC35-IC1-K2-C2 FCP_Template", "1", s85.resp.length > 0 ? "1" : "0");
483 bind.checkData("IC35-IC1-K2-C4 SW", "9000", s85.sw);
484
485 // IC ref inline @E 步骤 35(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
486 var s86 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
487 bind.checkData("IC35-IC1-K3-C4 SW", "9000", s86.sw);
488
489 // IC ref inline @E 步骤 35(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
490 var steady87 = bind.runToSteadyState(function () {
491 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
492 });
493 bind.checkData("IC35-IC1-K4-C4 final SW", "9000", steady87.final.sw);
494
495 // IC ref inline @E 步骤 35(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
496 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
497 var s88 = bind.manageChannelOpen("9000");
498 bind.checkData("IC35-IC2-K1-C4 SW", "9000", s88.sw);
499 bind.checkData("IC35-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s88.chan !== null ? "1" : "0");
500
501 // IC ref inline @E 步骤 35(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
502 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
503 var s89 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
504 // 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.
505 bind.checkData("IC35-IC2-K2-C4 SW", "9000", s89.sw);
506
507 // 步骤 36:SEQ07-4] MTD_STORE_DATA(tc_step)
508 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
509 var sdCla36 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
510 var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
511 bind.checkData("S35-C1 SW", "9000", s36.sw);
512 var r2p36 = BindEs10xProcProfile.walkChoiceList(s36.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
513 var r2has36_0 = false;
514 for (var r2i36_0 = 0; r2i36_0 < r2p36.elements.length; r2i36_0++) {
515 var f = r2p36.elements[r2i36_0].fields;
516 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has36_0 = true; break; }
517 }
518 bind.checkData("S35-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p36.branch_tag === "A0" && r2has36_0) ? "1" : "0");
519
520 // 步骤 37:SEQ07-5] [SELECT_ICCID(tc_step;REQ: RQ24_025)
521 var s37 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
522 bind.checkData("S36-C1 SW", "6A82", s37.sw);
523
524 // 步骤 38:SEQ08-IC3] MTD_SEND_SMS_PP(tc_step)
525 // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
526 // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
527 // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
528 var s38 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
529 bind.checkData("S37-C1 SW1 91", "91", s38.sw.substring(0, 2));
530
531 // 步骤 39:SEQ08-1] MTD_STORE_DATA_Case3(tc_step)
532 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
533 var sdCla39 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
534 var s39 = bind.sendApdu(sdCla39, "E2", "90", "00", "BF320F5A0A989209012143658709F5010100", null, "9000");
535 bind.checkData("S38-C1 SW", "9000", s39.sw);
536 bind.checkData("S38-C2 response data absent", "1", s39.resp === "" ? "1" : "0");
537
538 // 步骤 40:SEQ08-2] MTD_STORE_DATA(tc_step)
539 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
540 var sdCla40 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
541 var s40 = bind.sendApdu(sdCla40, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
542 bind.checkData("S39-C1 SW", "9000", s40.sw);
543 var r2p40 = BindEs10xProcProfile.walkChoiceList(s40.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
544 var r2has40_0 = false;
545 for (var r2i40_0 = 0; r2i40_0 < r2p40.elements.length; r2i40_0++) {
546 var f = r2p40.elements[r2i40_0].fields;
547 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has40_0 = true; break; }
548 }
549 bind.checkData("S39-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p40.branch_tag === "A0" && r2has40_0) ? "1" : "0");
550
551 // 步骤 41:SEQ08-3] [SELECT_ICCID(tc_step;REQ: RQ24_025)
552 var s41 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
553 bind.checkData("S40-C1 SW", "6A82", s41.sw);
554
555 // 步骤 42:SEQ09-IC3] MTD_SEND_SMS_PP(tc_step)
556 // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
557 // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
558 // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
559 var s42 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
560 bind.checkData("S41-C1 SW1 91", "91", s42.sw.substring(0, 2));
561
562 // 步骤 43:SEQ09-1] FETCH ‘XX’(tc_step)
563 // FETCH header literals follow the golden wire evidence 8012 (same
564 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
565 // gives mechanism only). Le = pending length from the last 91XX
566 // (chain rule, binding-internal state).
567 var s43 = bind.fetchPending("80", "12", "00", "00", null);
568 bind.checkData("S42-C1 proactive command envelope", "1", (s43.resp.length >= 4 && s43.resp.substring(0, 2) === "D0") ? "1" : "0");
569 // S42-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
570 // S43:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
571 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
572 var s43tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
573
574 // 步骤 44:SEQ09-2] MTD_STORE_DATA_Case3(tc_step)
575 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
576 var sdCla44 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
577 var s44 = bind.sendApdu(sdCla44, "E2", "90", "00", "BF320F5A0A989209012143658709F50101FF", null, "9000");
578 bind.checkData("S43-C1 SW", "9000", s44.sw);
579 bind.checkData("S43-C2 response data absent", "1", s44.resp === "" ? "1" : "0");
580
581 // 步骤 45:SEQ09-3] TERMINAL RESPONSE(tc_step)
582 // TERMINAL RESPONSE data is dynamically built by the binding from the
583 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
584 // Header literals follow the golden wire evidence 8014.
585 var s45 = bind.terminalResponseForPending("80", "14", "00", "00", null);
586 bind.checkData("S44-C1 SW1 91", "91", s45.sw.substring(0, 2));
587
588 // 步骤 46:SEQ09-4] FETCH 'YY'(tc_step;REQ: RQ32_016_3, RQ32_017, RQ57_134)
589 // FETCH header literals follow the golden wire evidence 8012 (same
590 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
591 // gives mechanism only). Le = pending length from the last 91XX
592 // (chain rule, binding-internal state).
593 var s46 = bind.fetchPending("80", "12", "00", "00", null);
594 bind.checkData("S45-C1 proactive command envelope", "1", (s46.resp.length >= 4 && s46.resp.substring(0, 2) === "D0") ? "1" : "0");
595 // S45-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
596 // S46:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
597 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
598 var s46tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
599
600 // IC ref inline @E 步骤 47(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
601 var s90 = bind.resetAndAtr();
602 bind.checkData("IC47-IC1-K1-C1 ATR_present", "1", s90.atr_hex !== "" ? "1" : "0");
603
604 // IC ref inline @E 步骤 47(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
605 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
606 var s91 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
607 bind.checkData("IC47-IC1-K2-C2 FCP_Template", "1", s91.resp.length > 0 ? "1" : "0");
608 bind.checkData("IC47-IC1-K2-C4 SW", "9000", s91.sw);
609
610 // IC ref inline @E 步骤 47(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
611 var s92 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
612 bind.checkData("IC47-IC1-K3-C4 SW", "9000", s92.sw);
613
614 // IC ref inline @E 步骤 47(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
615 var steady93 = bind.runToSteadyState(function () {
616 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
617 });
618 bind.checkData("IC47-IC1-K4-C4 final SW", "9000", steady93.final.sw);
619
620 // IC ref inline @E 步骤 47(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
621 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
622 var s94 = bind.manageChannelOpen("9000");
623 bind.checkData("IC47-IC2-K1-C4 SW", "9000", s94.sw);
624 bind.checkData("IC47-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s94.chan !== null ? "1" : "0");
625
626 // IC ref inline @E 步骤 47(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
627 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
628 var s95 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
629 // 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.
630 bind.checkData("IC47-IC2-K2-C4 SW", "9000", s95.sw);
631
632 // 步骤 48:SEQ09-6] MTD_STORE_DATA(tc_step)
633 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
634 var sdCla48 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
635 var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
636 bind.checkData("S47-C1 SW", "9000", s48.sw);
637 var r2p48 = BindEs10xProcProfile.walkChoiceList(s48.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
638 var r2has48_0 = false;
639 for (var r2i48_0 = 0; r2i48_0 < r2p48.elements.length; r2i48_0++) {
640 var f = r2p48.elements[r2i48_0].fields;
641 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has48_0 = true; break; }
642 }
643 bind.checkData("S47-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p48.branch_tag === "A0" && r2has48_0) ? "1" : "0");
644
645 // 步骤 49:SEQ09-7] [SELECT_ICCID(tc_step;REQ: RQ24_025)
646 var s49 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
647 bind.checkData("S48-C1 SW", "6A82", s49.sw);
648
649 // 步骤 50:SEQ10-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 s50 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
654 bind.checkData("S49-C1 SW1 91", "91", s50.sw.substring(0, 2));
655
656 // 步骤 51:SEQ10-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 s51 = bind.fetchPending("80", "12", "00", "00", null);
662 bind.checkData("S50-C1 proactive command envelope", "1", (s51.resp.length >= 4 && s51.resp.substring(0, 2) === "D0") ? "1" : "0");
663 // S50-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
664 // S51:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
665 // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
666 var s51tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
667
668 // 步骤 52:SEQ10-2] MTD_STORE_DATA_Case3(tc_step)
669 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
670 var sdCla52 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
671 var s52 = bind.sendApdu(sdCla52, "E2", "90", "00", "BF320F5A0A989209012143658709F5010100", null, "9000");
672 bind.checkData("S51-C1 SW", "9000", s52.sw);
673 bind.checkData("S51-C2 response data absent", "1", s52.resp === "" ? "1" : "0");
674
675 // 步骤 53:SEQ10-3] TERMINAL RESPONSE(tc_step)
676 // TERMINAL RESPONSE data is dynamically built by the binding from the
677 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
678 // Header literals follow the golden wire evidence 8014.
679 var s53 = bind.terminalResponseForPending("80", "14", "00", "00", null);
680 bind.checkData("S52-C1 SW1 != 91", "1", s53.sw.substring(0, 2) !== "91" ? "1" : "0");
681
682 // 步骤 54:SEQ10-4] MTD_STORE_DATA(tc_step)
683 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
684 var sdCla54 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
685 var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
686 bind.checkData("S53-C1 SW", "9000", s54.sw);
687 var r2p54 = BindEs10xProcProfile.walkChoiceList(s54.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
688 var r2has54_0 = false;
689 for (var r2i54_0 = 0; r2i54_0 < r2p54.elements.length; r2i54_0++) {
690 var f = r2p54.elements[r2i54_0].fields;
691 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has54_0 = true; break; }
692 }
693 bind.checkData("S53-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p54.branch_tag === "A0" && r2has54_0) ? "1" : "0");
694
695 // 步骤 55:SEQ10-5] [SELECT_ICCID(tc_step;REQ: RQ24_025)
696 var s55 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
697 bind.checkData("S54-C1 SW", "6A82", s55.sw);
698}
699
完整 unified diff
行级差异:新增 697 行 / 删除 889 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(1591 行)
--- -man
+++ -cas
@@ -1,891 +1,699 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_DisableProfile_Case3_01_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_DisableProfile_Case3_02_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset + TC_eUICC_ES10c_DisableProfile_Case3_03_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_DisableProfile_Case3_04_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change + TC_eUICC_ES10c_DisableProfile_Case3_05_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_not_set + TC_eUICC_ES10c_DisableProfile_Case3_06_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_not_set + TC_eUICC_ES10c_DisableProfile_Case3_07_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_set_while_proactive_sessionisongoing_catBusynotsupported + TC_eUICC_ES10c_DisableProfile_Case3_08_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_not_set_while_proactive_sessionisongoing_catBusynotsupported + TC_eUICC_ES10c_DisableProfile_Case3_09_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_set_while_proactive_sessionisongoing_withTerminalResponseoutstanding_catBusynotsupported + TC_eUICC_ES10c_DisableProfile_Case3_10_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_not_set_while_proactive_sessionisongoing_withTerminalResponseoutstanding_catBusynotsupported (extracted verbatim)
-
-function TC_eUICC_ES10c_DisableProfile_Case3_01_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
-{
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- 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命令,执行DisableProfileRequest,refreshFlag为FF;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
-
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
- 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)");
-
- 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_DISABLED, 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");
- para1.apdu.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_DisableProfile_Case3_02_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_UICC_Reset()
-{
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- 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命令,执行DisableProfileRequest,refreshFlag为FF;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
-
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
- 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)");
-
- 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_DISABLED, 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");
- para1.apdu.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_Case3_03_Nominal_Disable_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_Enabled();
- 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命令,执行DisableProfileRequest,refreshFlag为FF;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
-
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
-
- 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.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_DISABLED, 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");
- para1.apdu.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_Case3_04_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_set_when_Device_supports_eUICC_Profile_State_Change()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- 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;//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命令,执行DisableProfileRequest,refreshFlag为FF;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
-
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
-
- 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_DISABLED, 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");
- para1.apdu.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_Case3_05_Nominal_Disable_Profile_by_ISD_P_AID_and_refreshFlag_not_set()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- 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命令,执行DisableProfileRequest,refreshFlag为False;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
- disableProRequest.refreshFlag = BooleanValue_BerCode_False;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
-
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
-
- 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_DISABLED, 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");
- para1.apdu.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_DisableProfile_Case3_06_Nominal_Disable_Profile_by_ICCID_and_refreshFlag_not_set()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- 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命令,执行DisableProfileRequest,refreshFlag为False;");
-
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- disableProRequest.refreshFlag = BooleanValue_BerCode_False;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
-
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
- 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_DISABLED, 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");
- para1.apdu.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_DisableProfile_Case3_07_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_set_while_proactive_sessionisongoing_catBusynotsupported()
-{
-
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
- return;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
-
- tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过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");
-
- curLogicChannel = 0;
- var sSendType = SendTypeByOTA.SMS;
- KIC = MNO_SCP80_ENC_KEY;
- KID = MNO_SCP80_AUTH_KEY;
- KIK = MNO_SCP80_DATA_ENC_KEY;
- curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
- sAPDU = "80F28002024F00";
- SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
- HaveReEntry91XX = true;
- var ss = obj.GetState();
- ReEntry91XXLength = ss.substr(2,2);
-
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为FF;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","91XX");
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
- 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)");
-
-
- 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_DISABLED, 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");
- para1.apdu.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_Case3_08_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_not_set_while_proactive_sessionisongoing_catBusynotsupported()
-{
-
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
- return;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
-
- tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中时,通过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");
-
- curLogicChannel = 0;
- var sSendType = SendTypeByOTA.SMS;
- KIC = MNO_SCP80_ENC_KEY;
- KID = MNO_SCP80_AUTH_KEY;
- KIK = MNO_SCP80_DATA_ENC_KEY;
- curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
- sAPDU = "80F28002024F00";
- SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
- HaveReEntry91XX = true;
- var ss = obj.GetState();
- ReEntry91XXLength = ss.substr(2,2);
-
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为False;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- disableProRequest.refreshFlag = BooleanValue_BerCode_False;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
-
- 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_DISABLED, 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");
- para1.apdu.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_Case3_09_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_set_while_proactive_sessionisongoing_withTerminalResponseoutstanding_catBusynotsupported()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
- return;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
-
- tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过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");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
-
- var sSendType = SendTypeByOTA.SMS;
- KIC = MNO_SCP80_ENC_KEY;
- KID = MNO_SCP80_AUTH_KEY;
- KIK = MNO_SCP80_DATA_ENC_KEY;
- sAPDU = "80F28002024F00";
- SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
- HaveReEntry91XX = true;
- var ss = obj.GetState();
- ReEntry91XXLength = ss.substr(2,2);
-
- curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
- curLogicChannel = 0;
- CardSendMessageToServer(sSendType,1,"0161XX","00");
-
-
-
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为FF;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
- TerminalResponse("00","91XX");
- var ss = obj.GetState();
- HaveReEntry91XX = false;
-
-
- curDis.TestStepStart2(stno++,"Fetch;");
- FetchStr = Fetch(ss.substr(2),"9000","");
- var CmdDetails = GetValueByTag("01",1);
- var CmdQualifier = CmdDetails.substr(4,2);
- curStrHandle.CheckData("04",CmdQualifier,"the command qualifier is equal to ’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,获取profile1状态;");
- 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_DISABLED, 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.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_Case3_10_Nominal_Disable_Profile_by_ICCID_with_refreshFLag_not_set_while_proactive_sessionisongoing_withTerminalResponseoutstanding_catBusynotsupported()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
- return;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
-
- tracenamestr = "测试目的:eUICC不支持catBusy,主动式会话进行中(未给终端响应)时,通过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");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
-
- var sSendType = SendTypeByOTA.SMS;
- KIC = MNO_SCP80_ENC_KEY;
- KID = MNO_SCP80_AUTH_KEY;
- KIK = MNO_SCP80_DATA_ENC_KEY;
- sAPDU = "80F28002024F00";
- SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
- HaveReEntry91XX = true;
- var ss = obj.GetState();
- ReEntry91XXLength = ss.substr(2,2);
-
- curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
- curLogicChannel = 0;
- CardSendMessageToServer(sSendType,1,"0161XX","00");
-
-
-
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为Flase;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- disableProRequest.refreshFlag = BooleanValue_BerCode_False;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"90","00","9000");
- curStrHandle.CheckData("", respData, "DisableProfileResponse");
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送TerminalResponse命令;");
- TerminalResponse("00","91XX");
- var ss = obj.GetState();
- HaveReEntry91XX = false;
-
-
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile1状态;");
- 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_DISABLED, 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.ressw = "6A82";
- SendAPDU(para1.apdu);
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261005-152741
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.DisableProfile_Case3,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-C2 response data absent;S1-C1 SW1 91;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_DISABLED;S5-C1 SW;S6-C2 response data absent;S6-C1 SW1 91
+// S7-C1 proactive command envelope;IC9-IC1-K1-C1 ATR_present;IC9-IC1-K2-C2 FCP_Template
+// IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW;IC9-IC1-K4-C4 final SW;IC9-IC2-K1-C4 SW
+// IC9-IC2-K1-C3 CHANNEL_NUMBER extracted;IC9-IC2-K2-C4 SW;S9-C1 SW
+// S9-C2 contains PROFILE_INFO1_DISABLED;S10-C1 SW;S11-C2 response data absent;S11-C1 SW1 91
+// S12-C1 proactive command envelope;S13-C1 SW;IC15-IC1-K2-C2 FCP_Template;IC15-IC1-K2-C4 SW
+// IC15-IC1-K3-C4 SW;IC15-IC1-K4-C4 final SW;IC16-IC2-K1-C4 SW
+// IC16-IC2-K1-C3 CHANNEL_NUMBER extracted;IC16-IC2-K2-C4 SW;S16-C1 SW
+// S16-C2 contains PROFILE_INFO1_DISABLED;S17-C1 SW;S18-C2 response data absent;S18-C1 SW1 91
+// S19-C1 proactive command envelope;S20-C1 SW;IC22-IC1-K2-C2 FCP_Template;IC22-IC1-K2-C4 SW
+// IC22-IC1-K3-C4 SW;IC22-IC1-K4-C4 final SW;IC23-IC2-K1-C4 SW
+// IC23-IC2-K1-C3 CHANNEL_NUMBER extracted;IC23-IC2-K2-C4 SW;S23-C1 SW
+// S23-C2 contains PROFILE_INFO1_DISABLED;S24-C1 SW;S25-C1 SW;S25-C2 response data absent
+// S26-C1 SW;S26-C2 contains PROFILE_INFO1_DISABLED;S27-C1 SW;S28-C1 SW
+// S28-C2 response data absent;S29-C1 SW;S29-C2 contains PROFILE_INFO1_DISABLED;S30-C1 SW
+// S31-C1 SW1 91;S32-C2 response data absent;S32-C1 SW1 91;S33-C1 proactive command envelope
+// IC35-IC1-K1-C1 ATR_present;IC35-IC1-K2-C2 FCP_Template;IC35-IC1-K2-C4 SW;IC35-IC1-K3-C4 SW
+// IC35-IC1-K4-C4 final SW;IC35-IC2-K1-C4 SW;IC35-IC2-K1-C3 CHANNEL_NUMBER extracted
+// IC35-IC2-K2-C4 SW;S35-C1 SW;S35-C2 contains PROFILE_INFO1_DISABLED;S36-C1 SW;S37-C1 SW1 91
+// S38-C1 SW;S38-C2 response data absent;S39-C1 SW;S39-C2 contains PROFILE_INFO1_DISABLED
+// S40-C1 SW;S41-C1 SW1 91;S42-C1 proactive command envelope;S43-C1 SW;S43-C2 response data absent
+// S44-C1 SW1 91;S45-C1 proactive command envelope;IC47-IC1-K1-C1 ATR_present
+// IC47-IC1-K2-C2 FCP_Template;IC47-IC1-K2-C4 SW;IC47-IC1-K3-C4 SW;IC47-IC1-K4-C4 final SW
+// IC47-IC2-K1-C4 SW;IC47-IC2-K1-C3 CHANNEL_NUMBER extracted;IC47-IC2-K2-C4 SW;S47-C1 SW
+// S47-C2 contains PROFILE_INFO1_DISABLED;S48-C1 SW;S49-C1 SW1 91
+// S50-C1 proactive command envelope;S51-C1 SW;S51-C2 response data absent;S52-C1 SW1 != 91
+// S53-C1 SW;S53-C2 contains PROFILE_INFO1_DISABLED;S54-C1 SW
+// 本函数由 CaseIR 4.2.22.2.1 编译生成(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_DisableProfile_Case3_01_10_Nominal_all_10_sequences() {
+ var bind = curBind;
+ var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_DisableProfile_Case3_01_10_Nominal_all_10_sequences");
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "4336cd72d19df228", "authority_reference": "E_tc_4222/38-38/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});
+ // 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 Enabled 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 Enabled 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 Enabled 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 Enabled 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 Enabled 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 Enabled 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-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-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-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-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 s56 = bind.resetAndAtr();
+ bind.checkData("ICH-SEQ01-IC1-K1-C1 ATR_present", "1", s56.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 s57 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("ICH-SEQ01-IC1-K2-C2 FCP_Template", "1", s57.resp.length > 0 ? "1" : "0");
+ bind.checkData("ICH-SEQ01-IC1-K2-C4 SW", "9000", s57.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s58 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("ICH-SEQ01-IC1-K3-C4 SW", "9000", s58.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady59 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("ICH-SEQ01-IC1-K4-C4 final SW", "9000", steady59.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 s60 = bind.manageChannelOpen("9000");
+ bind.checkData("ICH-SEQ01-IC2-K1-C4 SW", "9000", s60.sw);
+ bind.checkData("ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s60.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 s61 = 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", s61.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_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151, RQ24_010)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla2 = s60.chan !== null ? (s60.chan <= 3 ? 128 + s60.chan : 188 + s60.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s2 = bind.sendApdu(sdCla2, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "0101FF", profileAidSession), null, null);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s2.cmd, profileAidSession);
+ bind.checkData("S1-C2 response data absent", "1", s2.resp === "" ? "1" : "0");
+ bind.checkData("S1-C1 SW1 91", "91", s2.sw.substring(0, 2));
+
+ // 步骤 3:SEQ01-2] FETCH 'XX'(tc_step;REQ: RQ32_038, RQ32_039, RQ32_039_1, RQ32_041_2, RQ57_142_13, RQ57_142_14)
+ // 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 s62 = bind.resetAndAtr();
+ bind.checkData("IC4-IC1-K1-C1 ATR_present", "1", s62.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 s63 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC4-IC1-K2-C2 FCP_Template", "1", s63.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC4-IC1-K2-C4 SW", "9000", s63.sw);
+
+ // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s64 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC4-IC1-K3-C4 SW", "9000", s64.sw);
+
+ // IC ref inline @E 步骤 4(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady65 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC4-IC1-K4-C4 final SW", "9000", steady65.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 s66 = bind.manageChannelOpen("9000");
+ bind.checkData("IC4-IC2-K1-C4 SW", "9000", s66.sw);
+ bind.checkData("IC4-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s66.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 s67 = 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", s67.sw);
+
+ // 步骤 5:SEQ01-4] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151, RQ24_010)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla5 = s66.chan !== null ? (s66.chan <= 3 ? 128 + s66.chan : 188 + s66.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"] === "00") { r2has5_0 = true; break; }
+ }
+ bind.checkData("S4-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
+
+ // 步骤 6:SEQ01-5] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s6 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S5-C1 SW", "6A82", s6.sw);
+
+ // 步骤 7:SEQ02-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla7 = s66.chan !== null ? (s66.chan <= 3 ? 128 + s66.chan : 188 + s66.chan).toString(16).toUpperCase() : null;
+ var s7 = bind.sendApdu(sdCla7, "E2", "90", "00", "BF320F5A0A989209012143658709F50101FF", null, null);
+ bind.checkData("S6-C2 response data absent", "1", s7.resp === "" ? "1" : "0");
+ bind.checkData("S6-C1 SW1 91", "91", s7.sw.substring(0, 2));
+
+ // 步骤 8:SEQ02-2] FETCH 'XX'(tc_step;REQ: RQ32_038, RQ32_039, RQ32_039_1, RQ32_041_2, RQ57_142_13, RQ57_142_14)
+ // 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 s8 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S7-C1 proactive command envelope", "1", (s8.resp.length >= 4 && s8.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S7-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S8:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s8tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s68 = bind.resetAndAtr();
+ bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s68.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 9(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 s69 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s69.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC9-IC1-K2-C4 SW", "9000", s69.sw);
+
+ // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s70 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC9-IC1-K3-C4 SW", "9000", s70.sw);
+
+ // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady71 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady71.final.sw);
+
+ // IC ref inline @E 步骤 9(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 s72 = bind.manageChannelOpen("9000");
+ bind.checkData("IC9-IC2-K1-C4 SW", "9000", s72.sw);
+ bind.checkData("IC9-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s72.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 9(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 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("IC9-IC2-K2-C4 SW", "9000", s73.sw);
+
+ // 步骤 10:SEQ02-4] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla10 = s72.chan !== null ? (s72.chan <= 3 ? 128 + s72.chan : 188 + s72.chan).toString(16).toUpperCase() : null;
+ var s10 = bind.sendApdu(sdCla10, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S9-C1 SW", "9000", s10.sw);
+ var r2p10 = BindEs10xProcProfile.walkChoiceList(s10.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has10_0 = false;
+ for (var r2i10_0 = 0; r2i10_0 < r2p10.elements.length; r2i10_0++) {
+ var f = r2p10.elements[r2i10_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has10_0 = true; break; }
+ }
+ bind.checkData("S9-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p10.branch_tag === "A0" && r2has10_0) ? "1" : "0");
+
+ // 步骤 11:SEQ02-5] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s11 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S10-C1 SW", "6A82", s11.sw);
+
+ // 步骤 12:SEQ03-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151, RQ24_010)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla12 = 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 s12 = bind.sendApdu(sdCla12, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "0101FF", profileAidSession), null, null);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s12.cmd, profileAidSession);
+ bind.checkData("S11-C2 response data absent", "1", s12.resp === "" ? "1" : "0");
+ bind.checkData("S11-C1 SW1 91", "91", s12.sw.substring(0, 2));
+
+ // 步骤 13:SEQ03-2] FETCH 'XX'(tc_step;REQ: RQ32_038, RQ32_039, RQ32_039_1, RQ32_041_2, RQ57_142_13, RQ57_142_14)
+ // 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 s13 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S12-C1 proactive command envelope", "1", (s13.resp.length >= 4 && s13.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S12-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+ // 步骤 14: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 s14 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+ bind.checkData("S13-C1 SW", "9000", s14.sw);
+
+ // IC ref inline @E 步骤 15(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 s74 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC15-IC1-K2-C2 FCP_Template", "1", s74.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC15-IC1-K2-C4 SW", "9000", s74.sw);
+
+ // IC ref inline @E 步骤 15(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s75 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC15-IC1-K3-C4 SW", "9000", s75.sw);
+
+ // IC ref inline @E 步骤 15(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
+ var steady76 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
+ });
+ bind.checkData("IC15-IC1-K4-C4 final SW", "9000", steady76.final.sw);
+
+ // IC ref inline @E 步骤 16(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 s77 = bind.manageChannelOpen("9000");
+ bind.checkData("IC16-IC2-K1-C4 SW", "9000", s77.sw);
+ bind.checkData("IC16-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s77.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 16(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 s78 = 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("IC16-IC2-K2-C4 SW", "9000", s78.sw);
+
+ // 步骤 17:SEQ03-6] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151, RQ24_010)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla17 = s77.chan !== null ? (s77.chan <= 3 ? 128 + s77.chan : 188 + s77.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S16-C1 SW", "9000", s17.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s17.cmd, profileAidSession);
+ var r2p17 = BindEs10xProcProfile.walkChoiceList(s17.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has17_0 = false;
+ for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
+ var f = r2p17.elements[r2i17_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has17_0 = true; break; }
+ }
+ bind.checkData("S16-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
+
+ // 步骤 18:SEQ03-7] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s18 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S17-C1 SW", "6A82", s18.sw);
+
+ // 步骤 19:SEQ04-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla19 = s77.chan !== null ? (s77.chan <= 3 ? 128 + s77.chan : 188 + s77.chan).toString(16).toUpperCase() : null;
+ var s19 = bind.sendApdu(sdCla19, "E2", "90", "00", "BF320F5A0A989209012143658709F50101FF", null, null);
+ bind.checkData("S18-C2 response data absent", "1", s19.resp === "" ? "1" : "0");
+ bind.checkData("S18-C1 SW1 91", "91", s19.sw.substring(0, 2));
+
+ // 步骤 20:SEQ04-2] FETCH 'XX'(tc_step;REQ: RQ32_038, RQ32_039, RQ32_039_1, RQ32_041_2, RQ57_142_13, RQ57_142_14)
+ // 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 s20 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S19-C1 proactive command envelope", "1", (s20.resp.length >= 4 && s20.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S19-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+ // 步骤 21: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 s21 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+ bind.checkData("S20-C1 SW", "9000", s21.sw);
+
+ // IC ref inline @E 步骤 22(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 s79 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC22-IC1-K2-C2 FCP_Template", "1", s79.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC22-IC1-K2-C4 SW", "9000", s79.sw);
+
+ // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s80 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC22-IC1-K3-C4 SW", "9000", s80.sw);
+
+ // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE_eUICCProfileStateChanged, K row 4):TERMINAL_PROFILE_eUICCProfileStateChanged(K 语料机械展开)
+ var steady81 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFFFFFF1FFFFF0302FFFF9FFFEFDFFF0FFF0FFFFF0FFF03003F7FFF03FFFF20", "9000");
+ });
+ bind.checkData("IC22-IC1-K4-C4 final SW", "9000", steady81.final.sw);
+
+ // IC ref inline @E 步骤 23(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 s82 = bind.manageChannelOpen("9000");
+ bind.checkData("IC23-IC2-K1-C4 SW", "9000", s82.sw);
+ bind.checkData("IC23-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s82.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 23(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 s83 = 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("IC23-IC2-K2-C4 SW", "9000", s83.sw);
+
+ // 步骤 24:SEQ04-6] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_037_1, RQ57_142_2, RQ57_142_3, RQ57_142_12, RQ57_151)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla24 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+ var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S23-C1 SW", "9000", s24.sw);
+ var r2p24 = BindEs10xProcProfile.walkChoiceList(s24.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has24_0 = false;
+ for (var r2i24_0 = 0; r2i24_0 < r2p24.elements.length; r2i24_0++) {
+ var f = r2p24.elements[r2i24_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has24_0 = true; break; }
+ }
+ bind.checkData("S23-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p24.branch_tag === "A0" && r2has24_0) ? "1" : "0");
+
+ // 步骤 25:SEQ04-7] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s25 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S24-C1 SW", "6A82", s25.sw);
+
+ // 步骤 26:SEQ05-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_038, RQ32_041_1, RQ57_142_1, RQ57_142_2, RQ57_142_3, RQ57_142_6, RQ57_142_9, RQ57_142_14, RQ57_151, RQ29_002, RQ29_022)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla26 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s26 = bind.sendApdu(sdCla26, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "010100", profileAidSession), null, "9000");
+ bind.checkData("S25-C1 SW", "9000", s26.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s26.cmd, profileAidSession);
+ bind.checkData("S25-C2 response data absent", "1", s26.resp === "" ? "1" : "0");
+
+ // 步骤 27:SEQ05-2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_038, RQ32_041_1, RQ57_142_1, RQ57_142_2, RQ57_142_3, RQ57_142_6, RQ57_142_9, RQ57_142_14, RQ57_151)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla27 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D16A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S26-C1 SW", "9000", s27.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s27.cmd, profileAidSession);
+ 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"] === "00") { r2has27_0 = true; break; }
+ }
+ bind.checkData("S26-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p27.branch_tag === "A0" && r2has27_0) ? "1" : "0");
+
+ // 步骤 28:SEQ05-3] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s28 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S27-C1 SW", "6A82", s28.sw);
+
+ // 步骤 29:SEQ06-1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_031, RQ32_033, RQ32_038, RQ32_041_1, RQ57_142_1, RQ57_142_2, RQ57_142_3, RQ57_142_6, RQ57_142_9, RQ57_142_14, RQ57_151, RQ29_002, RQ29_022)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla29 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+ var s29 = bind.sendApdu(sdCla29, "E2", "90", "00", "BF320F5A0A989209012143658709F5010100", null, "9000");
+ bind.checkData("S28-C1 SW", "9000", s29.sw);
+ bind.checkData("S28-C2 response data absent", "1", s29.resp === "" ? "1" : "0");
+
+ // 步骤 30:SEQ06-2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_033, RQ32_038, RQ32_041_1, RQ57_142_1, RQ57_142_2, RQ57_142_3, RQ57_142_6, RQ57_142_9, RQ57_142_14, RQ57_151)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla30 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+ var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S29-C1 SW", "9000", s30.sw);
+ var r2p30 = BindEs10xProcProfile.walkChoiceList(s30.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has30_0 = false;
+ for (var r2i30_0 = 0; r2i30_0 < r2p30.elements.length; r2i30_0++) {
+ var f = r2p30.elements[r2i30_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has30_0 = true; break; }
+ }
+ bind.checkData("S29-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p30.branch_tag === "A0" && r2has30_0) ? "1" : "0");
+
+ // 步骤 31:SEQ06-3] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s31 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S30-C1 SW", "6A82", s31.sw);
+
+ // 步骤 32: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 s32 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+ bind.checkData("S31-C1 SW1 91", "91", s32.sw.substring(0, 2));
+
+ // 步骤 33:SEQ07-1] MTD_STORE_DATA_Case3(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla33 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+ var s33 = bind.sendApdu(sdCla33, "E2", "90", "00", "BF320F5A0A989209012143658709F50101FF", null, null);
+ bind.checkData("S32-C2 response data absent", "1", s33.resp === "" ? "1" : "0");
+ bind.checkData("S32-C1 SW1 91", "91", s33.sw.substring(0, 2));
+
+ // 步骤 34: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 s34 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S33-C1 proactive command envelope", "1", (s34.resp.length >= 4 && s34.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S33-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S34:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s34tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // IC ref inline @E 步骤 35(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s84 = bind.resetAndAtr();
+ bind.checkData("IC35-IC1-K1-C1 ATR_present", "1", s84.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 35(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 s85 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC35-IC1-K2-C2 FCP_Template", "1", s85.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC35-IC1-K2-C4 SW", "9000", s85.sw);
+
+ // IC ref inline @E 步骤 35(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s86 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC35-IC1-K3-C4 SW", "9000", s86.sw);
+
+ // IC ref inline @E 步骤 35(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady87 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC35-IC1-K4-C4 final SW", "9000", steady87.final.sw);
+
+ // IC ref inline @E 步骤 35(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 s88 = bind.manageChannelOpen("9000");
+ bind.checkData("IC35-IC2-K1-C4 SW", "9000", s88.sw);
+ bind.checkData("IC35-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s88.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 35(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 s89 = 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("IC35-IC2-K2-C4 SW", "9000", s89.sw);
+
+ // 步骤 36:SEQ07-4] 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 sdCla36 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
+ var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S35-C1 SW", "9000", s36.sw);
+ var r2p36 = BindEs10xProcProfile.walkChoiceList(s36.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has36_0 = false;
+ for (var r2i36_0 = 0; r2i36_0 < r2p36.elements.length; r2i36_0++) {
+ var f = r2p36.elements[r2i36_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has36_0 = true; break; }
+ }
+ bind.checkData("S35-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p36.branch_tag === "A0" && r2has36_0) ? "1" : "0");
+
+ // 步骤 37:SEQ07-5] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s37 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S36-C1 SW", "6A82", s37.sw);
+
+ // 步骤 38: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 s38 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+ bind.checkData("S37-C1 SW1 91", "91", s38.sw.substring(0, 2));
+
+ // 步骤 39:SEQ08-1] MTD_STORE_DATA_Case3(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla39 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
+ var s39 = bind.sendApdu(sdCla39, "E2", "90", "00", "BF320F5A0A989209012143658709F5010100", null, "9000");
+ bind.checkData("S38-C1 SW", "9000", s39.sw);
+ bind.checkData("S38-C2 response data absent", "1", s39.resp === "" ? "1" : "0");
+
+ // 步骤 40:SEQ08-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 sdCla40 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
+ var s40 = bind.sendApdu(sdCla40, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S39-C1 SW", "9000", s40.sw);
+ var r2p40 = BindEs10xProcProfile.walkChoiceList(s40.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has40_0 = false;
+ for (var r2i40_0 = 0; r2i40_0 < r2p40.elements.length; r2i40_0++) {
+ var f = r2p40.elements[r2i40_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has40_0 = true; break; }
+ }
+ bind.checkData("S39-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p40.branch_tag === "A0" && r2has40_0) ? "1" : "0");
+
+ // 步骤 41:SEQ08-3] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s41 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S40-C1 SW", "6A82", s41.sw);
+
+ // 步骤 42: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 s42 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+ bind.checkData("S41-C1 SW1 91", "91", s42.sw.substring(0, 2));
+
+ // 步骤 43: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 s43 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S42-C1 proactive command envelope", "1", (s43.resp.length >= 4 && s43.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S42-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S43:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s43tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // 步骤 44:SEQ09-2] MTD_STORE_DATA_Case3(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla44 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
+ var s44 = bind.sendApdu(sdCla44, "E2", "90", "00", "BF320F5A0A989209012143658709F50101FF", null, "9000");
+ bind.checkData("S43-C1 SW", "9000", s44.sw);
+ bind.checkData("S43-C2 response data absent", "1", s44.resp === "" ? "1" : "0");
+
+ // 步骤 45: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 s45 = bind.terminalResponseForPending("80", "14", "00", "00", null);
+ bind.checkData("S44-C1 SW1 91", "91", s45.sw.substring(0, 2));
+
+ // 步骤 46: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 s46 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S45-C1 proactive command envelope", "1", (s46.resp.length >= 4 && s46.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S45-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S46:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s46tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // IC ref inline @E 步骤 47(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s90 = bind.resetAndAtr();
+ bind.checkData("IC47-IC1-K1-C1 ATR_present", "1", s90.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 47(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 s91 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC47-IC1-K2-C2 FCP_Template", "1", s91.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC47-IC1-K2-C4 SW", "9000", s91.sw);
+
+ // IC ref inline @E 步骤 47(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s92 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC47-IC1-K3-C4 SW", "9000", s92.sw);
+
+ // IC ref inline @E 步骤 47(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady93 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC47-IC1-K4-C4 final SW", "9000", steady93.final.sw);
+
+ // IC ref inline @E 步骤 47(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("IC47-IC2-K1-C4 SW", "9000", s94.sw);
+ bind.checkData("IC47-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s94.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 47(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("IC47-IC2-K2-C4 SW", "9000", s95.sw);
+
+ // 步骤 48:SEQ09-6] 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 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+ var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S47-C1 SW", "9000", s48.sw);
+ var r2p48 = BindEs10xProcProfile.walkChoiceList(s48.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has48_0 = false;
+ for (var r2i48_0 = 0; r2i48_0 < r2p48.elements.length; r2i48_0++) {
+ var f = r2p48.elements[r2i48_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has48_0 = true; break; }
+ }
+ bind.checkData("S47-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p48.branch_tag === "A0" && r2has48_0) ? "1" : "0");
+
+ // 步骤 49:SEQ09-7] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s49 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S48-C1 SW", "6A82", s49.sw);
+
+ // 步骤 50: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 s50 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+ bind.checkData("S49-C1 SW1 91", "91", s50.sw.substring(0, 2));
+
+ // 步骤 51: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 s51 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S50-C1 proactive command envelope", "1", (s51.resp.length >= 4 && s51.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S50-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+ // S51:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+ // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+ var s51tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+ // 步骤 52:SEQ10-2] MTD_STORE_DATA_Case3(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla52 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+ var s52 = bind.sendApdu(sdCla52, "E2", "90", "00", "BF320F5A0A989209012143658709F5010100", null, "9000");
+ bind.checkData("S51-C1 SW", "9000", s52.sw);
+ bind.checkData("S51-C2 response data absent", "1", s52.resp === "" ? "1" : "0");
+
+ // 步骤 53: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 s53 = bind.terminalResponseForPending("80", "14", "00", "00", null);
+ bind.checkData("S52-C1 SW1 != 91", "1", s53.sw.substring(0, 2) !== "91" ? "1" : "0");
+
+ // 步骤 54:SEQ10-4] 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 sdCla54 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+ var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S53-C1 SW", "9000", s54.sw);
+ var r2p54 = BindEs10xProcProfile.walkChoiceList(s54.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has54_0 = false;
+ for (var r2i54_0 = 0; r2i54_0 < r2p54.elements.length; r2i54_0++) {
+ var f = r2p54.elements[r2i54_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has54_0 = true; break; }
+ }
+ bind.checkData("S53-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p54.branch_tag === "A0" && r2has54_0) ? "1" : "0");
+
+ // 步骤 55:SEQ10-5] [SELECT_ICCID(tc_step;REQ: RQ24_025)
+ var s55 = bind.sendApdu("00", "A4", "00", "0C", "2FE2", null, "6A82");
+ bind.checkData("S54-C1 SW", "6A82", s55.sw);
}