源码对照:4.2.23.2.4
ES10c 删除 Profile 异常用例(Case 4) / TC_eUICC_ES10c.DeleteProfile_ErrorCases_Case4
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
388 行 / 17746 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4/Import/TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4.js
423 行 / 33920 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js388 行 / 17746 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_01_Delete_Profile_not_possible_with_unknown_ISD_P_AID + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_02_Delete_Profile_not_possible_with_unknown_ICCID + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_03_Delete_Profile_by_ISDP_AID_not_possible_when_this_Operational_Profile_is_in_Enabled_state + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_04_Delete_Profile_by_ICCID_not_possible_when_this_Operational_Profile_is_in_Enabled_state + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_05_Delete_Profile_by_ISDP_AID_not_possible_not_possible_when_PPR2_is_set + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_06_Delete_Profile_by_ICCID_not_possible_not_possible_when_PPR2_is_set (extracted verbatim)
2
3function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_01_Delete_Profile_not_possible_with_unknown_ISD_P_AID()
4{
5 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
6 var ISD_P_Test01 = curProfile_ISD_P_AID;
7
8 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
9 var ISD_P_Test02 = curProfile_ISD_P_AID;
10
11 tracenamestr = "测试目的:通过未知的ISD-P AID删除profile应不成功";
12 curDis.TraceStart(sno++,tracenamestr);
13
14 curLogicChannel = 0;
15 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
16 Ini_powerOn_eUICC_LPAe_not_activate();
17
18 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
19 TS_MANAGE_CHANNEL_OPEN();
20
21 curLogicChannel = 1;
22
23 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
24 TS_SELECT("Select ISD",ISD_R_AID,"9000");
25
26 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ISD-P AID删除profile;");
27 var deleProfileRequest = new DeleteProfileRequest();
28 deleProfileRequest.isdpAid = ISD_P_AIDX;
29 deleProfileRequest.GenHexData();
30 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
31
32 curStrHandle.CheckData("BF3303800101", respData, "DeleteProfileResponse");
33
34
35 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
36 var proInfoListRequest = new ProfileInfoListRequest();
37 proInfoListRequest.tagList = "5A4F9F70";
38 proInfoListRequest.GenHexData();
39 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
40
41
42 var proInfoListResponse = new ProfileInfoListResponse();
43 proInfoListResponse.checkCardResDataFormat(respData);
44
45 try
46 {
47 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
48 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
49 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
50
51 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
52 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
53 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
54 }catch(e){
55 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
56 }
57
58
59 RecoverCard();
60}
61
62function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_02_Delete_Profile_not_possible_with_unknown_ICCID()
63{
64 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
65 var ISD_P_Test01 = curProfile_ISD_P_AID;
66
67 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
68 var ISD_P_Test02 = curProfile_ISD_P_AID;
69
70 tracenamestr = "测试目的:通过未知的ICCID删除profile应不成功";
71 curDis.TraceStart(sno++,tracenamestr);
72
73 curLogicChannel = 0;
74 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
75 Ini_powerOn_eUICC_LPAe_not_activate();
76
77 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
78 TS_MANAGE_CHANNEL_OPEN();
79
80 curLogicChannel = 1;
81
82 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
83 TS_SELECT("Select ISD",ISD_R_AID,"9000");
84
85 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ISD-P AID删除profile;");
86 var deleProfileRequest = new DeleteProfileRequest();
87 deleProfileRequest.iccid = ICCID_OP_PROFX;
88 deleProfileRequest.GenHexData();
89 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
90
91 curStrHandle.CheckData("BF3303800101", respData, "DeleteProfileResponse");
92
93
94 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
95 var proInfoListRequest = new ProfileInfoListRequest();
96 proInfoListRequest.tagList = "5A4F9F70";
97 proInfoListRequest.GenHexData();
98 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
99
100
101 var proInfoListResponse = new ProfileInfoListResponse();
102 proInfoListResponse.checkCardResDataFormat(respData);
103
104 try
105 {
106 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
107 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
108 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
109
110 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
111 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
112 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
113 }catch(e){
114 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
115 }
116
117
118 RecoverCard();
119}
120
121function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_03_Delete_Profile_by_ISDP_AID_not_possible_when_this_Operational_Profile_is_in_Enabled_state()
122{
123 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
124 var ISD_P_Test01 = curProfile_ISD_P_AID;
125
126 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
127 var ISD_P_Test02 = curProfile_ISD_P_AID;
128
129 tracenamestr = "测试目的:通过ISD-P AID删除处于激活状态的Operational Profile应不成功";
130 curDis.TraceStart(sno++,tracenamestr);
131
132 curLogicChannel = 0;
133 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
134 Ini_powerOn_eUICC_LPAe_not_activate();
135
136 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
137 TS_MANAGE_CHANNEL_OPEN();
138
139 curLogicChannel = 1;
140
141 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
142 TS_SELECT("Select ISD",ISD_R_AID,"9000");
143
144 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ISD-P AID删除profile;");
145 var deleProfileRequest = new DeleteProfileRequest();
146 deleProfileRequest.isdpAid = ISD_P_Test02;
147 deleProfileRequest.GenHexData();
148 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
149
150 curStrHandle.CheckData("BF3303800102", respData, "DeleteProfileResponse");//profileNotInDisabledState(2)
151
152 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
153 var proInfoListRequest = new ProfileInfoListRequest();
154 proInfoListRequest.tagList = "5A4F9F70";
155 proInfoListRequest.GenHexData();
156 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
157
158
159 var proInfoListResponse = new ProfileInfoListResponse();
160 proInfoListResponse.checkCardResDataFormat(respData);
161
162 try
163 {
164 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
165 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
166 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
167
168 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
169 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
170 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
171 }catch(e){
172 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
173 }
174
175
176 RecoverCard();
177}
178
179function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_04_Delete_Profile_by_ICCID_not_possible_when_this_Operational_Profile_is_in_Enabled_state()
180{
181 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
182 var ISD_P_Test01 = curProfile_ISD_P_AID;
183
184 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
185 var ISD_P_Test02 = curProfile_ISD_P_AID;
186
187 tracenamestr = "测试目的:通过ICCID删除处于激活状态的Operational Profile应不成功";
188 curDis.TraceStart(sno++,tracenamestr);
189
190 curLogicChannel = 0;
191 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
192 Ini_powerOn_eUICC_LPAe_not_activate();
193
194 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
195 TS_MANAGE_CHANNEL_OPEN();
196
197 curLogicChannel = 1;
198
199 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
200 TS_SELECT("Select ISD",ISD_R_AID,"9000");
201
202 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ICCID删除profile;");
203 var deleProfileRequest = new DeleteProfileRequest();
204 deleProfileRequest.iccid = ICCID_OP_PROF2;
205 deleProfileRequest.GenHexData();
206 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
207
208 curStrHandle.CheckData("BF3303800102", respData, "DeleteProfileResponse");//profileNotInDisabledState(2)
209
210 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
211 var proInfoListRequest = new ProfileInfoListRequest();
212 proInfoListRequest.tagList = "5A4F9F70";
213 proInfoListRequest.GenHexData();
214 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
215
216
217 var proInfoListResponse = new ProfileInfoListResponse();
218 proInfoListResponse.checkCardResDataFormat(respData);
219
220 try
221 {
222 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
223 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
224 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
225
226 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
227 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
228 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
229 }catch(e){
230 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
231 }
232
233
234 RecoverCard();
235}
236
237function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_05_Delete_Profile_by_ISDP_AID_not_possible_not_possible_when_PPR2_is_set ()//PPR:0520
238{
239 initial_condition_PROFILE_OPERATIONAL3_is_Disabled();
240 var ISD_P_Test03 = curProfile_ISD_P_AID;
241
242 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
243 var ISD_P_Test01 = curProfile_ISD_P_AID;
244
245 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
246 var ISD_P_Test02 = curProfile_ISD_P_AID;
247
248 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行SetNickname,profile3的Nickname为NICKNAME3;");
249 var setNicknameRequest = new SetNicknameRequest();
250 setNicknameRequest.iccid = ICCID_OP_PROF3;
251 setNicknameRequest.profileNickname = NICKNAME3;
252 setNicknameRequest.GenHexData();
253 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
254 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
255
256 tracenamestr = "Case3异常测试:当配置文件策略规则为“禁止删除此配置文件”时,无法删除该运营配置文件。";
257 curDis.TraceStart(sno++,tracenamestr);
258
259 curLogicChannel = 0;
260 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
261 Ini_powerOn_eUICC_LPAe_not_activate();
262
263 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
264 TS_MANAGE_CHANNEL_OPEN();
265
266 curLogicChannel = 1;
267
268 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
269 TS_SELECT("Select ISD",ISD_R_AID,"9000");
270
271 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ISD_P_AID删除profile3;");
272 var deleProfileRequest = new DeleteProfileRequest();
273 deleProfileRequest.isdpAid = ISD_P_Test03;
274 deleProfileRequest.GenHexData();
275 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
276
277 curStrHandle.CheckData("BF3303800103", respData, "DeleteProfileResponse");
278
279 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
280 var proInfoListRequest = new ProfileInfoListRequest();
281 proInfoListRequest.GenHexData();
282 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
283
284
285 var proInfoListResponse = new ProfileInfoListResponse();
286 proInfoListResponse.checkCardResDataFormat(respData);
287
288 try
289 {
290 curStrHandle.CheckData(ICCID_OP_PROF3, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
291 curStrHandle.CheckData(ISD_P_Test03, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
292 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
293 curStrHandle.CheckData(NICKNAME3, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileNickname, "nickname");
294
295
296 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
297 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
298 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
299
300 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[2].iccid, "ICCID");
301 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[2].isdpAid, "ISD-P AID");
302 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[2].profileState, "profile State");
303
304
305 }catch(e){
306 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
307 }
308
309
310 RecoverCard();
311}
312
313function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_06_Delete_Profile_by_ICCID_not_possible_not_possible_when_PPR2_is_set ()//PPR:0520
314{
315 initial_condition_PROFILE_OPERATIONAL3_is_Disabled();
316 var ISD_P_Test03 = curProfile_ISD_P_AID;
317
318 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
319 var ISD_P_Test01 = curProfile_ISD_P_AID;
320
321 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
322 var ISD_P_Test02 = curProfile_ISD_P_AID;
323
324 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行SetNickname,profile3的Nickname为NICKNAME3;");
325 var setNicknameRequest = new SetNicknameRequest();
326 setNicknameRequest.iccid = ICCID_OP_PROF3;
327 setNicknameRequest.profileNickname = NICKNAME3;
328 setNicknameRequest.GenHexData();
329 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
330 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
331
332 tracenamestr = "Case3异常测试:当配置文件策略规则为“禁止删除此配置文件”时,无法删除该运营配置文件。";
333 curDis.TraceStart(sno++,tracenamestr);
334
335 curLogicChannel = 0;
336 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
337 Ini_powerOn_eUICC_LPAe_not_activate();
338
339 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
340 TS_MANAGE_CHANNEL_OPEN();
341
342 curLogicChannel = 1;
343
344 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
345 TS_SELECT("Select ISD",ISD_R_AID,"9000");
346
347 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ICCID删除profile3;");
348 var deleProfileRequest = new DeleteProfileRequest();
349 deleProfileRequest.iccid = ICCID_OP_PROF3;
350 deleProfileRequest.GenHexData();
351 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
352
353 curStrHandle.CheckData("BF3303800103", respData, "DeleteProfileResponse");
354
355 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
356 var proInfoListRequest = new ProfileInfoListRequest();
357 proInfoListRequest.GenHexData();
358 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
359
360
361 var proInfoListResponse = new ProfileInfoListResponse();
362 proInfoListResponse.checkCardResDataFormat(respData);
363
364 try
365 {
366 curStrHandle.CheckData(ICCID_OP_PROF3, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
367 curStrHandle.CheckData(ISD_P_Test03, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
368 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
369 curStrHandle.CheckData(NICKNAME3, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileNickname, "nickname");
370
371
372 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
373 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
374 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
375
376 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[2].iccid, "ICCID");
377 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[2].isdpAid, "ISD-P AID");
378 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[2].profileState, "profile State");
379
380
381 }catch(e){
382 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
383 }
384
385
386 RecoverCard();
387}
388
-cas 盲生成TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4/Import/TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4.js423 行 / 33920 字符 / gb18030
1// Author: 卡思Cas智能体
2// Date: 20261004-021956
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.DeleteProfile_ErrorCases_Case4,Test Sequence #01-#06 (Error: unknown ISD-P AID / unknown ICCID / Enabled by ISD-P AID / Enabled by ICCID / PPR2 by ISD-P AID / PPR2 by ICCID),适用性 M。
4// Test points: IC2-IC1-K1-C1 ATR_present;IC2-IC1-K2-C2 FCP_Template;IC2-IC1-K2-C4 SW
5// IC2-IC1-K3-C4 SW;IC2-IC1-K4-C4 final SW;IC3-IC2-K1-C4 SW;IC3-IC2-K1-C3 CHANNEL_NUMBER extracted
6// IC3-IC2-K2-C4 SW;S3-C1 SW;S3-C2 deleteResult iccidOrAidNotFound;S4-C1 SW
7// S4-C2 contains PROFILE_INFO1_DISABLED;S4-C2 contains PROFILE_INFO2_ENABLED
8// IC6-IC1-K1-C1 ATR_present;IC6-IC1-K2-C2 FCP_Template;IC6-IC1-K2-C4 SW;IC6-IC1-K3-C4 SW
9// IC6-IC1-K4-C4 final SW;IC7-IC2-K1-C4 SW;IC7-IC2-K1-C3 CHANNEL_NUMBER extracted;IC7-IC2-K2-C4 SW
10// S7-C1 SW;S7-C2 deleteResult iccidOrAidNotFound;S8-C1 SW;S8-C2 contains PROFILE_INFO1_DISABLED
11// S8-C2 contains PROFILE_INFO2_ENABLED;IC10-IC1-K1-C1 ATR_present;IC10-IC1-K2-C2 FCP_Template
12// IC10-IC1-K2-C4 SW;IC10-IC1-K3-C4 SW;IC10-IC1-K4-C4 final SW;IC11-IC2-K1-C4 SW
13// IC11-IC2-K1-C3 CHANNEL_NUMBER extracted;IC11-IC2-K2-C4 SW;S11-C1 SW
14// S11-C2 deleteResult profileNotInDisabledState;S12-C1 SW;S12-C2 contains PROFILE_INFO1_DISABLED
15// S12-C2 contains PROFILE_INFO2_ENABLED;IC14-IC1-K1-C1 ATR_present;IC14-IC1-K2-C2 FCP_Template
16// IC14-IC1-K2-C4 SW;IC14-IC1-K3-C4 SW;IC14-IC1-K4-C4 final SW;IC15-IC2-K1-C4 SW
17// IC15-IC2-K1-C3 CHANNEL_NUMBER extracted;IC15-IC2-K2-C4 SW;S15-C1 SW
18// S15-C2 deleteResult profileNotInDisabledState;S16-C1 SW;S16-C2 contains PROFILE_INFO1_DISABLED
19// S16-C2 contains PROFILE_INFO2_ENABLED;IC18-IC1-K1-C1 ATR_present;IC18-IC1-K2-C2 FCP_Template
20// IC18-IC1-K2-C4 SW;IC18-IC1-K3-C4 SW;IC18-IC1-K4-C4 final SW;IC19-IC2-K1-C4 SW
21// IC19-IC2-K1-C3 CHANNEL_NUMBER extracted;IC19-IC2-K2-C4 SW;S19-C1 SW
22// S19-C2 deleteResult disallowedByPolicy;S20-C1 SW;S20-C2 contains PROFILE_INFO1_DISABLED
23// S20-C2 contains PROFILE_INFO2_ENABLED;S20-C2 contains PROFILE_INFO3;IC22-IC1-K1-C1 ATR_present
24// IC22-IC1-K2-C2 FCP_Template;IC22-IC1-K2-C4 SW;IC22-IC1-K3-C4 SW;IC22-IC1-K4-C4 final SW
25// IC23-IC2-K1-C4 SW;IC23-IC2-K1-C3 CHANNEL_NUMBER extracted;IC23-IC2-K2-C4 SW;S23-C1 SW
26// S23-C2 deleteResult disallowedByPolicy;S24-C1 SW;S24-C2 contains PROFILE_INFO1_DISABLED
27// S24-C2 contains PROFILE_INFO2_ENABLED;S24-C2 contains PROFILE_INFO3
28// 本函数由 CaseIR 4.2.23.2.4 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
29// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
30// 适用性 M:编译期门,运行时由 harness 环境前置承担。
31function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_01_06_merged() {
32 var bind = curBind;
33 var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_01_06_merged");
34 // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "6c06e5257cb7cc55", "authority_reference": "E_tc_4223/330-330/G_annexB_dynamic:L52"}
35 var cardCtxLoad1 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID2", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
36 // runtime-bound payload: ISD_P_AID3 stays in execution domain; context_lineage: {"context_id": "6c06e5257cb7cc55", "authority_reference": "E_tc_4223/373-373/G_annexB_dynamic:L53"}
37 var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID3", {"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": "6c06e5257cb7cc55", "authority_reference": "E_tc_4223/281-281/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 // GIC-1 卡态编排:PROFILE_OPERATIONAL1 已安装;PROFILE_OPERATIONAL2 已安装: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
41 // S1-IC <ISD_P_AIDX> 标识的 Profile 未装载;PROF1 Disabled(对应 <ISD_P_AID1>);PROF2 Enabled(对应 <ISD_P_AID2>): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
42 // S2-IC #ICCID_OP_PROFX 标识的 Profile 未装载;PROF1 Disabled;PROF2 Enabled: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
43 // S3/S4-IC PROF1 Disabled(对应 <ISD_P_AID1>);PROF2 Enabled(对应 <ISD_P_AID2>): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
44 // S5/S6-IC PROFILE_OPERATIONAL3 已安装且 Disabled(对应 <ISD_P_AID3>,Nickname=#NICKNAME3);PROF1 Disabled;PROF2 Enabled: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
45 // PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
46
47 // 步骤 1:MTD_STORE_DATA(tc_step)
48 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
49 var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
50
51 // IC ref inline @E 步骤 2(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
52 var s26 = bind.resetAndAtr();
53 bind.checkData("IC2-IC1-K1-C1 ATR_present", "1", s26.atr_hex !== "" ? "1" : "0");
54
55 // IC ref inline @E 步骤 2(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
56 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
57 var s27 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
58 bind.checkData("IC2-IC1-K2-C2 FCP_Template", "1", s27.resp.length > 0 ? "1" : "0");
59 bind.checkData("IC2-IC1-K2-C4 SW", "9000", s27.sw);
60
61 // IC ref inline @E 步骤 2(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
62 var s28 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
63 bind.checkData("IC2-IC1-K3-C4 SW", "9000", s28.sw);
64
65 // IC ref inline @E 步骤 2(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
66 var steady29 = bind.runToSteadyState(function () {
67 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
68 });
69 bind.checkData("IC2-IC1-K4-C4 final SW", "9000", steady29.final.sw);
70
71 // IC ref inline @E 步骤 3(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
72 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
73 var s30 = bind.manageChannelOpen("9000");
74 bind.checkData("IC3-IC2-K1-C4 SW", "9000", s30.sw);
75 bind.checkData("IC3-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s30.chan !== null ? "1" : "0");
76
77 // IC ref inline @E 步骤 3(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
78 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
79 var s31 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
80 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
81 bind.checkData("IC3-IC2-K2-C4 SW", "9000", s31.sw);
82
83 // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_158, RQ57_159)
84 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
85 var sdCla4 = s30.chan !== null ? (s30.chan <= 3 ? 128 + s30.chan : 188 + s30.chan).toString(16).toUpperCase() : null;
86 // runtime-bound payload: ISD_P_AIDX stays in execution domain
87 var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AIDX", "BF33124F10", "", profileAidSession), "00", "9000");
88 bind.checkData("S3-C1 SW", "9000", s4.sw);
89 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AIDX", s4.cmd, profileAidSession);
90 var r2w4 = BindGecaProc.parseGecaResponse(s4.resp, {outer: "BF33", required: ["80"]});
91 bind.checkData("S3-C2 deleteResult iccidOrAidNotFound", "01", (r2w4.ok && r2w4.fields["80"] === "01") ? "01" : (r2w4.fields["80"] || "absent"));
92
93 // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_158, RQ57_159)
94 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
95 var sdCla5 = s30.chan !== null ? (s30.chan <= 3 ? 128 + s30.chan : 188 + s30.chan).toString(16).toUpperCase() : null;
96 var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF2D00", "00", "9000");
97 bind.checkData("S4-C1 SW", "9000", s5.sw);
98 var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
99 var r2has5_0 = false;
100 for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
101 var f = r2p5.elements[r2i5_0].fields;
102 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has5_0 = true; break; }
103 }
104 bind.checkData("S4-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
105 var r2has5_1 = false;
106 for (var r2i5_1 = 0; r2i5_1 < r2p5.elements.length; r2i5_1++) {
107 var f = r2p5.elements[r2i5_1].fields;
108 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has5_1 = true; break; }
109 }
110 bind.checkData("S4-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p5.branch_tag === "A0" && r2has5_1) ? "1" : "0");
111
112 // IC ref inline @E 步骤 6(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
113 var s32 = bind.resetAndAtr();
114 bind.checkData("IC6-IC1-K1-C1 ATR_present", "1", s32.atr_hex !== "" ? "1" : "0");
115
116 // IC ref inline @E 步骤 6(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
117 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
118 var s33 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
119 bind.checkData("IC6-IC1-K2-C2 FCP_Template", "1", s33.resp.length > 0 ? "1" : "0");
120 bind.checkData("IC6-IC1-K2-C4 SW", "9000", s33.sw);
121
122 // IC ref inline @E 步骤 6(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
123 var s34 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
124 bind.checkData("IC6-IC1-K3-C4 SW", "9000", s34.sw);
125
126 // IC ref inline @E 步骤 6(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
127 var steady35 = bind.runToSteadyState(function () {
128 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
129 });
130 bind.checkData("IC6-IC1-K4-C4 final SW", "9000", steady35.final.sw);
131
132 // IC ref inline @E 步骤 7(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
133 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
134 var s36 = bind.manageChannelOpen("9000");
135 bind.checkData("IC7-IC2-K1-C4 SW", "9000", s36.sw);
136 bind.checkData("IC7-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s36.chan !== null ? "1" : "0");
137
138 // IC ref inline @E 步骤 7(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
139 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
140 var s37 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
141 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
142 bind.checkData("IC7-IC2-K2-C4 SW", "9000", s37.sw);
143
144 // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_158, RQ57_159)
145 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
146 var sdCla8 = s36.chan !== null ? (s36.chan <= 3 ? 128 + s36.chan : 188 + s36.chan).toString(16).toUpperCase() : null;
147 var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF330C5A0A9892090143658709FFFF", "00", "9000");
148 bind.checkData("S7-C1 SW", "9000", s8.sw);
149 var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF33", required: ["80"]});
150 bind.checkData("S7-C2 deleteResult iccidOrAidNotFound", "01", (r2w8.ok && r2w8.fields["80"] === "01") ? "01" : (r2w8.fields["80"] || "absent"));
151
152 // 步骤 9:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_158, RQ57_159)
153 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
154 var sdCla9 = s36.chan !== null ? (s36.chan <= 3 ? 128 + s36.chan : 188 + s36.chan).toString(16).toUpperCase() : null;
155 var s9 = bind.sendApdu(sdCla9, "E2", "91", "00", "BF2D00", "00", "9000");
156 bind.checkData("S8-C1 SW", "9000", s9.sw);
157 var r2p9 = BindEs10xProcProfile.walkChoiceList(s9.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
158 var r2has9_0 = false;
159 for (var r2i9_0 = 0; r2i9_0 < r2p9.elements.length; r2i9_0++) {
160 var f = r2p9.elements[r2i9_0].fields;
161 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has9_0 = true; break; }
162 }
163 bind.checkData("S8-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p9.branch_tag === "A0" && r2has9_0) ? "1" : "0");
164 var r2has9_1 = false;
165 for (var r2i9_1 = 0; r2i9_1 < r2p9.elements.length; r2i9_1++) {
166 var f = r2p9.elements[r2i9_1].fields;
167 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has9_1 = true; break; }
168 }
169 bind.checkData("S8-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p9.branch_tag === "A0" && r2has9_1) ? "1" : "0");
170
171 // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
172 var s38 = bind.resetAndAtr();
173 bind.checkData("IC10-IC1-K1-C1 ATR_present", "1", s38.atr_hex !== "" ? "1" : "0");
174
175 // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
176 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
177 var s39 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
178 bind.checkData("IC10-IC1-K2-C2 FCP_Template", "1", s39.resp.length > 0 ? "1" : "0");
179 bind.checkData("IC10-IC1-K2-C4 SW", "9000", s39.sw);
180
181 // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
182 var s40 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
183 bind.checkData("IC10-IC1-K3-C4 SW", "9000", s40.sw);
184
185 // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
186 var steady41 = bind.runToSteadyState(function () {
187 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
188 });
189 bind.checkData("IC10-IC1-K4-C4 final SW", "9000", steady41.final.sw);
190
191 // IC ref inline @E 步骤 11(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
192 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
193 var s42 = bind.manageChannelOpen("9000");
194 bind.checkData("IC11-IC2-K1-C4 SW", "9000", s42.sw);
195 bind.checkData("IC11-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s42.chan !== null ? "1" : "0");
196
197 // IC ref inline @E 步骤 11(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
198 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
199 var s43 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
200 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
201 bind.checkData("IC11-IC2-K2-C4 SW", "9000", s43.sw);
202
203 // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
204 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
205 var sdCla12 = s42.chan !== null ? (s42.chan <= 3 ? 128 + s42.chan : 188 + s42.chan).toString(16).toUpperCase() : null;
206 // runtime-bound payload: ISD_P_AID2 stays in execution domain
207 var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF33124F10", "", profileAidSession), "00", "9000");
208 bind.checkData("S11-C1 SW", "9000", s12.sw);
209 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s12.cmd, profileAidSession);
210 var r2w12 = BindGecaProc.parseGecaResponse(s12.resp, {outer: "BF33", required: ["80"]});
211 bind.checkData("S11-C2 deleteResult profileNotInDisabledState", "02", (r2w12.ok && r2w12.fields["80"] === "02") ? "02" : (r2w12.fields["80"] || "absent"));
212
213 // 步骤 13:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
214 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
215 var sdCla13 = s42.chan !== null ? (s42.chan <= 3 ? 128 + s42.chan : 188 + s42.chan).toString(16).toUpperCase() : null;
216 var s13 = bind.sendApdu(sdCla13, "E2", "91", "00", "BF2D00", "00", "9000");
217 bind.checkData("S12-C1 SW", "9000", s13.sw);
218 var r2p13 = BindEs10xProcProfile.walkChoiceList(s13.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
219 var r2has13_0 = false;
220 for (var r2i13_0 = 0; r2i13_0 < r2p13.elements.length; r2i13_0++) {
221 var f = r2p13.elements[r2i13_0].fields;
222 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has13_0 = true; break; }
223 }
224 bind.checkData("S12-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
225 var r2has13_1 = false;
226 for (var r2i13_1 = 0; r2i13_1 < r2p13.elements.length; r2i13_1++) {
227 var f = r2p13.elements[r2i13_1].fields;
228 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has13_1 = true; break; }
229 }
230 bind.checkData("S12-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p13.branch_tag === "A0" && r2has13_1) ? "1" : "0");
231
232 // IC ref inline @E 步骤 14(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
233 var s44 = bind.resetAndAtr();
234 bind.checkData("IC14-IC1-K1-C1 ATR_present", "1", s44.atr_hex !== "" ? "1" : "0");
235
236 // IC ref inline @E 步骤 14(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
237 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
238 var s45 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
239 bind.checkData("IC14-IC1-K2-C2 FCP_Template", "1", s45.resp.length > 0 ? "1" : "0");
240 bind.checkData("IC14-IC1-K2-C4 SW", "9000", s45.sw);
241
242 // IC ref inline @E 步骤 14(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
243 var s46 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
244 bind.checkData("IC14-IC1-K3-C4 SW", "9000", s46.sw);
245
246 // IC ref inline @E 步骤 14(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
247 var steady47 = bind.runToSteadyState(function () {
248 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
249 });
250 bind.checkData("IC14-IC1-K4-C4 final SW", "9000", steady47.final.sw);
251
252 // IC ref inline @E 步骤 15(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
253 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
254 var s48 = bind.manageChannelOpen("9000");
255 bind.checkData("IC15-IC2-K1-C4 SW", "9000", s48.sw);
256 bind.checkData("IC15-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s48.chan !== null ? "1" : "0");
257
258 // IC ref inline @E 步骤 15(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
259 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
260 var s49 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
261 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
262 bind.checkData("IC15-IC2-K2-C4 SW", "9000", s49.sw);
263
264 // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
265 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
266 var sdCla16 = s48.chan !== null ? (s48.chan <= 3 ? 128 + s48.chan : 188 + s48.chan).toString(16).toUpperCase() : null;
267 var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF330C5A0A989209013254769810F9", "00", "9000");
268 bind.checkData("S15-C1 SW", "9000", s16.sw);
269 var r2w16 = BindGecaProc.parseGecaResponse(s16.resp, {outer: "BF33", required: ["80"]});
270 bind.checkData("S15-C2 deleteResult profileNotInDisabledState", "02", (r2w16.ok && r2w16.fields["80"] === "02") ? "02" : (r2w16.fields["80"] || "absent"));
271
272 // 步骤 17:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
273 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
274 var sdCla17 = s48.chan !== null ? (s48.chan <= 3 ? 128 + s48.chan : 188 + s48.chan).toString(16).toUpperCase() : null;
275 var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", "BF2D00", "00", "9000");
276 bind.checkData("S16-C1 SW", "9000", s17.sw);
277 var r2p17 = BindEs10xProcProfile.walkChoiceList(s17.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
278 var r2has17_0 = false;
279 for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
280 var f = r2p17.elements[r2i17_0].fields;
281 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has17_0 = true; break; }
282 }
283 bind.checkData("S16-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
284 var r2has17_1 = false;
285 for (var r2i17_1 = 0; r2i17_1 < r2p17.elements.length; r2i17_1++) {
286 var f = r2p17.elements[r2i17_1].fields;
287 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has17_1 = true; break; }
288 }
289 bind.checkData("S16-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p17.branch_tag === "A0" && r2has17_1) ? "1" : "0");
290
291 // IC ref inline @E 步骤 18(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
292 var s50 = bind.resetAndAtr();
293 bind.checkData("IC18-IC1-K1-C1 ATR_present", "1", s50.atr_hex !== "" ? "1" : "0");
294
295 // IC ref inline @E 步骤 18(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
296 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
297 var s51 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
298 bind.checkData("IC18-IC1-K2-C2 FCP_Template", "1", s51.resp.length > 0 ? "1" : "0");
299 bind.checkData("IC18-IC1-K2-C4 SW", "9000", s51.sw);
300
301 // IC ref inline @E 步骤 18(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
302 var s52 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
303 bind.checkData("IC18-IC1-K3-C4 SW", "9000", s52.sw);
304
305 // IC ref inline @E 步骤 18(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
306 var steady53 = bind.runToSteadyState(function () {
307 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
308 });
309 bind.checkData("IC18-IC1-K4-C4 final SW", "9000", steady53.final.sw);
310
311 // IC ref inline @E 步骤 19(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
312 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
313 var s54 = bind.manageChannelOpen("9000");
314 bind.checkData("IC19-IC2-K1-C4 SW", "9000", s54.sw);
315 bind.checkData("IC19-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s54.chan !== null ? "1" : "0");
316
317 // IC ref inline @E 步骤 19(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
318 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
319 var s55 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
320 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
321 bind.checkData("IC19-IC2-K2-C4 SW", "9000", s55.sw);
322
323 // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ29_002, RQ29_022, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_158, RQ57_159)
324 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
325 var sdCla20 = s54.chan !== null ? (s54.chan <= 3 ? 128 + s54.chan : 188 + s54.chan).toString(16).toUpperCase() : null;
326 // runtime-bound payload: ISD_P_AID3 stays in execution domain
327 var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID3", "BF33124F10", "", profileAidSession), "00", "9000");
328 bind.checkData("S19-C1 SW", "9000", s20.sw);
329 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID3", s20.cmd, profileAidSession);
330 var r2w20 = BindGecaProc.parseGecaResponse(s20.resp, {outer: "BF33", required: ["80"]});
331 bind.checkData("S19-C2 deleteResult disallowedByPolicy", "03", (r2w20.ok && r2w20.fields["80"] === "03") ? "03" : (r2w20.fields["80"] || "absent"));
332
333 // 步骤 21:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ29_002, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
334 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
335 var sdCla21 = s54.chan !== null ? (s54.chan <= 3 ? 128 + s54.chan : 188 + s54.chan).toString(16).toUpperCase() : null;
336 var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", "BF2D00", "00", "9000");
337 bind.checkData("S20-C1 SW", "9000", s21.sw);
338 var r2p21 = BindEs10xProcProfile.walkChoiceList(s21.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
339 var r2has21_0 = false;
340 for (var r2i21_0 = 0; r2i21_0 < r2p21.elements.length; r2i21_0++) {
341 var f = r2p21.elements[r2i21_0].fields;
342 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has21_0 = true; break; }
343 }
344 bind.checkData("S20-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
345 var r2has21_1 = false;
346 for (var r2i21_1 = 0; r2i21_1 < r2p21.elements.length; r2i21_1++) {
347 var f = r2p21.elements[r2i21_1].fields;
348 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has21_1 = true; break; }
349 }
350 bind.checkData("S20-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p21.branch_tag === "A0" && r2has21_1) ? "1" : "0");
351 var r2has21_2 = false;
352 for (var r2i21_2 = 0; r2i21_2 < r2p21.elements.length; r2i21_2++) {
353 var f = r2p21.elements[r2i21_2].fields;
354 if (f["5A"] === "989209014365870921F5" && f["9F70"] === "00") { r2has21_2 = true; break; }
355 }
356 bind.checkData("S20-C2 contains PROFILE_INFO3", "1", (r2p21.branch_tag === "A0" && r2has21_2) ? "1" : "0");
357
358 // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
359 var s56 = bind.resetAndAtr();
360 bind.checkData("IC22-IC1-K1-C1 ATR_present", "1", s56.atr_hex !== "" ? "1" : "0");
361
362 // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
363 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
364 var s57 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
365 bind.checkData("IC22-IC1-K2-C2 FCP_Template", "1", s57.resp.length > 0 ? "1" : "0");
366 bind.checkData("IC22-IC1-K2-C4 SW", "9000", s57.sw);
367
368 // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
369 var s58 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
370 bind.checkData("IC22-IC1-K3-C4 SW", "9000", s58.sw);
371
372 // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
373 var steady59 = bind.runToSteadyState(function () {
374 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
375 });
376 bind.checkData("IC22-IC1-K4-C4 final SW", "9000", steady59.final.sw);
377
378 // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
379 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
380 var s60 = bind.manageChannelOpen("9000");
381 bind.checkData("IC23-IC2-K1-C4 SW", "9000", s60.sw);
382 bind.checkData("IC23-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s60.chan !== null ? "1" : "0");
383
384 // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
385 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
386 var s61 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
387 // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
388 bind.checkData("IC23-IC2-K2-C4 SW", "9000", s61.sw);
389
390 // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ29_002, RQ29_022, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_158, RQ57_159)
391 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
392 var sdCla24 = s60.chan !== null ? (s60.chan <= 3 ? 128 + s60.chan : 188 + s60.chan).toString(16).toUpperCase() : null;
393 var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF330C5A0A989209014365870921F5", "00", "9000");
394 bind.checkData("S23-C1 SW", "9000", s24.sw);
395 var r2w24 = BindGecaProc.parseGecaResponse(s24.resp, {outer: "BF33", required: ["80"]});
396 bind.checkData("S23-C2 deleteResult disallowedByPolicy", "03", (r2w24.ok && r2w24.fields["80"] === "03") ? "03" : (r2w24.fields["80"] || "absent"));
397
398 // 步骤 25:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ29_002, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
399 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
400 var sdCla25 = s60.chan !== null ? (s60.chan <= 3 ? 128 + s60.chan : 188 + s60.chan).toString(16).toUpperCase() : null;
401 var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2D00", "00", "9000");
402 bind.checkData("S24-C1 SW", "9000", s25.sw);
403 var r2p25 = BindEs10xProcProfile.walkChoiceList(s25.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
404 var r2has25_0 = false;
405 for (var r2i25_0 = 0; r2i25_0 < r2p25.elements.length; r2i25_0++) {
406 var f = r2p25.elements[r2i25_0].fields;
407 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has25_0 = true; break; }
408 }
409 bind.checkData("S24-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p25.branch_tag === "A0" && r2has25_0) ? "1" : "0");
410 var r2has25_1 = false;
411 for (var r2i25_1 = 0; r2i25_1 < r2p25.elements.length; r2i25_1++) {
412 var f = r2p25.elements[r2i25_1].fields;
413 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has25_1 = true; break; }
414 }
415 bind.checkData("S24-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p25.branch_tag === "A0" && r2has25_1) ? "1" : "0");
416 var r2has25_2 = false;
417 for (var r2i25_2 = 0; r2i25_2 < r2p25.elements.length; r2i25_2++) {
418 var f = r2p25.elements[r2i25_2].fields;
419 if (f["5A"] === "989209014365870921F5" && f["9F70"] === "00") { r2has25_2 = true; break; }
420 }
421 bind.checkData("S24-C2 contains PROFILE_INFO3", "1", (r2p25.branch_tag === "A0" && r2has25_2) ? "1" : "0");
422}
423
完整 unified diff
行级差异:新增 421 行 / 删除 386 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(812 行)
--- -man
+++ -cas
@@ -1,388 +1,423 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_01_Delete_Profile_not_possible_with_unknown_ISD_P_AID + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_02_Delete_Profile_not_possible_with_unknown_ICCID + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_03_Delete_Profile_by_ISDP_AID_not_possible_when_this_Operational_Profile_is_in_Enabled_state + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_04_Delete_Profile_by_ICCID_not_possible_when_this_Operational_Profile_is_in_Enabled_state + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_05_Delete_Profile_by_ISDP_AID_not_possible_not_possible_when_PPR2_is_set + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_06_Delete_Profile_by_ICCID_not_possible_not_possible_when_PPR2_is_set (extracted verbatim)
-
-function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_01_Delete_Profile_not_possible_with_unknown_ISD_P_AID()
-{
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
- var ISD_P_Test02 = 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命令,执行DeleteProfileRequest,通过ISD-P AID删除profile;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.isdpAid = ISD_P_AIDX;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
-
- curStrHandle.CheckData("BF3303800101", respData, "DeleteProfileResponse");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- 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");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_02_Delete_Profile_not_possible_with_unknown_ICCID()
-{
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
- var ISD_P_Test02 = 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命令,执行DeleteProfileRequest,通过ISD-P AID删除profile;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.iccid = ICCID_OP_PROFX;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
-
- curStrHandle.CheckData("BF3303800101", respData, "DeleteProfileResponse");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- 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");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_03_Delete_Profile_by_ISDP_AID_not_possible_when_this_Operational_Profile_is_in_Enabled_state()
-{
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
- var ISD_P_Test02 = 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命令,执行DeleteProfileRequest,通过ISD-P AID删除profile;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.isdpAid = ISD_P_Test02;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
-
- curStrHandle.CheckData("BF3303800102", respData, "DeleteProfileResponse");//profileNotInDisabledState(2)
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- 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");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_04_Delete_Profile_by_ICCID_not_possible_when_this_Operational_Profile_is_in_Enabled_state()
-{
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
- var ISD_P_Test02 = 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命令,执行DeleteProfileRequest,通过ICCID删除profile;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.iccid = ICCID_OP_PROF2;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
-
- curStrHandle.CheckData("BF3303800102", respData, "DeleteProfileResponse");//profileNotInDisabledState(2)
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- 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");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_05_Delete_Profile_by_ISDP_AID_not_possible_not_possible_when_PPR2_is_set ()//PPR:0520
-{
- initial_condition_PROFILE_OPERATIONAL3_is_Disabled();
- var ISD_P_Test03 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
- var ISD_P_Test02 = curProfile_ISD_P_AID;
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行SetNickname,profile3的Nickname为NICKNAME3;");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF3;
- setNicknameRequest.profileNickname = NICKNAME3;
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
- tracenamestr = "Case3异常测试:当配置文件策略规则为“禁止删除此配置文件”时,无法删除该运营配置文件。";
- 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命令,执行DeleteProfileRequest,通过ISD_P_AID删除profile3;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.isdpAid = ISD_P_Test03;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
-
- curStrHandle.CheckData("BF3303800103", respData, "DeleteProfileResponse");
-
- 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_PROF3, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test03, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- curStrHandle.CheckData(NICKNAME3, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileNickname, "nickname");
-
-
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[2].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[2].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[2].profileState, "profile State");
-
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_06_Delete_Profile_by_ICCID_not_possible_not_possible_when_PPR2_is_set ()//PPR:0520
-{
- initial_condition_PROFILE_OPERATIONAL3_is_Disabled();
- var ISD_P_Test03 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
- var ISD_P_Test02 = curProfile_ISD_P_AID;
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行SetNickname,profile3的Nickname为NICKNAME3;");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF3;
- setNicknameRequest.profileNickname = NICKNAME3;
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
- tracenamestr = "Case3异常测试:当配置文件策略规则为“禁止删除此配置文件”时,无法删除该运营配置文件。";
- 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命令,执行DeleteProfileRequest,通过ICCID删除profile3;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.iccid = ICCID_OP_PROF3;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"91","00","9000");
-
- curStrHandle.CheckData("BF3303800103", respData, "DeleteProfileResponse");
-
- 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_PROF3, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test03, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- curStrHandle.CheckData(NICKNAME3, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileNickname, "nickname");
-
-
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
-
- curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[2].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[2].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[2].profileState, "profile State");
-
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261004-021956
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.DeleteProfile_ErrorCases_Case4,Test Sequence #01-#06 (Error: unknown ISD-P AID / unknown ICCID / Enabled by ISD-P AID / Enabled by ICCID / PPR2 by ISD-P AID / PPR2 by ICCID),适用性 M。
+// Test points: IC2-IC1-K1-C1 ATR_present;IC2-IC1-K2-C2 FCP_Template;IC2-IC1-K2-C4 SW
+// IC2-IC1-K3-C4 SW;IC2-IC1-K4-C4 final SW;IC3-IC2-K1-C4 SW;IC3-IC2-K1-C3 CHANNEL_NUMBER extracted
+// IC3-IC2-K2-C4 SW;S3-C1 SW;S3-C2 deleteResult iccidOrAidNotFound;S4-C1 SW
+// S4-C2 contains PROFILE_INFO1_DISABLED;S4-C2 contains PROFILE_INFO2_ENABLED
+// IC6-IC1-K1-C1 ATR_present;IC6-IC1-K2-C2 FCP_Template;IC6-IC1-K2-C4 SW;IC6-IC1-K3-C4 SW
+// IC6-IC1-K4-C4 final SW;IC7-IC2-K1-C4 SW;IC7-IC2-K1-C3 CHANNEL_NUMBER extracted;IC7-IC2-K2-C4 SW
+// S7-C1 SW;S7-C2 deleteResult iccidOrAidNotFound;S8-C1 SW;S8-C2 contains PROFILE_INFO1_DISABLED
+// S8-C2 contains PROFILE_INFO2_ENABLED;IC10-IC1-K1-C1 ATR_present;IC10-IC1-K2-C2 FCP_Template
+// IC10-IC1-K2-C4 SW;IC10-IC1-K3-C4 SW;IC10-IC1-K4-C4 final SW;IC11-IC2-K1-C4 SW
+// IC11-IC2-K1-C3 CHANNEL_NUMBER extracted;IC11-IC2-K2-C4 SW;S11-C1 SW
+// S11-C2 deleteResult profileNotInDisabledState;S12-C1 SW;S12-C2 contains PROFILE_INFO1_DISABLED
+// S12-C2 contains PROFILE_INFO2_ENABLED;IC14-IC1-K1-C1 ATR_present;IC14-IC1-K2-C2 FCP_Template
+// IC14-IC1-K2-C4 SW;IC14-IC1-K3-C4 SW;IC14-IC1-K4-C4 final SW;IC15-IC2-K1-C4 SW
+// IC15-IC2-K1-C3 CHANNEL_NUMBER extracted;IC15-IC2-K2-C4 SW;S15-C1 SW
+// S15-C2 deleteResult profileNotInDisabledState;S16-C1 SW;S16-C2 contains PROFILE_INFO1_DISABLED
+// S16-C2 contains PROFILE_INFO2_ENABLED;IC18-IC1-K1-C1 ATR_present;IC18-IC1-K2-C2 FCP_Template
+// IC18-IC1-K2-C4 SW;IC18-IC1-K3-C4 SW;IC18-IC1-K4-C4 final SW;IC19-IC2-K1-C4 SW
+// IC19-IC2-K1-C3 CHANNEL_NUMBER extracted;IC19-IC2-K2-C4 SW;S19-C1 SW
+// S19-C2 deleteResult disallowedByPolicy;S20-C1 SW;S20-C2 contains PROFILE_INFO1_DISABLED
+// S20-C2 contains PROFILE_INFO2_ENABLED;S20-C2 contains PROFILE_INFO3;IC22-IC1-K1-C1 ATR_present
+// IC22-IC1-K2-C2 FCP_Template;IC22-IC1-K2-C4 SW;IC22-IC1-K3-C4 SW;IC22-IC1-K4-C4 final SW
+// IC23-IC2-K1-C4 SW;IC23-IC2-K1-C3 CHANNEL_NUMBER extracted;IC23-IC2-K2-C4 SW;S23-C1 SW
+// S23-C2 deleteResult disallowedByPolicy;S24-C1 SW;S24-C2 contains PROFILE_INFO1_DISABLED
+// S24-C2 contains PROFILE_INFO2_ENABLED;S24-C2 contains PROFILE_INFO3
+// 本函数由 CaseIR 4.2.23.2.4 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 M:编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_01_06_merged() {
+ var bind = curBind;
+ var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case4_01_06_merged");
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "6c06e5257cb7cc55", "authority_reference": "E_tc_4223/330-330/G_annexB_dynamic:L52"}
+ var cardCtxLoad1 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID2", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+ // runtime-bound payload: ISD_P_AID3 stays in execution domain; context_lineage: {"context_id": "6c06e5257cb7cc55", "authority_reference": "E_tc_4223/373-373/G_annexB_dynamic:L53"}
+ var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID3", {"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": "6c06e5257cb7cc55", "authority_reference": "E_tc_4223/281-281/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});
+ // GIC-1 卡态编排:PROFILE_OPERATIONAL1 已安装;PROFILE_OPERATIONAL2 已安装: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // S1-IC <ISD_P_AIDX> 标识的 Profile 未装载;PROF1 Disabled(对应 <ISD_P_AID1>);PROF2 Enabled(对应 <ISD_P_AID2>): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // S2-IC #ICCID_OP_PROFX 标识的 Profile 未装载;PROF1 Disabled;PROF2 Enabled: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // S3/S4-IC PROF1 Disabled(对应 <ISD_P_AID1>);PROF2 Enabled(对应 <ISD_P_AID2>): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // S5/S6-IC PROFILE_OPERATIONAL3 已安装且 Disabled(对应 <ISD_P_AID3>,Nickname=#NICKNAME3);PROF1 Disabled;PROF2 Enabled: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+
+ // 步骤 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");
+
+ // IC ref inline @E 步骤 2(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s26 = bind.resetAndAtr();
+ bind.checkData("IC2-IC1-K1-C1 ATR_present", "1", s26.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 2(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s27 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC2-IC1-K2-C2 FCP_Template", "1", s27.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC2-IC1-K2-C4 SW", "9000", s27.sw);
+
+ // IC ref inline @E 步骤 2(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s28 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC2-IC1-K3-C4 SW", "9000", s28.sw);
+
+ // IC ref inline @E 步骤 2(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady29 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC2-IC1-K4-C4 final SW", "9000", steady29.final.sw);
+
+ // IC ref inline @E 步骤 3(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s30 = bind.manageChannelOpen("9000");
+ bind.checkData("IC3-IC2-K1-C4 SW", "9000", s30.sw);
+ bind.checkData("IC3-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s30.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 3(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s31 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC3-IC2-K2-C4 SW", "9000", s31.sw);
+
+ // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla4 = s30.chan !== null ? (s30.chan <= 3 ? 128 + s30.chan : 188 + s30.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AIDX stays in execution domain
+ var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AIDX", "BF33124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S3-C1 SW", "9000", s4.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AIDX", s4.cmd, profileAidSession);
+ var r2w4 = BindGecaProc.parseGecaResponse(s4.resp, {outer: "BF33", required: ["80"]});
+ bind.checkData("S3-C2 deleteResult iccidOrAidNotFound", "01", (r2w4.ok && r2w4.fields["80"] === "01") ? "01" : (r2w4.fields["80"] || "absent"));
+
+ // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla5 = s30.chan !== null ? (s30.chan <= 3 ? 128 + s30.chan : 188 + s30.chan).toString(16).toUpperCase() : null;
+ var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF2D00", "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"] === "00") { r2has5_0 = true; break; }
+ }
+ bind.checkData("S4-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
+ var r2has5_1 = false;
+ for (var r2i5_1 = 0; r2i5_1 < r2p5.elements.length; r2i5_1++) {
+ var f = r2p5.elements[r2i5_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has5_1 = true; break; }
+ }
+ bind.checkData("S4-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p5.branch_tag === "A0" && r2has5_1) ? "1" : "0");
+
+ // IC ref inline @E 步骤 6(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s32 = bind.resetAndAtr();
+ bind.checkData("IC6-IC1-K1-C1 ATR_present", "1", s32.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 6(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s33 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC6-IC1-K2-C2 FCP_Template", "1", s33.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC6-IC1-K2-C4 SW", "9000", s33.sw);
+
+ // IC ref inline @E 步骤 6(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s34 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC6-IC1-K3-C4 SW", "9000", s34.sw);
+
+ // IC ref inline @E 步骤 6(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady35 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC6-IC1-K4-C4 final SW", "9000", steady35.final.sw);
+
+ // IC ref inline @E 步骤 7(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s36 = bind.manageChannelOpen("9000");
+ bind.checkData("IC7-IC2-K1-C4 SW", "9000", s36.sw);
+ bind.checkData("IC7-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s36.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 7(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s37 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC7-IC2-K2-C4 SW", "9000", s37.sw);
+
+ // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla8 = s36.chan !== null ? (s36.chan <= 3 ? 128 + s36.chan : 188 + s36.chan).toString(16).toUpperCase() : null;
+ var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF330C5A0A9892090143658709FFFF", "00", "9000");
+ bind.checkData("S7-C1 SW", "9000", s8.sw);
+ var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF33", required: ["80"]});
+ bind.checkData("S7-C2 deleteResult iccidOrAidNotFound", "01", (r2w8.ok && r2w8.fields["80"] === "01") ? "01" : (r2w8.fields["80"] || "absent"));
+
+ // 步骤 9:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla9 = s36.chan !== null ? (s36.chan <= 3 ? 128 + s36.chan : 188 + s36.chan).toString(16).toUpperCase() : null;
+ var s9 = bind.sendApdu(sdCla9, "E2", "91", "00", "BF2D00", "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_1 = false;
+ for (var r2i9_1 = 0; r2i9_1 < r2p9.elements.length; r2i9_1++) {
+ var f = r2p9.elements[r2i9_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has9_1 = true; break; }
+ }
+ bind.checkData("S8-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p9.branch_tag === "A0" && r2has9_1) ? "1" : "0");
+
+ // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s38 = bind.resetAndAtr();
+ bind.checkData("IC10-IC1-K1-C1 ATR_present", "1", s38.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s39 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC10-IC1-K2-C2 FCP_Template", "1", s39.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC10-IC1-K2-C4 SW", "9000", s39.sw);
+
+ // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s40 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC10-IC1-K3-C4 SW", "9000", s40.sw);
+
+ // IC ref inline @E 步骤 10(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady41 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC10-IC1-K4-C4 final SW", "9000", steady41.final.sw);
+
+ // IC ref inline @E 步骤 11(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s42 = bind.manageChannelOpen("9000");
+ bind.checkData("IC11-IC2-K1-C4 SW", "9000", s42.sw);
+ bind.checkData("IC11-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s42.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 11(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s43 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC11-IC2-K2-C4 SW", "9000", s43.sw);
+
+ // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla12 = s42.chan !== null ? (s42.chan <= 3 ? 128 + s42.chan : 188 + s42.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain
+ var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF33124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S11-C1 SW", "9000", s12.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s12.cmd, profileAidSession);
+ var r2w12 = BindGecaProc.parseGecaResponse(s12.resp, {outer: "BF33", required: ["80"]});
+ bind.checkData("S11-C2 deleteResult profileNotInDisabledState", "02", (r2w12.ok && r2w12.fields["80"] === "02") ? "02" : (r2w12.fields["80"] || "absent"));
+
+ // 步骤 13:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla13 = s42.chan !== null ? (s42.chan <= 3 ? 128 + s42.chan : 188 + s42.chan).toString(16).toUpperCase() : null;
+ var s13 = bind.sendApdu(sdCla13, "E2", "91", "00", "BF2D00", "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"] === "989209012143658709F5" && f["9F70"] === "00") { r2has13_0 = true; break; }
+ }
+ bind.checkData("S12-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
+ var r2has13_1 = false;
+ for (var r2i13_1 = 0; r2i13_1 < r2p13.elements.length; r2i13_1++) {
+ var f = r2p13.elements[r2i13_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has13_1 = true; break; }
+ }
+ bind.checkData("S12-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p13.branch_tag === "A0" && r2has13_1) ? "1" : "0");
+
+ // IC ref inline @E 步骤 14(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s44 = bind.resetAndAtr();
+ bind.checkData("IC14-IC1-K1-C1 ATR_present", "1", s44.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 14(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s45 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC14-IC1-K2-C2 FCP_Template", "1", s45.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC14-IC1-K2-C4 SW", "9000", s45.sw);
+
+ // IC ref inline @E 步骤 14(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s46 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC14-IC1-K3-C4 SW", "9000", s46.sw);
+
+ // IC ref inline @E 步骤 14(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady47 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC14-IC1-K4-C4 final SW", "9000", steady47.final.sw);
+
+ // IC ref inline @E 步骤 15(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s48 = bind.manageChannelOpen("9000");
+ bind.checkData("IC15-IC2-K1-C4 SW", "9000", s48.sw);
+ bind.checkData("IC15-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s48.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 15(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s49 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC15-IC2-K2-C4 SW", "9000", s49.sw);
+
+ // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla16 = s48.chan !== null ? (s48.chan <= 3 ? 128 + s48.chan : 188 + s48.chan).toString(16).toUpperCase() : null;
+ var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF330C5A0A989209013254769810F9", "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s16.sw);
+ var r2w16 = BindGecaProc.parseGecaResponse(s16.resp, {outer: "BF33", required: ["80"]});
+ bind.checkData("S15-C2 deleteResult profileNotInDisabledState", "02", (r2w16.ok && r2w16.fields["80"] === "02") ? "02" : (r2w16.fields["80"] || "absent"));
+
+ // 步骤 17:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla17 = s48.chan !== null ? (s48.chan <= 3 ? 128 + s48.chan : 188 + s48.chan).toString(16).toUpperCase() : null;
+ var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S16-C1 SW", "9000", s17.sw);
+ var r2p17 = BindEs10xProcProfile.walkChoiceList(s17.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has17_0 = false;
+ for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
+ var f = r2p17.elements[r2i17_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has17_0 = true; break; }
+ }
+ bind.checkData("S16-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
+ var r2has17_1 = false;
+ for (var r2i17_1 = 0; r2i17_1 < r2p17.elements.length; r2i17_1++) {
+ var f = r2p17.elements[r2i17_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has17_1 = true; break; }
+ }
+ bind.checkData("S16-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p17.branch_tag === "A0" && r2has17_1) ? "1" : "0");
+
+ // IC ref inline @E 步骤 18(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s50 = bind.resetAndAtr();
+ bind.checkData("IC18-IC1-K1-C1 ATR_present", "1", s50.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 18(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s51 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC18-IC1-K2-C2 FCP_Template", "1", s51.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC18-IC1-K2-C4 SW", "9000", s51.sw);
+
+ // IC ref inline @E 步骤 18(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s52 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC18-IC1-K3-C4 SW", "9000", s52.sw);
+
+ // IC ref inline @E 步骤 18(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady53 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC18-IC1-K4-C4 final SW", "9000", steady53.final.sw);
+
+ // IC ref inline @E 步骤 19(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s54 = bind.manageChannelOpen("9000");
+ bind.checkData("IC19-IC2-K1-C4 SW", "9000", s54.sw);
+ bind.checkData("IC19-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s54.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 19(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s55 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC19-IC2-K2-C4 SW", "9000", s55.sw);
+
+ // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ29_002, RQ29_022, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla20 = s54.chan !== null ? (s54.chan <= 3 ? 128 + s54.chan : 188 + s54.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID3 stays in execution domain
+ var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID3", "BF33124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S19-C1 SW", "9000", s20.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID3", s20.cmd, profileAidSession);
+ var r2w20 = BindGecaProc.parseGecaResponse(s20.resp, {outer: "BF33", required: ["80"]});
+ bind.checkData("S19-C2 deleteResult disallowedByPolicy", "03", (r2w20.ok && r2w20.fields["80"] === "03") ? "03" : (r2w20.fields["80"] || "absent"));
+
+ // 步骤 21:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ29_002, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla21 = s54.chan !== null ? (s54.chan <= 3 ? 128 + s54.chan : 188 + s54.chan).toString(16).toUpperCase() : null;
+ var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", "BF2D00", "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"] === "00") { r2has21_0 = true; break; }
+ }
+ bind.checkData("S20-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
+ var r2has21_1 = false;
+ for (var r2i21_1 = 0; r2i21_1 < r2p21.elements.length; r2i21_1++) {
+ var f = r2p21.elements[r2i21_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has21_1 = true; break; }
+ }
+ bind.checkData("S20-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p21.branch_tag === "A0" && r2has21_1) ? "1" : "0");
+ var r2has21_2 = false;
+ for (var r2i21_2 = 0; r2i21_2 < r2p21.elements.length; r2i21_2++) {
+ var f = r2p21.elements[r2i21_2].fields;
+ if (f["5A"] === "989209014365870921F5" && f["9F70"] === "00") { r2has21_2 = true; break; }
+ }
+ bind.checkData("S20-C2 contains PROFILE_INFO3", "1", (r2p21.branch_tag === "A0" && r2has21_2) ? "1" : "0");
+
+ // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s56 = bind.resetAndAtr();
+ bind.checkData("IC22-IC1-K1-C1 ATR_present", "1", s56.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s57 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC22-IC1-K2-C2 FCP_Template", "1", s57.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC22-IC1-K2-C4 SW", "9000", s57.sw);
+
+ // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s58 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC22-IC1-K3-C4 SW", "9000", s58.sw);
+
+ // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady59 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC22-IC1-K4-C4 final SW", "9000", steady59.final.sw);
+
+ // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s60 = bind.manageChannelOpen("9000");
+ bind.checkData("IC23-IC2-K1-C4 SW", "9000", s60.sw);
+ bind.checkData("IC23-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s60.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s61 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("IC23-IC2-K2-C4 SW", "9000", s61.sw);
+
+ // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ29_002, RQ29_022, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla24 = s60.chan !== null ? (s60.chan <= 3 ? 128 + s60.chan : 188 + s60.chan).toString(16).toUpperCase() : null;
+ var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF330C5A0A989209014365870921F5", "00", "9000");
+ bind.checkData("S23-C1 SW", "9000", s24.sw);
+ var r2w24 = BindGecaProc.parseGecaResponse(s24.resp, {outer: "BF33", required: ["80"]});
+ bind.checkData("S23-C2 deleteResult disallowedByPolicy", "03", (r2w24.ok && r2w24.fields["80"] === "03") ? "03" : (r2w24.fields["80"] || "absent"));
+
+ // 步骤 25:MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ29_002, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_158, RQ57_159)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla25 = s60.chan !== null ? (s60.chan <= 3 ? 128 + s60.chan : 188 + s60.chan).toString(16).toUpperCase() : null;
+ var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S24-C1 SW", "9000", s25.sw);
+ var r2p25 = BindEs10xProcProfile.walkChoiceList(s25.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has25_0 = false;
+ for (var r2i25_0 = 0; r2i25_0 < r2p25.elements.length; r2i25_0++) {
+ var f = r2p25.elements[r2i25_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has25_0 = true; break; }
+ }
+ bind.checkData("S24-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p25.branch_tag === "A0" && r2has25_0) ? "1" : "0");
+ var r2has25_1 = false;
+ for (var r2i25_1 = 0; r2i25_1 < r2p25.elements.length; r2i25_1++) {
+ var f = r2p25.elements[r2i25_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "01") { r2has25_1 = true; break; }
+ }
+ bind.checkData("S24-C2 contains PROFILE_INFO2_ENABLED", "1", (r2p25.branch_tag === "A0" && r2has25_1) ? "1" : "0");
+ var r2has25_2 = false;
+ for (var r2i25_2 = 0; r2i25_2 < r2p25.elements.length; r2i25_2++) {
+ var f = r2p25.elements[r2i25_2].fields;
+ if (f["5A"] === "989209014365870921F5" && f["9F70"] === "00") { r2has25_2 = true; break; }
+ }
+ bind.checkData("S24-C2 contains PROFILE_INFO3", "1", (r2p25.branch_tag === "A0" && r2has25_2) ? "1" : "0");
}