源码对照:4.2.22.2.4
ES10c 停用 Profile 异常用例(Case 4) / TC_eUICC_ES10c.DisableProfile_ErrorCases_Case4
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
508 行 / 20985 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4/Import/TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4.js
305 行 / 26610 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js508 行 / 20985 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_01_Error_Disable_Profile_by_an_unknown_ISD_P_AID + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_02_Error_Disable_Profile_by_an_unknown_ICCID + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_03_Error_Disable_Profile_by_ISD_P_AID_is_not_possible_when_this_Operational_Profile_is_in_Disabled_state + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_04_Error_Disable_Profile_by_ICCID_is_not_possible_when_this_Operational_Profile_is_in_Disabled_state + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_05_Error_Disable_Profil_by_ISD_P_AID_not_possible_when_PPR1_is_set + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_06_Error_Disable_Profil_by_ICCID_not_possible_when_PPR1_is_set + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_07_Error_Disable_Profile_by_ISD_P_AID_without_refreshFlag_while_proactive_session_is_ongoing_catBusysupported + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_08_Error_Disable_Profile_by_ICCID_with_refreshFlag_set_while_proactive_session_is_ongoing_catBusysupported (extracted verbatim)
2
3function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_01_Error_Disable_Profile_by_an_unknown_ISD_P_AID()
4{
5 if(!Card_Have_ECC_Cert)
6 return;
7
8 TestOfMEPMode = 0;
9
10 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
11 var ISD_P_Test01 = curProfile_ISD_P_AID;
12
13
14
15 tracenamestr = "测试目的:通过未知的ISD-P AID去失效profile";
16 curDis.TraceStart(sno++,tracenamestr);
17
18 curLogicChannel = 0;
19 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
20 Ini_powerOn_eUICC_LPAe_not_activate();
21
22 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
23 TS_MANAGE_CHANNEL_OPEN();
24
25 curLogicChannel = 1;
26
27 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
28 TS_SELECT("Select ISD",ISD_R_AID,"9000");
29
30
31 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为 TRUE;");
32 var disableProRequest = new DisableProfileRequest();
33 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_AIDX);
34 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
35 disableProRequest.GenHexData();
36 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
37 curStrHandle.CheckData("BF3203800101", respData, "DisableProfileResponse");
38
39
40 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
41 var proInfoListRequest = new ProfileInfoListRequest();
42 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
43 proInfoListRequest.tagList = "5A4F9F70";
44 proInfoListRequest.GenHexData();
45 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
46
47
48 var proInfoListResponse = new ProfileInfoListResponse();
49 proInfoListResponse.checkCardResDataFormat(respData);
50
51 try
52 {
53 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
54 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
55 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
56 }catch(e){
57 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
58 }
59
60 RecoverCard();
61
62}
63
64function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_02_Error_Disable_Profile_by_an_unknown_ICCID()
65{
66 if(!Card_Have_ECC_Cert)
67 return;
68
69 TestOfMEPMode = 0;
70
71 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
72 var ISD_P_Test01 = curProfile_ISD_P_AID;
73
74
75 tracenamestr = "测试目的:通过未知的ICCID去失效profile";
76 curDis.TraceStart(sno++,tracenamestr);
77
78 curLogicChannel = 0;
79 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
80 Ini_powerOn_eUICC_LPAe_not_activate();
81
82 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
83 TS_MANAGE_CHANNEL_OPEN();
84
85 curLogicChannel = 1;
86
87 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
88 TS_SELECT("Select ISD",ISD_R_AID,"9000");
89
90
91 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为 TRUE;");
92 var disableProRequest = new DisableProfileRequest();
93 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROFX);
94 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
95 disableProRequest.GenHexData();
96 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
97 curStrHandle.CheckData("BF3203800101", respData, "DisableProfileResponse");//DisableProfileResponse ::= [50] SEQUENCE { -- Tag 'BF32' disableResult INTEGER {ok(0), iccidOrAidNotFound (1), profileNotInEnabledState(2), disallowedByPolicy(3), catBusy(5), undefinedError(127)} }
98
99
100 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
101 var proInfoListRequest = new ProfileInfoListRequest();
102 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
103 proInfoListRequest.tagList = "5A4F9F70";
104 proInfoListRequest.GenHexData();
105 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
106
107
108 var proInfoListResponse = new ProfileInfoListResponse();
109 proInfoListResponse.checkCardResDataFormat(respData);
110
111 try
112 {
113 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
114 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
115 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
116 }catch(e){
117 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
118 }
119
120 RecoverCard();
121}
122
123function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_03_Error_Disable_Profile_by_ISD_P_AID_is_not_possible_when_this_Operational_Profile_is_in_Disabled_state ()
124{
125 if(!Card_Have_ECC_Cert)
126 return;
127
128 TestOfMEPMode = 0;
129
130 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
131 var ISD_P_Test01 = curProfile_ISD_P_AID;
132
133 tracenamestr = "测试目的:通过ISD-P AID去失效已处于去失效状态的Operational Profile应不成功";
134 curDis.TraceStart(sno++,tracenamestr);
135
136 curLogicChannel = 0;
137 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
138 Ini_powerOn_eUICC_LPAe_not_activate();
139
140 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
141 TS_MANAGE_CHANNEL_OPEN();
142
143 curLogicChannel = 1;
144
145 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
146 TS_SELECT("Select ISD",ISD_R_AID,"9000");
147
148
149 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为 TRUE;");
150
151 var disableProRequest = new DisableProfileRequest();
152 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
153 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
154 disableProRequest.GenHexData();
155 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
156 curStrHandle.CheckData("BF3203800102", respData, "DisableProfileResponse");
157
158
159 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
160 var proInfoListRequest = new ProfileInfoListRequest();
161 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
162 proInfoListRequest.tagList = "5A4F9F70";
163 proInfoListRequest.GenHexData();
164 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
165
166
167 var proInfoListResponse = new ProfileInfoListResponse();
168 proInfoListResponse.checkCardResDataFormat(respData);
169
170 try
171 {
172 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
173 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
174 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
175 }catch(e){
176 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
177 }
178
179 RecoverCard();
180}
181
182function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_04_Error_Disable_Profile_by_ICCID_is_not_possible_when_this_Operational_Profile_is_in_Disabled_state ()
183{
184 if(!Card_Have_ECC_Cert)
185 return;
186
187 TestOfMEPMode = 0;
188
189 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
190 var ISD_P_Test01 = curProfile_ISD_P_AID;
191
192 tracenamestr = "测试目的:通过ICCID去失效已处于去失效状态的Operational Profile应不成功";
193 curDis.TraceStart(sno++,tracenamestr);
194
195 curLogicChannel = 0;
196 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
197 Ini_powerOn_eUICC_LPAe_not_activate();
198
199 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
200 TS_MANAGE_CHANNEL_OPEN();
201
202 curLogicChannel = 1;
203
204 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
205 TS_SELECT("Select ISD",ISD_R_AID,"9000");
206
207
208 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为 TRUE;");
209
210 var disableProRequest = new DisableProfileRequest();
211 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
212 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
213 disableProRequest.GenHexData();
214 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
215 curStrHandle.CheckData("BF3203800102", respData, "DisableProfileResponse");
216
217
218
219 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
220 var proInfoListRequest = new ProfileInfoListRequest();
221 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
222 proInfoListRequest.tagList = "5A4F9F70";
223 proInfoListRequest.GenHexData();
224 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
225
226
227 var proInfoListResponse = new ProfileInfoListResponse();
228 proInfoListResponse.checkCardResDataFormat(respData);
229
230 try
231 {
232 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
233 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
234 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
235 }catch(e){
236 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
237 }
238
239 RecoverCard();
240}
241
242function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_05_Error_Disable_Profil_by_ISD_P_AID_not_possible_when_PPR1_is_set ()//
243{
244 if(!Card_Have_ECC_Cert)
245 return;
246
247 TestOfMEPMode = 0;
248
249 initial_condition_PROFILE_OPERATIONAL4_is_Enabled();
250 var ISD_P_Test04 = curProfile_ISD_P_AID;
251
252 tracenamestr = "测试目的:通过ISD-P AID去失效设置了PPR1的profile应不成功";
253 curDis.TraceStart(sno++,tracenamestr);
254
255
256 curLogicChannel = 0;
257 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
258 Ini_powerOn_eUICC_LPAe_not_activate();
259
260 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
261 TS_MANAGE_CHANNEL_OPEN();
262
263 curLogicChannel = 1;
264
265 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
266 TS_SELECT("Select ISD",ISD_R_AID,"9000");
267
268
269 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为 TRUE;");
270 var disableProRequest = new DisableProfileRequest();
271 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test04);
272 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
273 disableProRequest.GenHexData();
274 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
275 curStrHandle.CheckData("BF3203800103", respData, "DisableProfileResponse");
276
277
278 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取所有profile信息;");
279 var proInfoListRequest = new ProfileInfoListRequest();
280 proInfoListRequest.GenHexData();
281 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
282
283 var proInfoListResponse = new ProfileInfoListResponse();
284 proInfoListResponse.checkCardResDataFormat(respData);
285 try
286 {
287
288 curStrHandle.CheckData(ICCID_OP_PROF4, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
289 curStrHandle.CheckData(ISD_P_Test04, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
290 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
291
292 }catch(e){
293 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
294 }
295
296 RecoverCard();
297
298
299}
300
301function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_06_Error_Disable_Profil_by_ICCID_not_possible_when_PPR1_is_set ()//
302{
303 if(!Card_Have_ECC_Cert)
304 return;
305
306 TestOfMEPMode = 0;
307
308 initial_condition_PROFILE_OPERATIONAL4_is_Enabled();
309 var ISD_P_Test04 = curProfile_ISD_P_AID;
310
311 tracenamestr = "测试目的:通过ICCID去失效设置了PPR1的profile应不成功";
312 curDis.TraceStart(sno++,tracenamestr);
313
314
315 curLogicChannel = 0;
316 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
317 Ini_powerOn_eUICC_LPAe_not_activate();
318
319 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
320 TS_MANAGE_CHANNEL_OPEN();
321
322 curLogicChannel = 1;
323
324 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
325 TS_SELECT("Select ISD",ISD_R_AID,"9000");
326
327
328 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,refreshFlag为 TRUE;");
329 var disableProRequest = new DisableProfileRequest();
330 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF4);
331 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
332 disableProRequest.GenHexData();
333 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
334 curStrHandle.CheckData("BF3203800103", respData, "DisableProfileResponse");
335
336
337 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取所有profile信息;");
338 var proInfoListRequest = new ProfileInfoListRequest();
339 proInfoListRequest.GenHexData();
340 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
341
342 var proInfoListResponse = new ProfileInfoListResponse();
343 proInfoListResponse.checkCardResDataFormat(respData);
344
345
346 try
347 {
348
349 curStrHandle.CheckData(ICCID_OP_PROF4, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
350 curStrHandle.CheckData(ISD_P_Test04, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
351 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
352
353 }catch(e){
354 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
355 }
356
357 RecoverCard();
358
359
360}
361
362function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_07_Error_Disable_Profile_by_ISD_P_AID_without_refreshFlag_while_proactive_session_is_ongoing_catBusysupported()
363{
364 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
365 var ISD_P_Test01 = curProfile_ISD_P_AID;
366
367 tracenamestr = "测试目的:eUICC支持catBusy,主动式会话进行中时,通过ISD-P AID去失效profile,不设置refreshFlag";
368 curDis.TraceStart(sno++,tracenamestr);
369
370 curLogicChannel = 0;
371 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
372 Ini_powerOn_eUICC_LPAe_not_activate();
373
374 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
375 TS_MANAGE_CHANNEL_OPEN();
376
377 curLogicChannel = 1;
378
379 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
380 TS_SELECT("Select ISD",ISD_R_AID,"9000");
381
382 curLogicChannel = 0;
383 var sSendType = SendTypeByOTA.SMS;
384 KIC = MNO_SCP80_ENC_KEY;
385 KID = MNO_SCP80_AUTH_KEY;
386 KIK = MNO_SCP80_DATA_ENC_KEY;
387 curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
388 sAPDU = "80F28002024F0000";
389 SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
390 HaveReEntry91XX = true;
391 var ss = obj.GetState();
392 ReEntry91XXLength = ss.substr(2,2);
393
394 curLogicChannel = 1;
395 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,当前有主动式命令正在进行,通过ISD-P失效profile指令不带有refreshFlag,应当失败;");
396 var disableProRequest = new DisableProfileRequest();
397 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test01);
398 disableProRequest.refreshFlag = BooleanValue_BerCode_False;
399 disableProRequest.GenHexData();
400 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
401
402 curStrHandle.CheckData("BF3203800105", respData, "DisableProfileResponse");
403
404 curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
405 curLogicChannel = 0;
406 CardSendMessageToServer(sSendType,1,"0161XX","00");
407
408 curDis.TestStepStart2(stno++,"SCP80,发送Terminal Response");
409 TerminalResponse("00","9000");
410 HaveReEntry91XX = false;
411
412 curLogicChannel = 1;
413 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
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 var proInfoListResponse = new ProfileInfoListResponse();
421 proInfoListResponse.checkCardResDataFormat(respData);
422
423 try
424 {
425 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
426 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
427 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
428 }catch(e){
429 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
430 }
431
432 RecoverCard();
433}
434
435function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_08_Error_Disable_Profile_by_ICCID_with_refreshFlag_set_while_proactive_session_is_ongoing_catBusysupported()
436{
437 initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
438 var ISD_P_Test01 = curProfile_ISD_P_AID;
439
440 tracenamestr = "测试目的:eUICC支持catBusy,主动式会话进行中时,通过ICCID去失效profile,并设置refreshFlag";
441 curDis.TraceStart(sno++,tracenamestr);
442
443 curLogicChannel = 0;
444 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
445 Ini_powerOn_eUICC_LPAe_not_activate();
446
447 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
448 TS_MANAGE_CHANNEL_OPEN();
449
450 curLogicChannel = 1;
451
452 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
453 TS_SELECT("Select ISD",ISD_R_AID,"9000");
454
455 curLogicChannel = 0;
456 var sSendType = SendTypeByOTA.SMS;
457 KIC = MNO_SCP80_ENC_KEY;
458 KID = MNO_SCP80_AUTH_KEY;
459 KIK = MNO_SCP80_DATA_ENC_KEY;
460 curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
461 sAPDU = "80F28002024F0000";
462 SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
463 HaveReEntry91XX = true;
464 var ss = obj.GetState();
465 ReEntry91XXLength = ss.substr(2,2);
466
467 curLogicChannel = 1;
468 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DisableProfileRequest,当前有主动式命令正在进行,通过ICCID失效profile指令不带有refreshFlag,应当失败;");
469 var disableProRequest = new DisableProfileRequest();
470 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
471 disableProRequest.refreshFlag = BooleanValue_BerCode_True;
472 disableProRequest.GenHexData();
473 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
474
475 curStrHandle.CheckData("BF3203800105", respData, "DisableProfileResponse");//catBusy(5)
476
477 curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
478 curLogicChannel = 0;
479 CardSendMessageToServer(sSendType,1,"0161XX","00");
480
481 curDis.TestStepStart2(stno++,"SCP80,发送Terminal Response");
482 TerminalResponse("00","9000");
483 HaveReEntry91XX = false;
484
485 curLogicChannel = 1;
486 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
487 var proInfoListRequest = new ProfileInfoListRequest();
488 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
489 proInfoListRequest.tagList = "5A4F9F70";
490 proInfoListRequest.GenHexData();
491 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
492
493 var proInfoListResponse = new ProfileInfoListResponse();
494 proInfoListResponse.checkCardResDataFormat(respData);
495
496 try
497 {
498 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
499 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
500 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
501 }catch(e){
502 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
503 }
504
505
506 RecoverCard();
507}
508
-cas 盲生成TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4/Import/TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4.js305 行 / 26610 字符 / gb18030入口函数 @L31
1// Author: 卡思Cas智能体
2// Date: 20261005-152741
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.DisableProfile_ErrorCases_Case4,Test Sequence #01 unknown ISD-P AID; #02 unknown ICCID; #03 disable when Disabled (ISD-P AID); #04 disable when Disabled (ICCID); #05 PPR1 set (ISD-P AID); #06 PPR1 set (ICCID); #07 catBusy refreshFlag not set; #08 catBusy refreshFlag set,适用性 M。
4// Test points: S1-C1 SW;S1-C2 disableResult iccidOrAidNotFound;S2-C1 SW
5// S2-C2 contains PROFILE_INFO1;S2-C3 contains entries1 iccid 989209012143658709F5;S3-C1 SW
6// S3-C2 disableResult iccidOrAidNotFound;S4-C1 SW;S4-C2 contains PROFILE_INFO1
7// S4-C3 contains entries1 iccid 989209012143658709F5;S5-C1 SW
8// S5-C2 disableResult profileNotInEnabledState;S6-C1 SW;S6-C2 contains PROFILE_INFO1_DISABLED
9// S6-C3 contains entries1 iccid 989209012143658709F5;S7-C1 SW
10// S7-C2 disableResult profileNotInEnabledState;S8-C1 SW;S8-C2 contains PROFILE_INFO1_DISABLED
11// S8-C3 contains entries1 iccid 989209012143658709F5;S9-C1 SW
12// S9-C2 disableResult disallowedByPolicy;S10-C1 SW;S10-C2 contains PROFILE_INFO4_ENABLED
13// S10-C3 contains entries1 iccid 989209015476981032F9;S11-C1 SW
14// S11-C2 disableResult disallowedByPolicy;S12-C1 SW;S12-C2 contains PROFILE_INFO4_ENABLED
15// S12-C3 contains entries1 iccid 989209015476981032F9;S13-C1 SW in 9000/91XX
16// S13-C2 disableResult catBusy;S14-C1 proactive command envelope;S15-C1 SW;S16-C1 SW
17// S16-C2 contains PROFILE_INFO1;S16-C3 contains entries1 iccid 989209012143658709F5
18// S17-C1 SW in 9000/91XX;S17-C2 disableResult catBusy;S18-C1 proactive command envelope;S19-C1 SW
19// S20-C1 SW;S20-C2 contains PROFILE_INFO1;S20-C3 contains entries1 iccid 989209012143658709F5
20// 本函数由 CaseIR 4.2.22.2.4 编译生成(fullwave-blindgen-live-70-W1-A3,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
21// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
22// 适用性 M:编译期门,运行时由 harness 环境前置承担。
23// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
24// GIC1 The PROFILE_OPERATIONAL1 has been installed on the eUICC.(Seq#5/#6 以 'PROFILE_OPERATIONAL1 is not loaded' 覆盖本条): declared unexpanded (no fabricated bytes; provenance = expansion_source).
25// Seq01-IC PROFILE_OPERATIONAL1 is Enabled; corresponds to <ISD_P_AID1>; the Operational Profile identified by <ISD_P_AIDX> is not loaded. IC1=PROC_EUICC_INITIALIZATION_SEQUENCE; IC2=PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR.: declared unexpanded (no fabricated bytes; provenance = expansion_source).
26// Seq02-IC PROFILE_OPERATIONAL1 is Enabled; the Operational Profile identified by ICCID #ICCID_OP_PROFX is not loaded. IC1/IC2 同上。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
27// Seq03/04-IC PROFILE_OPERATIONAL1 is Disabled on the eUICC(Seq03 另记 corresponds to <ISD_P_AID1>)。IC1/IC2 同上。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
28// Seq05/06-IC PROFILE_OPERATIONAL1 is not loaded(覆盖 GIC);PROFILE_OPERATIONAL4 installed and Enabled(Seq05 另记 corresponds to <ISD_P_AID4>)。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
29// Seq07/08-IC PROFILE_OPERATIONAL1 is Enabled(Seq07 另记 corresponds to <ISD_P_AID1>);IC3: S_Device → eUICC MTD_SEND_SMS_PP([GET_MNO_SD]) → SW=0x91XX(开启 proactive session);IC4: Do not send FETCH command。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
30// PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (no fabricated bytes; provenance = expansion_source).
31function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_01_02_03_04_05_06_07_08_merged() {
32 var bind = curBind;
33 var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_01_02_03_04_05_06_07_08_merged");
34 // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "f3b0c696af229268", "authority_reference": "E_tc_4222/38-38/G_annexB_dynamic:L51"}
35 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});
36 // runtime-bound payload: ISD_P_AID4 stays in execution domain; context_lineage: {"context_id": "f3b0c696af229268", "authority_reference": "E_tc_4222/1-1/G_annexB_dynamic:L52"}
37 var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID4", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
38 // runtime-bound payload: ISD_P_AIDX stays in execution domain; context_lineage: {"context_id": "f3b0c696af229268", "authority_reference": "E_tc_4222/1-1/G_annexB_dynamic:L55"}
39 var cardCtxLoad3 = BindCardContext.load(bind, profileAidSession, "ISD_P_AIDX", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
40
41 // 步骤 1:MTD_STORE_DATA(tc_step)
42 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
43 var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
44
45 // 步骤 2:Seq#01 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
46 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
47 // runtime-bound payload: ISD_P_AIDX stays in execution domain
48 var s2 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AIDX", "BF32154F10", "0101FF", profileAidSession), "00", "9000");
49 bind.checkData("S1-C1 SW", "9000", s2.sw);
50 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AIDX", s2.cmd, profileAidSession);
51 var r2w2 = BindGecaProc.parseGecaResponse(s2.resp, {outer: "BF32", required: ["80"]});
52 bind.checkData("S1-C2 disableResult iccidOrAidNotFound", "01", (r2w2.ok && r2w2.fields["80"] === "01") ? "01" : (r2w2.fields["80"] || "absent"));
53
54 // 步骤 3:Seq#01 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
55 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
56 // runtime-bound payload: ISD_P_AID1 stays in execution domain
57 var s3 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
58 bind.checkData("S2-C1 SW", "9000", s3.sw);
59 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s3.cmd, profileAidSession);
60 var r2p3 = BindEs10xProcProfile.walkChoiceList(s3.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
61 var r2has3_0 = false;
62 for (var r2i3_0 = 0; r2i3_0 < r2p3.elements.length; r2i3_0++) {
63 var f = r2p3.elements[r2i3_0].fields;
64 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has3_0 = true; break; }
65 }
66 bind.checkData("S2-C2 contains PROFILE_INFO1", "1", (r2p3.branch_tag === "A0" && r2has3_0) ? "1" : "0");
67 var r2has3_0 = false;
68 for (var r2i3_0 = 0; r2i3_0 < r2p3.elements.length; r2i3_0++) {
69 var f = r2p3.elements[r2i3_0].fields;
70 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has3_0 = true; break; }
71 }
72 bind.checkData("S2-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p3.branch_tag === "A0" && r2has3_0) ? "1" : "0");
73
74 // 步骤 4:Seq#02 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
75 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
76 var s4 = bind.sendApdu(null, "E2", "91", "00", "BF320F5A0A9892090143658709FFFF0101FF", "00", "9000");
77 bind.checkData("S3-C1 SW", "9000", s4.sw);
78 var r2w4 = BindGecaProc.parseGecaResponse(s4.resp, {outer: "BF32", required: ["80"]});
79 bind.checkData("S3-C2 disableResult iccidOrAidNotFound", "01", (r2w4.ok && r2w4.fields["80"] === "01") ? "01" : (r2w4.fields["80"] || "absent"));
80
81 // 步骤 5:Seq#02 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
82 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
83 var s5 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
84 bind.checkData("S4-C1 SW", "9000", s5.sw);
85 var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
86 var r2has5_0 = false;
87 for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
88 var f = r2p5.elements[r2i5_0].fields;
89 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has5_0 = true; break; }
90 }
91 bind.checkData("S4-C2 contains PROFILE_INFO1", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
92 var r2has5_0 = false;
93 for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
94 var f = r2p5.elements[r2i5_0].fields;
95 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has5_0 = true; break; }
96 }
97 bind.checkData("S4-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
98
99 // 步骤 6:Seq#03 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
100 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
101 // runtime-bound payload: ISD_P_AID1 stays in execution domain
102 var s6 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "0101FF", profileAidSession), "00", "9000");
103 bind.checkData("S5-C1 SW", "9000", s6.sw);
104 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s6.cmd, profileAidSession);
105 var r2w6 = BindGecaProc.parseGecaResponse(s6.resp, {outer: "BF32", required: ["80"]});
106 bind.checkData("S5-C2 disableResult profileNotInEnabledState", "02", (r2w6.ok && r2w6.fields["80"] === "02") ? "02" : (r2w6.fields["80"] || "absent"));
107 // S5-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
108 // S5-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
109
110 // 步骤 7:Seq#03 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
111 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
112 // runtime-bound payload: ISD_P_AID1 stays in execution domain
113 var s7 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
114 bind.checkData("S6-C1 SW", "9000", s7.sw);
115 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s7.cmd, profileAidSession);
116 var r2p7 = BindEs10xProcProfile.walkChoiceList(s7.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
117 var r2has7_0 = false;
118 for (var r2i7_0 = 0; r2i7_0 < r2p7.elements.length; r2i7_0++) {
119 var f = r2p7.elements[r2i7_0].fields;
120 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has7_0 = true; break; }
121 }
122 bind.checkData("S6-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p7.branch_tag === "A0" && r2has7_0) ? "1" : "0");
123 var r2has7_0 = false;
124 for (var r2i7_0 = 0; r2i7_0 < r2p7.elements.length; r2i7_0++) {
125 var f = r2p7.elements[r2i7_0].fields;
126 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has7_0 = true; break; }
127 }
128 bind.checkData("S6-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p7.branch_tag === "A0" && r2has7_0) ? "1" : "0");
129
130 // 步骤 8:Seq#04 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
131 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
132 var s8 = bind.sendApdu(null, "E2", "91", "00", "BF320F5A0A989209012143658709F50101FF", "00", "9000");
133 bind.checkData("S7-C1 SW", "9000", s8.sw);
134 var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF32", required: ["80"]});
135 bind.checkData("S7-C2 disableResult profileNotInEnabledState", "02", (r2w8.ok && r2w8.fields["80"] === "02") ? "02" : (r2w8.fields["80"] || "absent"));
136 // S7-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
137 // S7-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
138
139 // 步骤 9:Seq#04 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
140 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
141 var s9 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
142 bind.checkData("S8-C1 SW", "9000", s9.sw);
143 var r2p9 = BindEs10xProcProfile.walkChoiceList(s9.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
144 var r2has9_0 = false;
145 for (var r2i9_0 = 0; r2i9_0 < r2p9.elements.length; r2i9_0++) {
146 var f = r2p9.elements[r2i9_0].fields;
147 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has9_0 = true; break; }
148 }
149 bind.checkData("S8-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p9.branch_tag === "A0" && r2has9_0) ? "1" : "0");
150 var r2has9_0 = false;
151 for (var r2i9_0 = 0; r2i9_0 < r2p9.elements.length; r2i9_0++) {
152 var f = r2p9.elements[r2i9_0].fields;
153 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has9_0 = true; break; }
154 }
155 bind.checkData("S8-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p9.branch_tag === "A0" && r2has9_0) ? "1" : "0");
156
157 // 步骤 10:Seq#05 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ32_033, RQ32_034, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150, RQ57_141, RQ57_142, RQ29_002, RQ29_022)
158 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
159 // runtime-bound payload: ISD_P_AID4 stays in execution domain
160 var s10 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID4", "BF32154F10", "0101FF", profileAidSession), "00", "9000");
161 bind.checkData("S9-C1 SW", "9000", s10.sw);
162 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID4", s10.cmd, profileAidSession);
163 var r2w10 = BindGecaProc.parseGecaResponse(s10.resp, {outer: "BF32", required: ["80"]});
164 bind.checkData("S9-C2 disableResult disallowedByPolicy", "03", (r2w10.ok && r2w10.fields["80"] === "03") ? "03" : (r2w10.fields["80"] || "absent"));
165 // S9-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
166 // S9-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
167
168 // 步骤 11:Seq#05 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ32_033, RQ32_034, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
169 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
170 // runtime-bound payload: ISD_P_AID4 stays in execution domain
171 var s11 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID4", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
172 bind.checkData("S10-C1 SW", "9000", s11.sw);
173 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID4", s11.cmd, profileAidSession);
174 var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
175 var r2has11_0 = false;
176 for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
177 var f = r2p11.elements[r2i11_0].fields;
178 if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has11_0 = true; break; }
179 }
180 bind.checkData("S10-C2 contains PROFILE_INFO4_ENABLED", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
181 var r2has11_0 = false;
182 for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
183 var f = r2p11.elements[r2i11_0].fields;
184 if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has11_0 = true; break; }
185 }
186 bind.checkData("S10-C3 contains entries1 iccid 989209015476981032F9", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
187
188 // 步骤 12:Seq#06 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ32_033, RQ32_034, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150, RQ29_002, RQ29_022)
189 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
190 var s12 = bind.sendApdu(null, "E2", "91", "00", "BF320F5A0A989209015476981032F90101FF", "00", "9000");
191 bind.checkData("S11-C1 SW", "9000", s12.sw);
192 var r2w12 = BindGecaProc.parseGecaResponse(s12.resp, {outer: "BF32", required: ["80"]});
193 bind.checkData("S11-C2 disableResult disallowedByPolicy", "03", (r2w12.ok && r2w12.fields["80"] === "03") ? "03" : (r2w12.fields["80"] || "absent"));
194 // S11-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
195 // S11-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
196
197 // 步骤 13:Seq#06 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ32_033, RQ32_034, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
198 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
199 var s13 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209015476981032F9", "00", "9000");
200 bind.checkData("S12-C1 SW", "9000", s13.sw);
201 var r2p13 = BindEs10xProcProfile.walkChoiceList(s13.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
202 var r2has13_0 = false;
203 for (var r2i13_0 = 0; r2i13_0 < r2p13.elements.length; r2i13_0++) {
204 var f = r2p13.elements[r2i13_0].fields;
205 if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has13_0 = true; break; }
206 }
207 bind.checkData("S12-C2 contains PROFILE_INFO4_ENABLED", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
208 var r2has13_0 = false;
209 for (var r2i13_0 = 0; r2i13_0 < r2p13.elements.length; r2i13_0++) {
210 var f = r2p13.elements[r2i13_0].fields;
211 if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has13_0 = true; break; }
212 }
213 bind.checkData("S12-C3 contains entries1 iccid 989209015476981032F9", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
214
215 // 步骤 14:Seq#07 Step1] MTD_STORE_DATA(tc_step;REQ: RQ57_142)
216 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
217 // runtime-bound payload: ISD_P_AID1 stays in execution domain
218 var s14 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "010100", profileAidSession), "00", null);
219 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s14.cmd, profileAidSession);
220 bind.checkData("S13-C1 SW in 9000/91XX", "1", (s14.sw === "9000" || (s14.sw.substring(0, 2) === "91")) ? "1" : "0");
221 var r2w14 = BindGecaProc.parseGecaResponse(s14.resp, {outer: "BF32", required: ["80"]});
222 bind.checkData("S13-C2 disableResult catBusy", "05", (r2w14.ok && r2w14.fields["80"] === "05") ? "05" : (r2w14.fields["80"] || "absent"));
223 // S13-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
224 // S13-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
225
226 // 步骤 15:Seq#07 Step2] FETCH 'XX'(tc_step)
227 // FETCH header literals follow the golden wire evidence 8012 (same
228 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
229 // gives mechanism only). Le = pending length from the last 91XX
230 // (chain rule, binding-internal state).
231 var s15 = bind.fetchPending("80", "12", "00", "00", null);
232 bind.checkData("S14-C1 proactive command envelope", "1", (s15.resp.length >= 4 && s15.resp.substring(0, 2) === "D0") ? "1" : "0");
233 // S14-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
234
235 // 步骤 16:Seq#07 Step3] TERMINAL RESPONSE(tc_step)
236 // TERMINAL RESPONSE data is dynamically built by the binding from the
237 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
238 // Header literals follow the golden wire evidence 8014.
239 var s16 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
240 bind.checkData("S15-C1 SW", "9000", s16.sw);
241
242 // 步骤 17:Seq#07 Step4] MTD_STORE_DATA(tc_step)
243 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
244 // runtime-bound payload: ISD_P_AID1 stays in execution domain
245 var s17 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
246 bind.checkData("S16-C1 SW", "9000", s17.sw);
247 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s17.cmd, profileAidSession);
248 var r2p17 = BindEs10xProcProfile.walkChoiceList(s17.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
249 var r2has17_0 = false;
250 for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
251 var f = r2p17.elements[r2i17_0].fields;
252 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has17_0 = true; break; }
253 }
254 bind.checkData("S16-C2 contains PROFILE_INFO1", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
255 var r2has17_0 = false;
256 for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
257 var f = r2p17.elements[r2i17_0].fields;
258 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has17_0 = true; break; }
259 }
260 bind.checkData("S16-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
261
262 // 步骤 18:Seq#08 Step1] MTD_STORE_DATA(tc_step;REQ: RQ57_142_10)
263 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
264 var s18 = bind.sendApdu(null, "E2", "91", "00", "BF320F5A0A989209012143658709F50101FF", "00", null);
265 bind.checkData("S17-C1 SW in 9000/91XX", "1", (s18.sw === "9000" || (s18.sw.substring(0, 2) === "91")) ? "1" : "0");
266 var r2w18 = BindGecaProc.parseGecaResponse(s18.resp, {outer: "BF32", required: ["80"]});
267 bind.checkData("S17-C2 disableResult catBusy", "05", (r2w18.ok && r2w18.fields["80"] === "05") ? "05" : (r2w18.fields["80"] || "absent"));
268 // S17-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
269 // S17-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
270
271 // 步骤 19:Seq#08 Step2] FETCH 'XX'(tc_step)
272 // FETCH header literals follow the golden wire evidence 8012 (same
273 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
274 // gives mechanism only). Le = pending length from the last 91XX
275 // (chain rule, binding-internal state).
276 var s19 = bind.fetchPending("80", "12", "00", "00", null);
277 bind.checkData("S18-C1 proactive command envelope", "1", (s19.resp.length >= 4 && s19.resp.substring(0, 2) === "D0") ? "1" : "0");
278 // S18-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
279
280 // 步骤 20:Seq#08 Step3] TERMINAL RESPONSE(tc_step)
281 // TERMINAL RESPONSE data is dynamically built by the binding from the
282 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
283 // Header literals follow the golden wire evidence 8014.
284 var s20 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
285 bind.checkData("S19-C1 SW", "9000", s20.sw);
286
287 // 步骤 21:Seq#08 Step4] MTD_STORE_DATA(tc_step)
288 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
289 var s21 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
290 bind.checkData("S20-C1 SW", "9000", s21.sw);
291 var r2p21 = BindEs10xProcProfile.walkChoiceList(s21.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
292 var r2has21_0 = false;
293 for (var r2i21_0 = 0; r2i21_0 < r2p21.elements.length; r2i21_0++) {
294 var f = r2p21.elements[r2i21_0].fields;
295 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has21_0 = true; break; }
296 }
297 bind.checkData("S20-C2 contains PROFILE_INFO1", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
298 var r2has21_0 = false;
299 for (var r2i21_0 = 0; r2i21_0 < r2p21.elements.length; r2i21_0++) {
300 var f = r2p21.elements[r2i21_0].fields;
301 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has21_0 = true; break; }
302 }
303 bind.checkData("S20-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
304}
305
完整 unified diff
行级差异:新增 303 行 / 删除 506 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(814 行)
--- -man
+++ -cas
@@ -1,508 +1,305 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_01_Error_Disable_Profile_by_an_unknown_ISD_P_AID + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_02_Error_Disable_Profile_by_an_unknown_ICCID + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_03_Error_Disable_Profile_by_ISD_P_AID_is_not_possible_when_this_Operational_Profile_is_in_Disabled_state + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_04_Error_Disable_Profile_by_ICCID_is_not_possible_when_this_Operational_Profile_is_in_Disabled_state + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_05_Error_Disable_Profil_by_ISD_P_AID_not_possible_when_PPR1_is_set + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_06_Error_Disable_Profil_by_ICCID_not_possible_when_PPR1_is_set + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_07_Error_Disable_Profile_by_ISD_P_AID_without_refreshFlag_while_proactive_session_is_ongoing_catBusysupported + TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_08_Error_Disable_Profile_by_ICCID_with_refreshFlag_set_while_proactive_session_is_ongoing_catBusysupported (extracted verbatim)
-
-function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_01_Error_Disable_Profile_by_an_unknown_ISD_P_AID()
-{
- 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";
- 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为 TRUE;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_AIDX);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
- curStrHandle.CheckData("BF3203800101", respData, "DisableProfileResponse");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_02_Error_Disable_Profile_by_an_unknown_ICCID()
-{
- 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";
- 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为 TRUE;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROFX);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
- curStrHandle.CheckData("BF3203800101", respData, "DisableProfileResponse");//DisableProfileResponse ::= [50] SEQUENCE { -- Tag 'BF32' disableResult INTEGER {ok(0), iccidOrAidNotFound (1), profileNotInEnabledState(2), disallowedByPolicy(3), catBusy(5), undefinedError(127)} }
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_03_Error_Disable_Profile_by_ISD_P_AID_is_not_possible_when_this_Operational_Profile_is_in_Disabled_state ()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:通过ISD-P AID去失效已处于去失效状态的Operational Profile应不成功";
- 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为 TRUE;");
-
- 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,"91","00","9000");
- curStrHandle.CheckData("BF3203800102", respData, "DisableProfileResponse");
-
-
- 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);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_04_Error_Disable_Profile_by_ICCID_is_not_possible_when_this_Operational_Profile_is_in_Disabled_state ()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:通过ICCID去失效已处于去失效状态的Operational Profile应不成功";
- 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为 TRUE;");
-
- 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,"91","00","9000");
- curStrHandle.CheckData("BF3203800102", 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);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_05_Error_Disable_Profil_by_ISD_P_AID_not_possible_when_PPR1_is_set ()//
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL4_is_Enabled();
- var ISD_P_Test04 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:通过ISD-P AID去失效设置了PPR1的profile应不成功";
- 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为 TRUE;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_Test04);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
- curStrHandle.CheckData("BF3203800103", respData, "DisableProfileResponse");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取所有profile信息;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
- try
- {
-
- curStrHandle.CheckData(ICCID_OP_PROF4, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test04, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- RecoverCard();
-
-
-}
-
-function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_06_Error_Disable_Profil_by_ICCID_not_possible_when_PPR1_is_set ()//
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL4_is_Enabled();
- var ISD_P_Test04 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:通过ICCID去失效设置了PPR1的profile应不成功";
- 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为 TRUE;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF4);
- disableProRequest.refreshFlag = BooleanValue_BerCode_True;
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData,"91","00","9000");
- curStrHandle.CheckData("BF3203800103", respData, "DisableProfileResponse");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取所有profile信息;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
-
- try
- {
-
- curStrHandle.CheckData(ICCID_OP_PROF4, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test04, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- RecoverCard();
-
-
-}
-
-function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_07_Error_Disable_Profile_by_ISD_P_AID_without_refreshFlag_while_proactive_session_is_ongoing_catBusysupported()
-{
- initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:eUICC支持catBusy,主动式会话进行中时,通过ISD-P AID去失效profile,不设置refreshFlag";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curLogicChannel = 0;
- 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 = "80F28002024F0000";
- 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,当前有主动式命令正在进行,通过ISD-P失效profile指令不带有refreshFlag,应当失败;");
- 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,"91","00","9000");
-
- curStrHandle.CheckData("BF3203800105", respData, "DisableProfileResponse");
-
- curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
- curLogicChannel = 0;
- CardSendMessageToServer(sSendType,1,"0161XX","00");
-
- curDis.TestStepStart2(stno++,"SCP80,发送Terminal Response");
- TerminalResponse("00","9000");
- HaveReEntry91XX = false;
-
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_08_Error_Disable_Profile_by_ICCID_with_refreshFlag_set_while_proactive_session_is_ongoing_catBusysupported()
-{
- 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 = "80F28002024F0000";
- 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,当前有主动式命令正在进行,通过ICCID失效profile指令不带有refreshFlag,应当失败;");
- 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,"91","00","9000");
-
- curStrHandle.CheckData("BF3203800105", respData, "DisableProfileResponse");//catBusy(5)
-
- curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
- curLogicChannel = 0;
- CardSendMessageToServer(sSendType,1,"0161XX","00");
-
- curDis.TestStepStart2(stno++,"SCP80,发送Terminal Response");
- TerminalResponse("00","9000");
- HaveReEntry91XX = false;
-
- curLogicChannel = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261005-152741
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.DisableProfile_ErrorCases_Case4,Test Sequence #01 unknown ISD-P AID; #02 unknown ICCID; #03 disable when Disabled (ISD-P AID); #04 disable when Disabled (ICCID); #05 PPR1 set (ISD-P AID); #06 PPR1 set (ICCID); #07 catBusy refreshFlag not set; #08 catBusy refreshFlag set,适用性 M。
+// Test points: S1-C1 SW;S1-C2 disableResult iccidOrAidNotFound;S2-C1 SW
+// S2-C2 contains PROFILE_INFO1;S2-C3 contains entries1 iccid 989209012143658709F5;S3-C1 SW
+// S3-C2 disableResult iccidOrAidNotFound;S4-C1 SW;S4-C2 contains PROFILE_INFO1
+// S4-C3 contains entries1 iccid 989209012143658709F5;S5-C1 SW
+// S5-C2 disableResult profileNotInEnabledState;S6-C1 SW;S6-C2 contains PROFILE_INFO1_DISABLED
+// S6-C3 contains entries1 iccid 989209012143658709F5;S7-C1 SW
+// S7-C2 disableResult profileNotInEnabledState;S8-C1 SW;S8-C2 contains PROFILE_INFO1_DISABLED
+// S8-C3 contains entries1 iccid 989209012143658709F5;S9-C1 SW
+// S9-C2 disableResult disallowedByPolicy;S10-C1 SW;S10-C2 contains PROFILE_INFO4_ENABLED
+// S10-C3 contains entries1 iccid 989209015476981032F9;S11-C1 SW
+// S11-C2 disableResult disallowedByPolicy;S12-C1 SW;S12-C2 contains PROFILE_INFO4_ENABLED
+// S12-C3 contains entries1 iccid 989209015476981032F9;S13-C1 SW in 9000/91XX
+// S13-C2 disableResult catBusy;S14-C1 proactive command envelope;S15-C1 SW;S16-C1 SW
+// S16-C2 contains PROFILE_INFO1;S16-C3 contains entries1 iccid 989209012143658709F5
+// S17-C1 SW in 9000/91XX;S17-C2 disableResult catBusy;S18-C1 proactive command envelope;S19-C1 SW
+// S20-C1 SW;S20-C2 contains PROFILE_INFO1;S20-C3 contains entries1 iccid 989209012143658709F5
+// 本函数由 CaseIR 4.2.22.2.4 编译生成(fullwave-blindgen-live-70-W1-A3,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 环境前置承担。
+// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
+// GIC1 The PROFILE_OPERATIONAL1 has been installed on the eUICC.(Seq#5/#6 以 'PROFILE_OPERATIONAL1 is not loaded' 覆盖本条): declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq01-IC PROFILE_OPERATIONAL1 is Enabled; corresponds to <ISD_P_AID1>; the Operational Profile identified by <ISD_P_AIDX> is not loaded. IC1=PROC_EUICC_INITIALIZATION_SEQUENCE; IC2=PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR.: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq02-IC PROFILE_OPERATIONAL1 is Enabled; the Operational Profile identified by ICCID #ICCID_OP_PROFX is not loaded. IC1/IC2 同上。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq03/04-IC PROFILE_OPERATIONAL1 is Disabled on the eUICC(Seq03 另记 corresponds to <ISD_P_AID1>)。IC1/IC2 同上。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq05/06-IC PROFILE_OPERATIONAL1 is not loaded(覆盖 GIC);PROFILE_OPERATIONAL4 installed and Enabled(Seq05 另记 corresponds to <ISD_P_AID4>)。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq07/08-IC PROFILE_OPERATIONAL1 is Enabled(Seq07 另记 corresponds to <ISD_P_AID1>);IC3: S_Device → eUICC MTD_SEND_SMS_PP([GET_MNO_SD]) → SW=0x91XX(开启 proactive session);IC4: Do not send FETCH command。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+function TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_01_02_03_04_05_06_07_08_merged() {
+ var bind = curBind;
+ var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_DisableProfile_ErrorCases_Case4_01_02_03_04_05_06_07_08_merged");
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "f3b0c696af229268", "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});
+ // runtime-bound payload: ISD_P_AID4 stays in execution domain; context_lineage: {"context_id": "f3b0c696af229268", "authority_reference": "E_tc_4222/1-1/G_annexB_dynamic:L52"}
+ var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID4", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+ // runtime-bound payload: ISD_P_AIDX stays in execution domain; context_lineage: {"context_id": "f3b0c696af229268", "authority_reference": "E_tc_4222/1-1/G_annexB_dynamic:L55"}
+ var cardCtxLoad3 = BindCardContext.load(bind, profileAidSession, "ISD_P_AIDX", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+
+ // 步骤 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:Seq#01 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AIDX stays in execution domain
+ var s2 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AIDX", "BF32154F10", "0101FF", profileAidSession), "00", "9000");
+ bind.checkData("S1-C1 SW", "9000", s2.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AIDX", s2.cmd, profileAidSession);
+ var r2w2 = BindGecaProc.parseGecaResponse(s2.resp, {outer: "BF32", required: ["80"]});
+ bind.checkData("S1-C2 disableResult iccidOrAidNotFound", "01", (r2w2.ok && r2w2.fields["80"] === "01") ? "01" : (r2w2.fields["80"] || "absent"));
+
+ // 步骤 3:Seq#01 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s3 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S2-C1 SW", "9000", s3.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s3.cmd, profileAidSession);
+ var r2p3 = BindEs10xProcProfile.walkChoiceList(s3.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has3_0 = false;
+ for (var r2i3_0 = 0; r2i3_0 < r2p3.elements.length; r2i3_0++) {
+ var f = r2p3.elements[r2i3_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has3_0 = true; break; }
+ }
+ bind.checkData("S2-C2 contains PROFILE_INFO1", "1", (r2p3.branch_tag === "A0" && r2has3_0) ? "1" : "0");
+ var r2has3_0 = false;
+ for (var r2i3_0 = 0; r2i3_0 < r2p3.elements.length; r2i3_0++) {
+ var f = r2p3.elements[r2i3_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has3_0 = true; break; }
+ }
+ bind.checkData("S2-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p3.branch_tag === "A0" && r2has3_0) ? "1" : "0");
+
+ // 步骤 4:Seq#02 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s4 = bind.sendApdu(null, "E2", "91", "00", "BF320F5A0A9892090143658709FFFF0101FF", "00", "9000");
+ bind.checkData("S3-C1 SW", "9000", s4.sw);
+ var r2w4 = BindGecaProc.parseGecaResponse(s4.resp, {outer: "BF32", required: ["80"]});
+ bind.checkData("S3-C2 disableResult iccidOrAidNotFound", "01", (r2w4.ok && r2w4.fields["80"] === "01") ? "01" : (r2w4.fields["80"] || "absent"));
+
+ // 步骤 5:Seq#02 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s5 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S4-C1 SW", "9000", s5.sw);
+ var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has5_0 = false;
+ for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
+ var f = r2p5.elements[r2i5_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has5_0 = true; break; }
+ }
+ bind.checkData("S4-C2 contains PROFILE_INFO1", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
+ var r2has5_0 = false;
+ for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
+ var f = r2p5.elements[r2i5_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has5_0 = true; break; }
+ }
+ bind.checkData("S4-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
+
+ // 步骤 6:Seq#03 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s6 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "0101FF", profileAidSession), "00", "9000");
+ bind.checkData("S5-C1 SW", "9000", s6.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s6.cmd, profileAidSession);
+ var r2w6 = BindGecaProc.parseGecaResponse(s6.resp, {outer: "BF32", required: ["80"]});
+ bind.checkData("S5-C2 disableResult profileNotInEnabledState", "02", (r2w6.ok && r2w6.fields["80"] === "02") ? "02" : (r2w6.fields["80"] || "absent"));
+ // S5-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S5-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
+
+ // 步骤 7:Seq#03 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s7 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S6-C1 SW", "9000", s7.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s7.cmd, profileAidSession);
+ var r2p7 = BindEs10xProcProfile.walkChoiceList(s7.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has7_0 = false;
+ for (var r2i7_0 = 0; r2i7_0 < r2p7.elements.length; r2i7_0++) {
+ var f = r2p7.elements[r2i7_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has7_0 = true; break; }
+ }
+ bind.checkData("S6-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p7.branch_tag === "A0" && r2has7_0) ? "1" : "0");
+ var r2has7_0 = false;
+ for (var r2i7_0 = 0; r2i7_0 < r2p7.elements.length; r2i7_0++) {
+ var f = r2p7.elements[r2i7_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has7_0 = true; break; }
+ }
+ bind.checkData("S6-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p7.branch_tag === "A0" && r2has7_0) ? "1" : "0");
+
+ // 步骤 8:Seq#04 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s8 = bind.sendApdu(null, "E2", "91", "00", "BF320F5A0A989209012143658709F50101FF", "00", "9000");
+ bind.checkData("S7-C1 SW", "9000", s8.sw);
+ var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF32", required: ["80"]});
+ bind.checkData("S7-C2 disableResult profileNotInEnabledState", "02", (r2w8.ok && r2w8.fields["80"] === "02") ? "02" : (r2w8.fields["80"] || "absent"));
+ // S7-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S7-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
+
+ // 步骤 9:Seq#04 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s9 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S8-C1 SW", "9000", s9.sw);
+ var r2p9 = BindEs10xProcProfile.walkChoiceList(s9.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has9_0 = false;
+ for (var r2i9_0 = 0; r2i9_0 < r2p9.elements.length; r2i9_0++) {
+ var f = r2p9.elements[r2i9_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has9_0 = true; break; }
+ }
+ bind.checkData("S8-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p9.branch_tag === "A0" && r2has9_0) ? "1" : "0");
+ var r2has9_0 = false;
+ for (var r2i9_0 = 0; r2i9_0 < r2p9.elements.length; r2i9_0++) {
+ var f = r2p9.elements[r2i9_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has9_0 = true; break; }
+ }
+ bind.checkData("S8-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p9.branch_tag === "A0" && r2has9_0) ? "1" : "0");
+
+ // 步骤 10:Seq#05 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ32_033, RQ32_034, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150, RQ57_141, RQ57_142, RQ29_002, RQ29_022)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID4 stays in execution domain
+ var s10 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID4", "BF32154F10", "0101FF", profileAidSession), "00", "9000");
+ bind.checkData("S9-C1 SW", "9000", s10.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID4", s10.cmd, profileAidSession);
+ var r2w10 = BindGecaProc.parseGecaResponse(s10.resp, {outer: "BF32", required: ["80"]});
+ bind.checkData("S9-C2 disableResult disallowedByPolicy", "03", (r2w10.ok && r2w10.fields["80"] === "03") ? "03" : (r2w10.fields["80"] || "absent"));
+ // S9-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S9-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
+
+ // 步骤 11:Seq#05 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ32_033, RQ32_034, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID4 stays in execution domain
+ var s11 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID4", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S10-C1 SW", "9000", s11.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID4", s11.cmd, profileAidSession);
+ var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has11_0 = false;
+ for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
+ var f = r2p11.elements[r2i11_0].fields;
+ if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has11_0 = true; break; }
+ }
+ bind.checkData("S10-C2 contains PROFILE_INFO4_ENABLED", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
+ var r2has11_0 = false;
+ for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
+ var f = r2p11.elements[r2i11_0].fields;
+ if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has11_0 = true; break; }
+ }
+ bind.checkData("S10-C3 contains entries1 iccid 989209015476981032F9", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
+
+ // 步骤 12:Seq#06 Step1] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ32_033, RQ32_034, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150, RQ29_002, RQ29_022)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s12 = bind.sendApdu(null, "E2", "91", "00", "BF320F5A0A989209015476981032F90101FF", "00", "9000");
+ bind.checkData("S11-C1 SW", "9000", s12.sw);
+ var r2w12 = BindGecaProc.parseGecaResponse(s12.resp, {outer: "BF32", required: ["80"]});
+ bind.checkData("S11-C2 disableResult disallowedByPolicy", "03", (r2w12.ok && r2w12.fields["80"] === "03") ? "03" : (r2w12.fields["80"] || "absent"));
+ // S11-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S11-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
+
+ // 步骤 13:Seq#06 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_031, RQ32_032, RQ32_033, RQ32_034, RQ57_142_2, RQ57_142_3, RQ57_142_4, RQ57_142_15, RQ57_149, RQ57_150)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s13 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209015476981032F9", "00", "9000");
+ bind.checkData("S12-C1 SW", "9000", s13.sw);
+ var r2p13 = BindEs10xProcProfile.walkChoiceList(s13.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has13_0 = false;
+ for (var r2i13_0 = 0; r2i13_0 < r2p13.elements.length; r2i13_0++) {
+ var f = r2p13.elements[r2i13_0].fields;
+ if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has13_0 = true; break; }
+ }
+ bind.checkData("S12-C2 contains PROFILE_INFO4_ENABLED", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
+ var r2has13_0 = false;
+ for (var r2i13_0 = 0; r2i13_0 < r2p13.elements.length; r2i13_0++) {
+ var f = r2p13.elements[r2i13_0].fields;
+ if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has13_0 = true; break; }
+ }
+ bind.checkData("S12-C3 contains entries1 iccid 989209015476981032F9", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
+
+ // 步骤 14:Seq#07 Step1] MTD_STORE_DATA(tc_step;REQ: RQ57_142)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s14 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF32154F10", "010100", profileAidSession), "00", null);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s14.cmd, profileAidSession);
+ bind.checkData("S13-C1 SW in 9000/91XX", "1", (s14.sw === "9000" || (s14.sw.substring(0, 2) === "91")) ? "1" : "0");
+ var r2w14 = BindGecaProc.parseGecaResponse(s14.resp, {outer: "BF32", required: ["80"]});
+ bind.checkData("S13-C2 disableResult catBusy", "05", (r2w14.ok && r2w14.fields["80"] === "05") ? "05" : (r2w14.fields["80"] || "absent"));
+ // S13-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S13-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
+
+ // 步骤 15:Seq#07 Step2] 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 s15 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S14-C1 proactive command envelope", "1", (s15.resp.length >= 4 && s15.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S14-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+ // 步骤 16:Seq#07 Step3] TERMINAL RESPONSE(tc_step)
+ // TERMINAL RESPONSE data is dynamically built by the binding from the
+ // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+ // Header literals follow the golden wire evidence 8014.
+ var s16 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s16.sw);
+
+ // 步骤 17:Seq#07 Step4] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s17 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", 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"] === "01") { r2has17_0 = true; break; }
+ }
+ bind.checkData("S16-C2 contains PROFILE_INFO1", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
+ 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"] === "01") { r2has17_0 = true; break; }
+ }
+ bind.checkData("S16-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
+
+ // 步骤 18:Seq#08 Step1] MTD_STORE_DATA(tc_step;REQ: RQ57_142_10)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s18 = bind.sendApdu(null, "E2", "91", "00", "BF320F5A0A989209012143658709F50101FF", "00", null);
+ bind.checkData("S17-C1 SW in 9000/91XX", "1", (s18.sw === "9000" || (s18.sw.substring(0, 2) === "91")) ? "1" : "0");
+ var r2w18 = BindGecaProc.parseGecaResponse(s18.resp, {outer: "BF32", required: ["80"]});
+ bind.checkData("S17-C2 disableResult catBusy", "05", (r2w18.ok && r2w18.fields["80"] === "05") ? "05" : (r2w18.fields["80"] || "absent"));
+ // S17-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S17-C3: binding:requirement_satisfied_by_same_step_result_enum_assertion (check_attestation)
+
+ // 步骤 19:Seq#08 Step2] 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 s19 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S18-C1 proactive command envelope", "1", (s19.resp.length >= 4 && s19.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S18-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+ // 步骤 20:Seq#08 Step3] 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 s20 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+ bind.checkData("S19-C1 SW", "9000", s20.sw);
+
+ // 步骤 21:Seq#08 Step4] 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 s21 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S20-C1 SW", "9000", s21.sw);
+ var r2p21 = BindEs10xProcProfile.walkChoiceList(s21.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has21_0 = false;
+ for (var r2i21_0 = 0; r2i21_0 < r2p21.elements.length; r2i21_0++) {
+ var f = r2p21.elements[r2i21_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has21_0 = true; break; }
+ }
+ bind.checkData("S20-C2 contains PROFILE_INFO1", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
+ var r2has21_0 = false;
+ for (var r2i21_0 = 0; r2i21_0 < r2p21.elements.length; r2i21_0++) {
+ var f = r2p21.elements[r2i21_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has21_0 = true; break; }
+ }
+ bind.checkData("S20-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
}