源码对照:4.2.23.2.2
ES10c 删除 Profile 异常用例(Case 3) / TC_eUICC_ES10c.DeleteProfile_ErrorCases_Case3
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
386 行 / 17670 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3/Import/TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3.js
215 行 / 18777 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js386 行 / 17670 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_01_Delete_Profile_not_possible_with_unknown_ISD_P_AID + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_02_Delete_Profile_not_possible_with_unknown_ICCID + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_03_Delete_Profile_by_ISDP_AID_not_possible_when_this_Operational_Profile_is_in_Enabled_state + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_04_Delete_Profile_by_ICCID_not_possible_when_this_Operational_Profile_is_in_Enabled_state + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_05_Delete_Profile_by_ISDP_AID_not_possible_not_possible_when_PPR2_is_set + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_06_Delete_Profile_by_ICCID_not_possible_not_possible_when_PPR2_is_set (extracted verbatim)
2
3function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_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,"90","00","6A82");//Case 3指令P1值为90 见SGP.22 5.7.18
31
32 curStrHandle.CheckData("", respData, "DeleteProfileResponse");
33
34 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
35 var proInfoListRequest = new ProfileInfoListRequest();
36 proInfoListRequest.tagList = "5A4F9F70";
37 proInfoListRequest.GenHexData();
38 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
39
40
41 var proInfoListResponse = new ProfileInfoListResponse();
42 proInfoListResponse.checkCardResDataFormat(respData);
43
44 try
45 {
46 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
47 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
48 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
49
50 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
51 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
52 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
53 }catch(e){
54 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
55 }
56
57
58 RecoverCard();
59}
60
61function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_02_Delete_Profile_not_possible_with_unknown_ICCID()
62{
63 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
64 var ISD_P_Test01 = curProfile_ISD_P_AID;
65
66 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
67 var ISD_P_Test02 = curProfile_ISD_P_AID;
68
69 tracenamestr = "测试目的:通过未知的ICCID删除profile应不成功";
70 curDis.TraceStart(sno++,tracenamestr);
71
72 curLogicChannel = 0;
73 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
74 Ini_powerOn_eUICC_LPAe_not_activate();
75
76 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
77 TS_MANAGE_CHANNEL_OPEN();
78
79 curLogicChannel = 1;
80
81 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
82 TS_SELECT("Select ISD",ISD_R_AID,"9000");
83
84 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ISD-P AID删除profile;");
85 var deleProfileRequest = new DeleteProfileRequest();
86 deleProfileRequest.iccid = ICCID_OP_PROFX;
87 deleProfileRequest.GenHexData();
88 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"90","00","6A82");//Case 3指令P1值为90 见SGP.22 5.7.18
89
90 curStrHandle.CheckData("", respData, "DeleteProfileResponse");
91
92 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
93 var proInfoListRequest = new ProfileInfoListRequest();
94 proInfoListRequest.tagList = "5A4F9F70";
95 proInfoListRequest.GenHexData();
96 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
97
98
99 var proInfoListResponse = new ProfileInfoListResponse();
100 proInfoListResponse.checkCardResDataFormat(respData);
101
102 try
103 {
104 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
105 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
106 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
107
108 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
109 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
110 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
111 }catch(e){
112 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
113 }
114
115
116 RecoverCard();
117}
118
119function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_03_Delete_Profile_by_ISDP_AID_not_possible_when_this_Operational_Profile_is_in_Enabled_state()
120{
121 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
122 var ISD_P_Test01 = curProfile_ISD_P_AID;
123
124 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
125 var ISD_P_Test02 = curProfile_ISD_P_AID;
126
127 tracenamestr = "测试目的:通过ISD-P AID删除处于激活状态的Operational Profile应不成功";
128 curDis.TraceStart(sno++,tracenamestr);
129
130 curLogicChannel = 0;
131 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
132 Ini_powerOn_eUICC_LPAe_not_activate();
133
134 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
135 TS_MANAGE_CHANNEL_OPEN();
136
137 curLogicChannel = 1;
138
139 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
140 TS_SELECT("Select ISD",ISD_R_AID,"9000");
141
142 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ISD-P AID删除profile;");
143 var deleProfileRequest = new DeleteProfileRequest();
144 deleProfileRequest.isdpAid = ISD_P_Test02;
145 deleProfileRequest.GenHexData();
146 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"90","00","6985");
147
148 curStrHandle.CheckData("", respData, "DeleteProfileResponse");
149
150 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
151 var proInfoListRequest = new ProfileInfoListRequest();
152 proInfoListRequest.tagList = "5A4F9F70";
153 proInfoListRequest.GenHexData();
154 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
155
156
157 var proInfoListResponse = new ProfileInfoListResponse();
158 proInfoListResponse.checkCardResDataFormat(respData);
159
160 try
161 {
162 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
163 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
164 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
165
166 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
167 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
168 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
169 }catch(e){
170 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
171 }
172
173
174 RecoverCard();
175}
176
177function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_04_Delete_Profile_by_ICCID_not_possible_when_this_Operational_Profile_is_in_Enabled_state()
178{
179 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
180 var ISD_P_Test01 = curProfile_ISD_P_AID;
181
182 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
183 var ISD_P_Test02 = curProfile_ISD_P_AID;
184
185 tracenamestr = "测试目的:通过ICCID删除处于激活状态的Operational Profile应不成功";
186 curDis.TraceStart(sno++,tracenamestr);
187
188 curLogicChannel = 0;
189 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
190 Ini_powerOn_eUICC_LPAe_not_activate();
191
192 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
193 TS_MANAGE_CHANNEL_OPEN();
194
195 curLogicChannel = 1;
196
197 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
198 TS_SELECT("Select ISD",ISD_R_AID,"9000");
199
200 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ICCID删除profile;");
201 var deleProfileRequest = new DeleteProfileRequest();
202 deleProfileRequest.iccid = ICCID_OP_PROF2;
203 deleProfileRequest.GenHexData();
204 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"90","00","6985");
205
206 curStrHandle.CheckData("", respData, "DeleteProfileResponse");
207
208 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
209 var proInfoListRequest = new ProfileInfoListRequest();
210 proInfoListRequest.tagList = "5A4F9F70";
211 proInfoListRequest.GenHexData();
212 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
213
214
215 var proInfoListResponse = new ProfileInfoListResponse();
216 proInfoListResponse.checkCardResDataFormat(respData);
217
218 try
219 {
220 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
221 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
222 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
223
224 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
225 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
226 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
227 }catch(e){
228 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
229 }
230
231
232 RecoverCard();
233}
234
235function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_05_Delete_Profile_by_ISDP_AID_not_possible_not_possible_when_PPR2_is_set ()//PPR:0520
236{
237 initial_condition_PROFILE_OPERATIONAL3_is_Disabled();
238 var ISD_P_Test03 = curProfile_ISD_P_AID;
239
240 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
241 var ISD_P_Test01 = curProfile_ISD_P_AID;
242
243 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
244 var ISD_P_Test02 = curProfile_ISD_P_AID;
245
246 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行SetNickname,profile3的Nickname为NICKNAME3;");
247 var setNicknameRequest = new SetNicknameRequest();
248 setNicknameRequest.iccid = ICCID_OP_PROF3;
249 setNicknameRequest.profileNickname = NICKNAME3;
250 setNicknameRequest.GenHexData();
251 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
252 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
253
254 tracenamestr = "Case3异常测试:当配置文件策略规则为“禁止删除此配置文件”时,无法删除该运营配置文件。";
255 curDis.TraceStart(sno++,tracenamestr);
256
257 curLogicChannel = 0;
258 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
259 Ini_powerOn_eUICC_LPAe_not_activate();
260
261 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
262 TS_MANAGE_CHANNEL_OPEN();
263
264 curLogicChannel = 1;
265
266 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
267 TS_SELECT("Select ISD",ISD_R_AID,"9000");
268
269 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ISD_P_AID删除profile3;");
270 var deleProfileRequest = new DeleteProfileRequest();
271 deleProfileRequest.isdpAid = ISD_P_Test03;
272 deleProfileRequest.GenHexData();
273 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"90","00","6985");
274
275 curStrHandle.CheckData("", respData, "DeleteProfileResponse");
276
277 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
278 var proInfoListRequest = new ProfileInfoListRequest();
279 proInfoListRequest.GenHexData();
280 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
281
282
283 var proInfoListResponse = new ProfileInfoListResponse();
284 proInfoListResponse.checkCardResDataFormat(respData);
285
286 try
287 {
288 curStrHandle.CheckData(ICCID_OP_PROF3, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
289 curStrHandle.CheckData(ISD_P_Test03, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
290 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
291 curStrHandle.CheckData(NICKNAME3, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileNickname, "nickname");
292
293
294 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
295 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
296 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
297
298 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[2].iccid, "ICCID");
299 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[2].isdpAid, "ISD-P AID");
300 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[2].profileState, "profile State");
301
302
303 }catch(e){
304 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
305 }
306
307
308 RecoverCard();
309}
310
311function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_06_Delete_Profile_by_ICCID_not_possible_not_possible_when_PPR2_is_set ()//PPR:0520
312{
313 initial_condition_PROFILE_OPERATIONAL3_is_Disabled();
314 var ISD_P_Test03 = curProfile_ISD_P_AID;
315
316 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
317 var ISD_P_Test01 = curProfile_ISD_P_AID;
318
319 initial_condition_PROFILE_OPERATIONAL2_is_Enabled();
320 var ISD_P_Test02 = curProfile_ISD_P_AID;
321
322 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行SetNickname,profile3的Nickname为NICKNAME3;");
323 var setNicknameRequest = new SetNicknameRequest();
324 setNicknameRequest.iccid = ICCID_OP_PROF3;
325 setNicknameRequest.profileNickname = NICKNAME3;
326 setNicknameRequest.GenHexData();
327 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
328 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
329
330 tracenamestr = "Case3异常测试:当配置文件策略规则为“禁止删除此配置文件”时,无法删除该运营配置文件。";
331 curDis.TraceStart(sno++,tracenamestr);
332
333 curLogicChannel = 0;
334 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
335 Ini_powerOn_eUICC_LPAe_not_activate();
336
337 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
338 TS_MANAGE_CHANNEL_OPEN();
339
340 curLogicChannel = 1;
341
342 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
343 TS_SELECT("Select ISD",ISD_R_AID,"9000");
344
345 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest,通过ICCID删除profile3;");
346 var deleProfileRequest = new DeleteProfileRequest();
347 deleProfileRequest.iccid = ICCID_OP_PROF3;
348 deleProfileRequest.GenHexData();
349 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData,"90","00","6985");
350
351 curStrHandle.CheckData("", respData, "DeleteProfileResponse");
352
353 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
354 var proInfoListRequest = new ProfileInfoListRequest();
355 proInfoListRequest.GenHexData();
356 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
357
358
359 var proInfoListResponse = new ProfileInfoListResponse();
360 proInfoListResponse.checkCardResDataFormat(respData);
361
362 try
363 {
364 curStrHandle.CheckData(ICCID_OP_PROF3, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
365 curStrHandle.CheckData(ISD_P_Test03, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
366 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
367 curStrHandle.CheckData(NICKNAME3, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileNickname, "nickname");
368
369
370 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[1].iccid, "ICCID");
371 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[1].isdpAid, "ISD-P AID");
372 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[1].profileState, "profile State");
373
374 curStrHandle.CheckData(ICCID_OP_PROF2, proInfoListResponse.profileInfoListOk.arrOfElement[2].iccid, "ICCID");
375 curStrHandle.CheckData(ISD_P_Test02, proInfoListResponse.profileInfoListOk.arrOfElement[2].isdpAid, "ISD-P AID");
376 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[2].profileState, "profile State");
377
378
379 }catch(e){
380 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
381 }
382
383
384 RecoverCard();
385}
386
-cas 盲生成TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3/Import/TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3.js215 行 / 18777 字符 / gb18030
1// Author: 卡思Cas智能体
2// Date: 20261004-021956
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.DeleteProfile_ErrorCases_Case3,Test Sequence #01-#06 Error(本 TC 全部 6 条 Test Sequence 合并展开),适用性 M。
4// Test points: ICH-IC1-K1-C1 ATR_present;ICH-IC1-K2-C2 FCP_Template;ICH-IC1-K2-C4 SW
5// ICH-IC1-K3-C4 SW;ICH-IC1-K4-C4 final SW;ICH-IC2-K1-C4 SW;ICH-IC2-K1-C3 CHANNEL_NUMBER extracted
6// ICH-IC2-K2-C4 SW;S1-C1 SW;S1-C2 response data absent;S2-C1 SW;S2-C2 profileInfoListOk count 2
7// S2-C3 iccid;S2-C3 isdpAid present;S2-C3 profileState;S2-C3 serviceProviderName SP Name 1
8// S2-C3 profileName Operational Profile Name 1;S2-C3 iconType;S2-C3 icon present
9// S2-C3 profileClass;S2-C4 iccid;S2-C4 isdpAid present;S2-C4 profileState;S2-C4 profileClass
10// S3-C1 SW;S3-C2 response data absent;S4-C1 SW;S4-C2 profileInfoListOk count 2;S5-C1 SW
11// S5-C2 response data absent;S6-C1 SW;S6-C2 profileInfoListOk count 2;S7-C1 SW
12// S7-C2 response data absent;S8-C1 SW;S8-C2 profileInfoListOk count 2;S9-C1 SW
13// S9-C2 response data absent;S10-C1 SW;S10-C2 profileInfoListOk count 3;S10-C3 iccid
14// S10-C3 isdpAid present;S10-C3 profileState;S10-C3 profileNickname Nickname 3
15// S10-C3 profileClass;S11-C1 SW;S11-C2 response data absent;S12-C1 SW
16// S12-C2 profileInfoListOk count 3
17// 本函数由 CaseIR 4.2.23.2.2 编译生成(4.2.23.2.2-TC_eUICC_ES10c.DeleteProfile_ErrorCases_Case3-20261004_021956,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
18// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
19// 适用性 M:编译期门,运行时由 harness 环境前置承担。
20function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_01_06_Error_TC_6_Test_Sequence() {
21 var bind = curBind;
22 var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_01_06_Error_TC_6_Test_Sequence");
23 // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "b665e489fcbe7cb0", "authority_reference": "E_tc_4223/90-90/G_annexB_dynamic:L52"}
24 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});
25 // runtime-bound payload: ISD_P_AID3 stays in execution domain; context_lineage: {"context_id": "b665e489fcbe7cb0", "authority_reference": "E_tc_4223/178-178/G_annexB_dynamic:L53"}
26 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});
27 // runtime-bound payload: ISD_P_AIDX stays in execution domain; context_lineage: {"context_id": "b665e489fcbe7cb0", "authority_reference": "E_tc_4223/86-86/G_annexB_dynamic:L55"}
28 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});
29 // PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
30
31 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
32 var s14 = bind.resetAndAtr();
33 bind.checkData("ICH-IC1-K1-C1 ATR_present", "1", s14.atr_hex !== "" ? "1" : "0");
34
35 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
36 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
37 var s15 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
38 bind.checkData("ICH-IC1-K2-C2 FCP_Template", "1", s15.resp.length > 0 ? "1" : "0");
39 bind.checkData("ICH-IC1-K2-C4 SW", "9000", s15.sw);
40
41 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
42 var s16 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
43 bind.checkData("ICH-IC1-K3-C4 SW", "9000", s16.sw);
44
45 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
46 var steady17 = bind.runToSteadyState(function () {
47 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
48 });
49 bind.checkData("ICH-IC1-K4-C4 final SW", "9000", steady17.final.sw);
50
51 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
52 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
53 var s18 = bind.manageChannelOpen("9000");
54 bind.checkData("ICH-IC2-K1-C4 SW", "9000", s18.sw);
55 bind.checkData("ICH-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s18.chan !== null ? "1" : "0");
56
57 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
58 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
59 var s19 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
60 // 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.
61 bind.checkData("ICH-IC2-K2-C4 SW", "9000", s19.sw);
62
63 // 步骤 1:MTD_STORE_DATA(tc_step)
64 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
65 var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
66
67 // 步骤 2:Seq#01] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_160, RQ57_161)
68 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
69 var sdCla2 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
70 // runtime-bound payload: ISD_P_AIDX stays in execution domain
71 var s2 = bind.sendApdu(sdCla2, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AIDX", "BF33124F10", "", profileAidSession), null, "6A82");
72 bind.checkData("S1-C1 SW", "6A82", s2.sw);
73 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AIDX", s2.cmd, profileAidSession);
74 bind.checkData("S1-C2 response data absent", "1", s2.resp === "" ? "1" : "0");
75
76 // 步骤 3:Seq#01] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_160, RQ57_161)
77 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
78 var sdCla3 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
79 var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2D00", "00", "9000");
80 bind.checkData("S2-C1 SW", "9000", s3.sw);
81 // Inline ASCII->hex helper (UTF8String expected values; values enter as
82 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
83 function __asciiHex(text) {
84 var out = "";
85 for (var i = 0; i < text.length; i++) {
86 var c = text.charCodeAt(i).toString(16).toUpperCase();
87 out += (c.length === 1 ? "0" + c : c);
88 }
89 return out;
90 }
91 var r2p3 = BindEs10xProcProfile.walkChoiceList(s3.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
92 bind.checkData("S2-C2 profileInfoListOk count 2", "1", (r2p3.branch_tag === "A0" && r2p3.elements.length === 2) ? "1" : "0");
93 var r2e3 = null;
94 for (var r2i3 = 0; r2i3 < r2p3.elements.length; r2i3++) {
95 if (r2p3.elements[r2i3].fields["5A"] === "989209012143658709F5") { r2e3 = r2p3.elements[r2i3].fields; break; }
96 }
97 bind.checkData("S2-C3 iccid", "989209012143658709F5", r2e3 === null ? "absent" : (r2e3["5A"] === undefined ? "absent" : r2e3["5A"]));
98 bind.checkData("S2-C3 isdpAid present", "1", (r2e3 !== null && r2e3["4F"] !== undefined) ? "1" : "0");
99 bind.checkData("S2-C3 profileState", "00", r2e3 === null ? "absent" : (r2e3["9F70"] === undefined ? "absent" : r2e3["9F70"]));
100 var r2a3_91 = __asciiHex("SP Name 1");
101 bind.checkData("S2-C3 serviceProviderName SP Name 1", r2a3_91, r2e3 === null ? "absent" : (r2e3["91"] === undefined ? "absent" : r2e3["91"]));
102 var r2a3_92 = __asciiHex("Operational Profile Name 1");
103 bind.checkData("S2-C3 profileName Operational Profile Name 1", r2a3_92, r2e3 === null ? "absent" : (r2e3["92"] === undefined ? "absent" : r2e3["92"]));
104 bind.checkData("S2-C3 iconType", "01", r2e3 === null ? "absent" : (r2e3["93"] === undefined ? "absent" : r2e3["93"]));
105 bind.checkData("S2-C3 icon present", "1", (r2e3 !== null && r2e3["94"] !== undefined) ? "1" : "0");
106 bind.checkData("S2-C3 profileClass", "02", r2e3 === null ? "absent" : (r2e3["95"] === undefined ? "absent" : r2e3["95"]));
107 var r2e3 = null;
108 for (var r2i3 = 0; r2i3 < r2p3.elements.length; r2i3++) {
109 if (r2p3.elements[r2i3].fields["5A"] === "989209013254769810F9") { r2e3 = r2p3.elements[r2i3].fields; break; }
110 }
111 bind.checkData("S2-C4 iccid", "989209013254769810F9", r2e3 === null ? "absent" : (r2e3["5A"] === undefined ? "absent" : r2e3["5A"]));
112 bind.checkData("S2-C4 isdpAid present", "1", (r2e3 !== null && r2e3["4F"] !== undefined) ? "1" : "0");
113 bind.checkData("S2-C4 profileState", "01", r2e3 === null ? "absent" : (r2e3["9F70"] === undefined ? "absent" : r2e3["9F70"]));
114 bind.checkData("S2-C4 profileClass", "02", r2e3 === null ? "absent" : (r2e3["95"] === undefined ? "absent" : r2e3["95"]));
115
116 // 步骤 4:Seq#02] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_160, RQ57_161)
117 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
118 var sdCla4 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
119 var s4 = bind.sendApdu(sdCla4, "E2", "90", "00", "BF330C5A0A9892090143658709FFFF", null, "6A82");
120 bind.checkData("S3-C1 SW", "6A82", s4.sw);
121 bind.checkData("S3-C2 response data absent", "1", s4.resp === "" ? "1" : "0");
122
123 // 步骤 5:Seq#02] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_160, RQ57_161)
124 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
125 var sdCla5 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
126 var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF2D00", "00", "9000");
127 bind.checkData("S4-C1 SW", "9000", s5.sw);
128 var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
129 bind.checkData("S4-C2 profileInfoListOk count 2", "1", (r2p5.branch_tag === "A0" && r2p5.elements.length === 2) ? "1" : "0");
130
131 // 步骤 6:Seq#03] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_160, RQ57_162)
132 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
133 var sdCla6 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
134 // runtime-bound payload: ISD_P_AID2 stays in execution domain
135 var s6 = bind.sendApdu(sdCla6, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF33124F10", "", profileAidSession), null, "6985");
136 bind.checkData("S5-C1 SW", "6985", s6.sw);
137 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s6.cmd, profileAidSession);
138 bind.checkData("S5-C2 response data absent", "1", s6.resp === "" ? "1" : "0");
139
140 // 步骤 7:Seq#03] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_160, RQ57_162)
141 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
142 var sdCla7 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
143 var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF2D00", "00", "9000");
144 bind.checkData("S6-C1 SW", "9000", s7.sw);
145 var r2p7 = BindEs10xProcProfile.walkChoiceList(s7.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
146 bind.checkData("S6-C2 profileInfoListOk count 2", "1", (r2p7.branch_tag === "A0" && r2p7.elements.length === 2) ? "1" : "0");
147
148 // 步骤 8:Seq#04] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_160, RQ57_162)
149 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
150 var sdCla8 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
151 var s8 = bind.sendApdu(sdCla8, "E2", "90", "00", "BF330C5A0A989209013254769810F9", null, "6985");
152 bind.checkData("S7-C1 SW", "6985", s8.sw);
153 bind.checkData("S7-C2 response data absent", "1", s8.resp === "" ? "1" : "0");
154
155 // 步骤 9:Seq#04] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_160, RQ57_162)
156 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
157 var sdCla9 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
158 var s9 = bind.sendApdu(sdCla9, "E2", "91", "00", "BF2D00", "00", "9000");
159 bind.checkData("S8-C1 SW", "9000", s9.sw);
160 var r2p9 = BindEs10xProcProfile.walkChoiceList(s9.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
161 bind.checkData("S8-C2 profileInfoListOk count 2", "1", (r2p9.branch_tag === "A0" && r2p9.elements.length === 2) ? "1" : "0");
162
163 // 步骤 10:Seq#05] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ29_002, RQ29_022, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_160, RQ57_162)
164 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
165 var sdCla10 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
166 // runtime-bound payload: ISD_P_AID3 stays in execution domain
167 var s10 = bind.sendApdu(sdCla10, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID3", "BF33124F10", "", profileAidSession), null, "6985");
168 bind.checkData("S9-C1 SW", "6985", s10.sw);
169 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID3", s10.cmd, profileAidSession);
170 bind.checkData("S9-C2 response data absent", "1", s10.resp === "" ? "1" : "0");
171
172 // 步骤 11:Seq#05] MTD_STORE_DATA(tc_step;REQ: RQ57_154, RQ57_156, RQ57_160, RQ57_162)
173 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
174 var sdCla11 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
175 var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2D00", "00", "9000");
176 bind.checkData("S10-C1 SW", "9000", s11.sw);
177 // Inline ASCII->hex helper (UTF8String expected values; values enter as
178 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
179 function __asciiHex(text) {
180 var out = "";
181 for (var i = 0; i < text.length; i++) {
182 var c = text.charCodeAt(i).toString(16).toUpperCase();
183 out += (c.length === 1 ? "0" + c : c);
184 }
185 return out;
186 }
187 var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
188 bind.checkData("S10-C2 profileInfoListOk count 3", "1", (r2p11.branch_tag === "A0" && r2p11.elements.length === 3) ? "1" : "0");
189 var r2e11 = null;
190 for (var r2i11 = 0; r2i11 < r2p11.elements.length; r2i11++) {
191 if (r2p11.elements[r2i11].fields["5A"] === "989209014365870921F5") { r2e11 = r2p11.elements[r2i11].fields; break; }
192 }
193 bind.checkData("S10-C3 iccid", "989209014365870921F5", r2e11 === null ? "absent" : (r2e11["5A"] === undefined ? "absent" : r2e11["5A"]));
194 bind.checkData("S10-C3 isdpAid present", "1", (r2e11 !== null && r2e11["4F"] !== undefined) ? "1" : "0");
195 bind.checkData("S10-C3 profileState", "00", r2e11 === null ? "absent" : (r2e11["9F70"] === undefined ? "absent" : r2e11["9F70"]));
196 var r2a11_90 = __asciiHex("Nickname 3");
197 bind.checkData("S10-C3 profileNickname Nickname 3", r2a11_90, r2e11 === null ? "absent" : (r2e11["90"] === undefined ? "absent" : r2e11["90"]));
198 bind.checkData("S10-C3 profileClass", "02", r2e11 === null ? "absent" : (r2e11["95"] === undefined ? "absent" : r2e11["95"]));
199
200 // 步骤 12:Seq#06] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ29_002, RQ29_022, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_160, RQ57_162)
201 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
202 var sdCla12 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
203 var s12 = bind.sendApdu(sdCla12, "E2", "90", "00", "BF330C5A0A989209014365870921F5", null, "6985");
204 bind.checkData("S11-C1 SW", "6985", s12.sw);
205 bind.checkData("S11-C2 response data absent", "1", s12.resp === "" ? "1" : "0");
206
207 // 步骤 13:Seq#06] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_160, RQ57_162)
208 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
209 var sdCla13 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
210 var s13 = bind.sendApdu(sdCla13, "E2", "91", "00", "BF2D00", "00", "9000");
211 bind.checkData("S12-C1 SW", "9000", s13.sw);
212 var r2p13 = BindEs10xProcProfile.walkChoiceList(s13.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
213 bind.checkData("S12-C2 profileInfoListOk count 3", "1", (r2p13.branch_tag === "A0" && r2p13.elements.length === 3) ? "1" : "0");
214}
215
完整 unified diff
行级差异:新增 213 行 / 删除 384 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(602 行)
--- -man
+++ -cas
@@ -1,386 +1,215 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_01_Delete_Profile_not_possible_with_unknown_ISD_P_AID + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_02_Delete_Profile_not_possible_with_unknown_ICCID + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_03_Delete_Profile_by_ISDP_AID_not_possible_when_this_Operational_Profile_is_in_Enabled_state + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_04_Delete_Profile_by_ICCID_not_possible_when_this_Operational_Profile_is_in_Enabled_state + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_05_Delete_Profile_by_ISDP_AID_not_possible_not_possible_when_PPR2_is_set + TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_06_Delete_Profile_by_ICCID_not_possible_not_possible_when_PPR2_is_set (extracted verbatim)
-
-function TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_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,"90","00","6A82");//Case 3指令P1值为90 见SGP.22 5.7.18
-
- curStrHandle.CheckData("", 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_Case3_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,"90","00","6A82");//Case 3指令P1值为90 见SGP.22 5.7.18
-
- curStrHandle.CheckData("", 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_Case3_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,"90","00","6985");
-
- curStrHandle.CheckData("", 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_Case3_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,"90","00","6985");
-
- curStrHandle.CheckData("", 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_Case3_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,"90","00","6985");
-
- curStrHandle.CheckData("", 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_Case3_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,"90","00","6985");
-
- curStrHandle.CheckData("", 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_Case3,Test Sequence #01-#06 Error(本 TC 全部 6 条 Test Sequence 合并展开),适用性 M。
+// Test points: ICH-IC1-K1-C1 ATR_present;ICH-IC1-K2-C2 FCP_Template;ICH-IC1-K2-C4 SW
+// ICH-IC1-K3-C4 SW;ICH-IC1-K4-C4 final SW;ICH-IC2-K1-C4 SW;ICH-IC2-K1-C3 CHANNEL_NUMBER extracted
+// ICH-IC2-K2-C4 SW;S1-C1 SW;S1-C2 response data absent;S2-C1 SW;S2-C2 profileInfoListOk count 2
+// S2-C3 iccid;S2-C3 isdpAid present;S2-C3 profileState;S2-C3 serviceProviderName SP Name 1
+// S2-C3 profileName Operational Profile Name 1;S2-C3 iconType;S2-C3 icon present
+// S2-C3 profileClass;S2-C4 iccid;S2-C4 isdpAid present;S2-C4 profileState;S2-C4 profileClass
+// S3-C1 SW;S3-C2 response data absent;S4-C1 SW;S4-C2 profileInfoListOk count 2;S5-C1 SW
+// S5-C2 response data absent;S6-C1 SW;S6-C2 profileInfoListOk count 2;S7-C1 SW
+// S7-C2 response data absent;S8-C1 SW;S8-C2 profileInfoListOk count 2;S9-C1 SW
+// S9-C2 response data absent;S10-C1 SW;S10-C2 profileInfoListOk count 3;S10-C3 iccid
+// S10-C3 isdpAid present;S10-C3 profileState;S10-C3 profileNickname Nickname 3
+// S10-C3 profileClass;S11-C1 SW;S11-C2 response data absent;S12-C1 SW
+// S12-C2 profileInfoListOk count 3
+// 本函数由 CaseIR 4.2.23.2.2 编译生成(4.2.23.2.2-TC_eUICC_ES10c.DeleteProfile_ErrorCases_Case3-20261004_021956,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_Case3_01_06_Error_TC_6_Test_Sequence() {
+ var bind = curBind;
+ var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_DeleteProfile_ErrorCases_Case3_01_06_Error_TC_6_Test_Sequence");
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "b665e489fcbe7cb0", "authority_reference": "E_tc_4223/90-90/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": "b665e489fcbe7cb0", "authority_reference": "E_tc_4223/178-178/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": "b665e489fcbe7cb0", "authority_reference": "E_tc_4223/86-86/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});
+ // PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s14 = bind.resetAndAtr();
+ bind.checkData("ICH-IC1-K1-C1 ATR_present", "1", s14.atr_hex !== "" ? "1" : "0");
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s15 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("ICH-IC1-K2-C2 FCP_Template", "1", s15.resp.length > 0 ? "1" : "0");
+ bind.checkData("ICH-IC1-K2-C4 SW", "9000", s15.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s16 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("ICH-IC1-K3-C4 SW", "9000", s16.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady17 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("ICH-IC1-K4-C4 final SW", "9000", steady17.final.sw);
+
+ // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s18 = bind.manageChannelOpen("9000");
+ bind.checkData("ICH-IC2-K1-C4 SW", "9000", s18.sw);
+ bind.checkData("ICH-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s18.chan !== null ? "1" : "0");
+
+ // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s19 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("ICH-IC2-K2-C4 SW", "9000", s19.sw);
+
+ // 步骤 1:MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
+
+ // 步骤 2:Seq#01] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_160, RQ57_161)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla2 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AIDX stays in execution domain
+ var s2 = bind.sendApdu(sdCla2, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AIDX", "BF33124F10", "", profileAidSession), null, "6A82");
+ bind.checkData("S1-C1 SW", "6A82", s2.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AIDX", s2.cmd, profileAidSession);
+ bind.checkData("S1-C2 response data absent", "1", s2.resp === "" ? "1" : "0");
+
+ // 步骤 3:Seq#01] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_160, RQ57_161)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla3 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
+ var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S2-C1 SW", "9000", s3.sw);
+ // Inline ASCII->hex helper (UTF8String expected values; values enter as
+ // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+ function __asciiHex(text) {
+ var out = "";
+ for (var i = 0; i < text.length; i++) {
+ var c = text.charCodeAt(i).toString(16).toUpperCase();
+ out += (c.length === 1 ? "0" + c : c);
+ }
+ return out;
+ }
+ var r2p3 = BindEs10xProcProfile.walkChoiceList(s3.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ bind.checkData("S2-C2 profileInfoListOk count 2", "1", (r2p3.branch_tag === "A0" && r2p3.elements.length === 2) ? "1" : "0");
+ var r2e3 = null;
+ for (var r2i3 = 0; r2i3 < r2p3.elements.length; r2i3++) {
+ if (r2p3.elements[r2i3].fields["5A"] === "989209012143658709F5") { r2e3 = r2p3.elements[r2i3].fields; break; }
+ }
+ bind.checkData("S2-C3 iccid", "989209012143658709F5", r2e3 === null ? "absent" : (r2e3["5A"] === undefined ? "absent" : r2e3["5A"]));
+ bind.checkData("S2-C3 isdpAid present", "1", (r2e3 !== null && r2e3["4F"] !== undefined) ? "1" : "0");
+ bind.checkData("S2-C3 profileState", "00", r2e3 === null ? "absent" : (r2e3["9F70"] === undefined ? "absent" : r2e3["9F70"]));
+ var r2a3_91 = __asciiHex("SP Name 1");
+ bind.checkData("S2-C3 serviceProviderName SP Name 1", r2a3_91, r2e3 === null ? "absent" : (r2e3["91"] === undefined ? "absent" : r2e3["91"]));
+ var r2a3_92 = __asciiHex("Operational Profile Name 1");
+ bind.checkData("S2-C3 profileName Operational Profile Name 1", r2a3_92, r2e3 === null ? "absent" : (r2e3["92"] === undefined ? "absent" : r2e3["92"]));
+ bind.checkData("S2-C3 iconType", "01", r2e3 === null ? "absent" : (r2e3["93"] === undefined ? "absent" : r2e3["93"]));
+ bind.checkData("S2-C3 icon present", "1", (r2e3 !== null && r2e3["94"] !== undefined) ? "1" : "0");
+ bind.checkData("S2-C3 profileClass", "02", r2e3 === null ? "absent" : (r2e3["95"] === undefined ? "absent" : r2e3["95"]));
+ var r2e3 = null;
+ for (var r2i3 = 0; r2i3 < r2p3.elements.length; r2i3++) {
+ if (r2p3.elements[r2i3].fields["5A"] === "989209013254769810F9") { r2e3 = r2p3.elements[r2i3].fields; break; }
+ }
+ bind.checkData("S2-C4 iccid", "989209013254769810F9", r2e3 === null ? "absent" : (r2e3["5A"] === undefined ? "absent" : r2e3["5A"]));
+ bind.checkData("S2-C4 isdpAid present", "1", (r2e3 !== null && r2e3["4F"] !== undefined) ? "1" : "0");
+ bind.checkData("S2-C4 profileState", "01", r2e3 === null ? "absent" : (r2e3["9F70"] === undefined ? "absent" : r2e3["9F70"]));
+ bind.checkData("S2-C4 profileClass", "02", r2e3 === null ? "absent" : (r2e3["95"] === undefined ? "absent" : r2e3["95"]));
+
+ // 步骤 4:Seq#02] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_160, RQ57_161)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla4 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
+ var s4 = bind.sendApdu(sdCla4, "E2", "90", "00", "BF330C5A0A9892090143658709FFFF", null, "6A82");
+ bind.checkData("S3-C1 SW", "6A82", s4.sw);
+ bind.checkData("S3-C2 response data absent", "1", s4.resp === "" ? "1" : "0");
+
+ // 步骤 5:Seq#02] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ57_154, RQ57_157, RQ57_160, RQ57_161)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla5 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.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"});
+ bind.checkData("S4-C2 profileInfoListOk count 2", "1", (r2p5.branch_tag === "A0" && r2p5.elements.length === 2) ? "1" : "0");
+
+ // 步骤 6:Seq#03] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_160, RQ57_162)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla6 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain
+ var s6 = bind.sendApdu(sdCla6, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF33124F10", "", profileAidSession), null, "6985");
+ bind.checkData("S5-C1 SW", "6985", s6.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s6.cmd, profileAidSession);
+ bind.checkData("S5-C2 response data absent", "1", s6.resp === "" ? "1" : "0");
+
+ // 步骤 7:Seq#03] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_160, RQ57_162)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla7 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
+ var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S6-C1 SW", "9000", s7.sw);
+ var r2p7 = BindEs10xProcProfile.walkChoiceList(s7.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ bind.checkData("S6-C2 profileInfoListOk count 2", "1", (r2p7.branch_tag === "A0" && r2p7.elements.length === 2) ? "1" : "0");
+
+ // 步骤 8:Seq#04] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_160, RQ57_162)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla8 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
+ var s8 = bind.sendApdu(sdCla8, "E2", "90", "00", "BF330C5A0A989209013254769810F9", null, "6985");
+ bind.checkData("S7-C1 SW", "6985", s8.sw);
+ bind.checkData("S7-C2 response data absent", "1", s8.resp === "" ? "1" : "0");
+
+ // 步骤 9:Seq#04] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_155, RQ57_160, RQ57_162)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla9 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.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"});
+ bind.checkData("S8-C2 profileInfoListOk count 2", "1", (r2p9.branch_tag === "A0" && r2p9.elements.length === 2) ? "1" : "0");
+
+ // 步骤 10:Seq#05] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ29_002, RQ29_022, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_160, RQ57_162)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla10 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: ISD_P_AID3 stays in execution domain
+ var s10 = bind.sendApdu(sdCla10, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID3", "BF33124F10", "", profileAidSession), null, "6985");
+ bind.checkData("S9-C1 SW", "6985", s10.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID3", s10.cmd, profileAidSession);
+ bind.checkData("S9-C2 response data absent", "1", s10.resp === "" ? "1" : "0");
+
+ // 步骤 11:Seq#05] MTD_STORE_DATA(tc_step;REQ: RQ57_154, RQ57_156, RQ57_160, RQ57_162)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla11 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
+ var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S10-C1 SW", "9000", s11.sw);
+ // Inline ASCII->hex helper (UTF8String expected values; values enter as
+ // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+ function __asciiHex(text) {
+ var out = "";
+ for (var i = 0; i < text.length; i++) {
+ var c = text.charCodeAt(i).toString(16).toUpperCase();
+ out += (c.length === 1 ? "0" + c : c);
+ }
+ return out;
+ }
+ var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ bind.checkData("S10-C2 profileInfoListOk count 3", "1", (r2p11.branch_tag === "A0" && r2p11.elements.length === 3) ? "1" : "0");
+ var r2e11 = null;
+ for (var r2i11 = 0; r2i11 < r2p11.elements.length; r2i11++) {
+ if (r2p11.elements[r2i11].fields["5A"] === "989209014365870921F5") { r2e11 = r2p11.elements[r2i11].fields; break; }
+ }
+ bind.checkData("S10-C3 iccid", "989209014365870921F5", r2e11 === null ? "absent" : (r2e11["5A"] === undefined ? "absent" : r2e11["5A"]));
+ bind.checkData("S10-C3 isdpAid present", "1", (r2e11 !== null && r2e11["4F"] !== undefined) ? "1" : "0");
+ bind.checkData("S10-C3 profileState", "00", r2e11 === null ? "absent" : (r2e11["9F70"] === undefined ? "absent" : r2e11["9F70"]));
+ var r2a11_90 = __asciiHex("Nickname 3");
+ bind.checkData("S10-C3 profileNickname Nickname 3", r2a11_90, r2e11 === null ? "absent" : (r2e11["90"] === undefined ? "absent" : r2e11["90"]));
+ bind.checkData("S10-C3 profileClass", "02", r2e11 === null ? "absent" : (r2e11["95"] === undefined ? "absent" : r2e11["95"]));
+
+ // 步骤 12:Seq#06] MTD_STORE_DATA_Case3(tc_step;REQ: RQ24_016, RQ29_002, RQ29_022, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_160, RQ57_162)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla12 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.chan).toString(16).toUpperCase() : null;
+ var s12 = bind.sendApdu(sdCla12, "E2", "90", "00", "BF330C5A0A989209014365870921F5", null, "6985");
+ bind.checkData("S11-C1 SW", "6985", s12.sw);
+ bind.checkData("S11-C2 response data absent", "1", s12.resp === "" ? "1" : "0");
+
+ // 步骤 13:Seq#06] MTD_STORE_DATA(tc_step;REQ: RQ24_016, RQ32_049, RQ32_050, RQ57_154, RQ57_156, RQ57_160, RQ57_162)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla13 = s18.chan !== null ? (s18.chan <= 3 ? 128 + s18.chan : 188 + s18.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"});
+ bind.checkData("S12-C2 profileInfoListOk count 3", "1", (r2p13.branch_tag === "A0" && r2p13.elements.length === 3) ? "1" : "0");
}