源码对照:4.2.16.2.1
ES10b 从通知列表移除通知 / TC_eUICC_ES10b.RemoveNotificationFromList
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
670 行 / 38917 字符 / gb18030
-cas 入口
TC_eUICC_ES10b_RemoveNotificationFromList/Import/TC_eUICC_ES10b_RemoveNotificationFromList.js
1246 行 / 109224 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js670 行 / 38917 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10b_RemoveNotificationFromList_01_Nominal_Install_Notification + TC_eUICC_ES10b_RemoveNotificationFromList_02_Nominal_Enable_Notification + TC_eUICC_ES10b_RemoveNotificationFromList_03_Nominal_Disable_Notification + TC_eUICC_ES10b_RemoveNotificationFromList_04_Nominal_Delete_Notification + TC_eUICC_ES10b_RemoveNotificationFromList_05_Nominal_Two_Install_PIR_Notifications_with_different_Notification_Addresses + TC_eUICC_ES10b_RemoveNotificationFromList_06_Nominal_Install_PIR_and_Enable_Notifications + TC_eUICC_ES10b_RemoveNotificationFromList_07_Nominal_Disable_and_Delete_Notifications + TC_eUICC_ES10b_RemoveNotificationFromList_08_Nominal_Install_OtherSignedNotification_and_Enable_Notifications + TC_eUICC_ES10b_RemoveNotificationFromList_09_Nominal_Enable_and_Install_PIR_notifications + TC_eUICC_ES10b_RemoveNotificationFromList_10_Nominal_Removing_Sequence_Numbers_that_are_not_present + Install_PROFILE_OPERATIONAL1_Do_not_remove_both_the_notifications (extracted verbatim)
2
3function TC_eUICC_ES10b_RemoveNotificationFromList_01_Nominal_Install_Notification()
4{
5 Remove_All_the_Notification();
6 Install_PROFILE_OPERATIONAL1_Do_not_remove_both_the_notifications();
7
8 tracenamestr = "01 Nominal: 删除安装通知";
9 curDis.TraceStart(sno++,tracenamestr);
10
11 curLogicChannel = 1;
12
13 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
14 TS_SELECT("Select ISD",ISD_R_AID,"9000");
15
16 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行RetrieveNotificationsList;");
17 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
18
19 Profile_load_procedure.ES10b_ListNotification("04F0");
20
21 try
22 {
23 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
24 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
25 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
26
27 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
28 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
29 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
30 }catch(e){
31 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
32 }
33
34 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
35 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
36 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
37 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
38 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
39
40 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
41 Profile_load_procedure.ES10b_ListNotification("04F0");
42
43 try
44 {
45 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
46 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
47 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
48 }catch(e){
49 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
50 }
51
52 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
53 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
54 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
55 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
56 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
57
58 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
59 Profile_load_procedure.ES10b_ListNotification("04F0");
60 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
61
62 Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
63 RecoverCard();
64}
65
66function TC_eUICC_ES10b_RemoveNotificationFromList_02_Nominal_Enable_Notification()
67{
68 Remove_All_the_Notification();
69 Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
70 Enable_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
71
72 tracenamestr = "02 Nominal: 删除激活profile通知";
73 curDis.TraceStart(sno++,tracenamestr);
74
75 curLogicChannel = 1;
76
77 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
78 TS_SELECT("Select ISD",ISD_R_AID,"9000");
79
80 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行RetrieveNotificationsList;");
81 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
82
83 Profile_load_procedure.ES10b_ListNotification("04F0");
84
85 try
86 {
87 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
88 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
89 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
90 }catch(e){
91 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
92 }
93
94 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
95 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
96 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
97 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
98 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
99
100 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
101 Profile_load_procedure.ES10b_ListNotification("04F0");
102 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
103
104 Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
105 Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
106
107 RecoverCard();
108}
109
110function TC_eUICC_ES10b_RemoveNotificationFromList_03_Nominal_Disable_Notification()
111{
112 Remove_All_the_Notification();
113 Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
114 Enable_PROFILE_OPERATIONAL1_Remove_the_Notification();
115 Disable_PROFILE_OPERATIONAL1_Do_not_Remove_the_Notification();
116
117 tracenamestr = "03 Nominal: 删除去激活profile通知";
118 curDis.TraceStart(sno++,tracenamestr);
119
120 curLogicChannel = 1;
121
122 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
123 TS_SELECT("Select ISD",ISD_R_AID,"9000");
124
125 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行RetrieveNotificationsList;");
126 curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
127 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
128
129 Profile_load_procedure.ES10b_ListNotification("04F0");
130
131 try
132 {
133 curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
134 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
135 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
136 }catch(e){
137 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
138 }
139
140 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
141 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
142 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
143 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
144 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
145
146 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
147 Profile_load_procedure.ES10b_ListNotification("04F0");
148 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
149
150 Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
151 RecoverCard();
152}
153
154function TC_eUICC_ES10b_RemoveNotificationFromList_04_Nominal_Delete_Notification()
155{
156 Remove_All_the_Notification();
157 Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
158 Enable_PROFILE_OPERATIONAL1_Remove_the_Notification();
159 Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
160 Delete_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
161
162 tracenamestr = "04 Nominal: 删除删除profile通知";
163 curDis.TraceStart(sno++,tracenamestr);
164
165 curLogicChannel = 1;
166
167 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
168 TS_SELECT("Select ISD",ISD_R_AID,"9000");
169
170 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行RetrieveNotificationsList;");
171 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
172
173 Profile_load_procedure.ES10b_ListNotification("04F0");
174
175 try
176 {
177 curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
178 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
179 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
180 }catch(e){
181 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
182 }
183
184 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
185 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
186 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
187 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
188 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
189
190 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
191 Profile_load_procedure.ES10b_ListNotification("04F0");
192 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
193 RecoverCard();
194}
195
196function TC_eUICC_ES10b_RemoveNotificationFromList_05_Nominal_Two_Install_PIR_Notifications_with_different_Notification_Addresses()
197{
198 if(!Card_Have_ECC_Cert)
199 return;
200
201 //测试入口条件
202 if(!check_Applicability_of_tests_RSP_SGP23_test("C025"))
203 return;
204
205 Remove_All_the_Notification();
206 Install_PROFILE_OPERATIONAL1_with_METADATA_OP_PROF1_NO_INSTALL_Do_not_remove_the_Notification();
207 Install_PROFILE_OPERATIONAL2_with_METADATA_OP_PROF2_NO_INSTALL_Do_not_remove_the_Notification();
208
209 tracenamestr = "05 Nominal: 删除两个具有不同通知地址的安装通知(PIR)";
210 curDis.TraceStart(sno++,tracenamestr);
211
212 curLogicChannel = 1;
213
214 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
215 TS_SELECT("Select ISD",ISD_R_AID,"9000");
216
217 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
218 curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
219 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
220
221 Profile_load_procedure.ES10b_ListNotification("04F0");
222
223 try
224 {
225 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
226 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
227 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
228
229 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
230 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
231 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
232 }catch(e){
233 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
234 }
235
236 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
237 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
238 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
239 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
240 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
241
242 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
243 Profile_load_procedure.ES10b_ListNotification("04F0");
244
245 try
246 {
247 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
248 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
249 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
250 }catch(e){
251 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
252 }
253
254 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
255 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
256 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
257 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
258 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
259
260 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
261 Profile_load_procedure.ES10b_ListNotification("04F0");
262 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
263
264
265 Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
266 Delete_PROFILE_OPERATIONAL2_Remove_the_Notification();
267 RecoverCard();
268}
269
270function TC_eUICC_ES10b_RemoveNotificationFromList_06_Nominal_Install_PIR_and_Enable_Notifications()
271{
272 Remove_All_the_Notification();
273 Install_PROFILE_OPERATIONAL1_with_METADATA_OP_PROF1_NO_INSTALL_Do_not_remove_the_Notification();
274 Enable_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
275
276 tracenamestr = "06 Nominal: 删除安装(PIR)和激活profile通知";
277 curDis.TraceStart(sno++,tracenamestr);
278
279 curLogicChannel = 1;
280
281 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
282 TS_SELECT("Select ISD",ISD_R_AID,"9000");
283
284 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
285 curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
286 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
287
288 Profile_load_procedure.ES10b_ListNotification("04F0");
289
290 try
291 {
292 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
293 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
294 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
295
296 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
297 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
298 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
299 }catch(e){
300 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
301 }
302
303
304 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
305 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
306 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
307 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
308 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
309
310 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
311 Profile_load_procedure.ES10b_ListNotification("04F0");
312
313 try
314 {
315 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
316 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
317 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
318 }catch(e){
319 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
320 }
321
322 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
323 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
324 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
325 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
326 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
327
328 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
329 Profile_load_procedure.ES10b_ListNotification("04F0");
330 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
331
332
333 Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
334 Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
335
336 RecoverCard();
337
338}
339
340function TC_eUICC_ES10b_RemoveNotificationFromList_07_Nominal_Disable_and_Delete_Notifications()
341{
342 Remove_All_the_Notification();
343 Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
344 Enable_PROFILE_OPERATIONAL1_Remove_the_Notification();
345 Disable_PROFILE_OPERATIONAL1_Do_not_Remove_the_Notification();
346 Delete_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
347
348 tracenamestr = "07 Nominal: 删除去激活和删除profile通知";
349 curDis.TraceStart(sno++,tracenamestr);
350
351 curLogicChannel = 1;
352
353 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
354 TS_SELECT("Select ISD",ISD_R_AID,"9000");
355
356 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
357 curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
358 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
359
360 Profile_load_procedure.ES10b_ListNotification("04F0");
361
362 try
363 {
364 curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
365 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
366 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
367
368 curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
369 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
370 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
371 }catch(e){
372 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
373 }
374
375
376 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
377 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
378 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
379 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
380 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
381
382 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
383 Profile_load_procedure.ES10b_ListNotification("04F0");
384
385 try
386 {
387 curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
388 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
389 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
390 }catch(e){
391 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
392 }
393
394 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
395 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
396 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
397 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
398 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
399
400 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
401 Profile_load_procedure.ES10b_ListNotification("04F0");
402 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
403
404 RecoverCard();
405}
406
407function TC_eUICC_ES10b_RemoveNotificationFromList_08_Nominal_Install_OtherSignedNotification_and_Enable_Notifications()
408{
409 Remove_All_the_Notification();
410 Install_PROFILE_OPERATIONAL1_Remove_the_PIR_notification_but_do_not_remove_the_OtherSignedNotification();
411 Enable_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
412
413 tracenamestr = "08 Nominal: 删除安装(OtherSignedNotification)和激活profile通知";
414 curDis.TraceStart(sno++,tracenamestr);
415
416 curLogicChannel = 1;
417
418 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
419 TS_SELECT("Select ISD",ISD_R_AID,"9000");
420
421 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
422 curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
423 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
424
425 Profile_load_procedure.ES10b_ListNotification("04F0");
426 Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
427
428 try
429 {
430 var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
431 if(Max_seqNumber_Of_Notification == seqNumber)
432 {
433 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
434 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
435 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
436 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
437
438 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
439 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
440 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
441 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
442 }
443 else
444 {
445 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
446 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
447 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
448 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
449
450 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
451 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
452 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
453 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
454 }
455 }catch(e){
456 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
457 }
458
459
460 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
461 var parameter = EnCodeInteger_Ber(Max_seqNumber_Of_Notification-1);
462 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
463 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
464 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
465
466 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
467 Profile_load_procedure.ES10b_ListNotification("04F0");
468
469 try
470 {
471 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
472 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
473 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
474 }catch(e){
475 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
476 }
477
478 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
479 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
480 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
481 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
482 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
483
484 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
485 Profile_load_procedure.ES10b_ListNotification("04F0");
486 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
487
488 Disable_PROFILE_OPERATIONAL1_Do_not_Remove_the_Notification();
489 Delete_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
490 RecoverCard();
491}
492
493function TC_eUICC_ES10b_RemoveNotificationFromList_09_Nominal_Enable_and_Install_PIR_notifications()
494{
495 if(!Card_Have_ECC_Cert)
496 return;
497
498 Remove_All_the_Notification();
499 Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
500 Enable_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
501 Install_PROFILE_OPERATIONAL2_with_METADATA_OP_PROF2_NO_INSTALL_Do_not_remove_the_Notification();
502
503
504 tracenamestr = "09 Nominal: 删除激活profile和安装(PIR)通知";
505 curDis.TraceStart(sno++,tracenamestr);
506
507 curLogicChannel = 1;
508
509 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
510 TS_SELECT("Select ISD",ISD_R_AID,"9000");
511
512 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
513 curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
514 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
515
516 Profile_load_procedure.ES10b_ListNotification("04F0");
517
518 try
519 {
520 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
521 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
522 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
523
524 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
525 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
526 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
527 }catch(e){
528 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
529 }
530
531
532 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
533 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
534 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
535 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
536 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
537
538 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
539 Profile_load_procedure.ES10b_ListNotification("04F0");
540
541 try
542 {
543 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
544 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
545 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
546 }catch(e){
547 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
548 }
549
550 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
551 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
552 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
553 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
554 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
555
556 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
557 Profile_load_procedure.ES10b_ListNotification("04F0");
558 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
559
560 Disable_PROFILE_OPERATIONAL1_Do_not_Remove_the_Notification();
561 Delete_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
562 Delete_PROFILE_OPERATIONAL2_Remove_the_Notification();
563 RecoverCard();
564}
565
566function TC_eUICC_ES10b_RemoveNotificationFromList_10_Nominal_Removing_Sequence_Numbers_that_are_not_present ()
567{
568 Remove_All_the_Notification();
569 Install_PROFILE_OPERATIONAL1_with_METADATA_OP_PROF1_NO_INSTALL_Do_not_remove_the_Notification();
570
571 tracenamestr = "10 Nominal: 删除通知,指定的序列号不存在";
572 curDis.TraceStart(sno++,tracenamestr);
573
574 curLogicChannel = 1;
575
576 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
577 TS_SELECT("Select ISD",ISD_R_AID,"9000");
578
579 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
580 curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
581 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
582
583 Profile_load_procedure.ES10b_ListNotification("04F0");
584
585 try
586 {
587 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
588 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
589 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
590 }catch(e){
591 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
592 }
593
594 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
595 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
596 parameter = EnCodeInteger_Ber(parseInt(parameter,16)+1);
597 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
598 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
599 curStrHandle.CheckData("01", deleteNotificationStatus, "deleteNotificationStatus");
600
601 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
602 Profile_load_procedure.ES10b_ListNotification("04F0");
603
604 try
605 {
606 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
607 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
608 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
609 }catch(e){
610 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
611 }
612
613
614 Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
615 RecoverCard();
616}
617
618function Install_PROFILE_OPERATIONAL1_Do_not_remove_both_the_notifications()
619{
620 Remove_All_the_Notification();
621
622 curLogicChannel = 0;
623
624 tracenamestr = "Install PROFILE_OPERATIONAL1. Do not remove both the notifications.";
625 curDis.TraceStart(sno++,tracenamestr);
626
627 curDis.TestStepStart("eUICC卡片初始化;");
628 Ini_powerOn_eUICC_LPAe_not_activate();
629
630 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
631 TS_MANAGE_CHANNEL_OPEN();
632
633 curLogicChannel = 1;
634
635 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
636 TS_SELECT("Select ISD",ISD_R_AID,"9000");
637
638 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
639 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
640 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
641 Profile_load_procedure.ES10b_GetEUICCInfo1();
642
643 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
644 Profile_load_procedure.ES10b_GetEUICCChallenge();
645
646
647 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
648 Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
649 Profile_load_procedure.ES10b_AuthenticateServer();
650
651 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
652 Profile_load_procedure.ES10b_PrepareDownload();
653
654 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
655 Profile_load_procedure.ES10b_GetEID();
656
657 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
658 Profile_load_procedure.serviceProviderName = SP_NAME1;
659 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
660 Profile_load_procedure.iconType = "01";
661 Profile_load_procedure.icon = ICON_OP_PROF1;
662 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
663 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
664 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
665 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
666 Profile_load_procedure.mccMnc = MCC_MNC1;
667
668 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
669}
670
-cas 盲生成TC_eUICC_ES10b_RemoveNotificationFromList/Import/TC_eUICC_ES10b_RemoveNotificationFromList.js1246 行 / 109224 字符 / gb18030入口函数 @L60
1// Author: 卡思Cas智能体
2// Date: 20261004-141736
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10b.RemoveNotificationFromList,Test Sequence #01-#10 Nominal (all 10 sequences),适用性 M。
4// Test points: ICH-SEQ01-IC1-K1-C1 ATR_present;ICH-SEQ01-IC1-K2-C2 FCP_Template
5// ICH-SEQ01-IC1-K2-C4 SW;ICH-SEQ01-IC1-K3-C4 SW;ICH-SEQ01-IC1-K4-C4 final SW
6// ICH-SEQ01-IC2-K1-C4 SW;ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted;ICH-SEQ01-IC2-K2-C4 SW
7// S1-C1 SW;S1-C2 响应结构匹配 #R_LIST_NOTIF_IN1_IN1_PIR:ListNotificationResponse no branch/count
8// S2-C1 SW;S2-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S3-C1 SW
9// S3-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count;S4-C1 SW
10// S4-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S5-C1 SW
11// S5-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S6-C1 SW
12// S6-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count;S7-C1 SW
13// S7-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S8-C1 SW
14// S8-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S9-C1 SW
15// S9-C2 响应结构匹配 #R_LIST_NOTIF_DI1:ListNotificationResponse notificati branch/count;S10-C1 SW
16// S10-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S11-C1 SW
17// S11-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S12-C1 SW
18// S12-C2 响应结构匹配 #R_LIST_NOTIF_DE1:ListNotificationResponse notificati branch/count;S13-C1 SW
19// S13-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S14-C1 SW
20// S14-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S15-C1 SW
21// S15-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:ListNotificationRespons branch/count;S16-C1 SW
22// S16-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S17-C1 SW
23// S17-C2 响应结构匹配 #R_LIST_NOTIF_IN2_PIR:ListNotificationResponse notifi branch/count;S18-C1 SW
24// S18-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S19-C1 SW
25// S19-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S20-C1 SW
26// S20-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR_EN1:ListNotificationResponse no branch/count;S21-C1 SW
27// S21-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S22-C1 SW
28// S22-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count;S23-C1 SW
29// S23-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S24-C1 SW
30// S24-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S25-C1 SW
31// S25-C2 响应结构匹配 #R_LIST_NOTIF_DI1_DE1:ListNotificationResponse notifi branch/count;S26-C1 SW
32// S26-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S27-C1 SW
33// S27-C2 响应结构匹配 #R_LIST_NOTIF_DE1:ListNotificationResponse notificati branch/count;S28-C1 SW
34// S28-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S29-C1 SW
35// S29-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S30-C1 SW
36// S30-C2 响应结构匹配 #R_LIST_NOTIF_IN1_EN1:ListNotificationResponse notifi branch/count;S31-C1 SW
37// S31-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S32-C1 SW
38// S32-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count;S33-C1 SW
39// S33-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S34-C1 SW
40// S34-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S35-C1 SW
41// S35-C2 响应结构匹配 #R_LIST_NOTIF_EN1_IN2_PIR:ListNotificationResponse no branch/count;S36-C1 SW
42// S36-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S37-C1 SW
43// S37-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count;S38-C1 SW
44// S38-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S39-C1 SW
45// S39-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S40-C1 SW
46// S40-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count;S41-C1 SW
47// S41-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus;S42-C1 SW
48// S42-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count;S43-C1 SW
49// S43-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus;S44-C1 SW
50// S44-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count;S45-C1 SW
51// S45-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S46-C1 SW
52// S46-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S47-C1 SW
53// S47-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus;S48-C1 SW
54// S48-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S49-C1 SW
55// S49-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus;S50-C1 SW
56// S50-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count
57// 本函数由 CaseIR 4.2.16.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA2,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
58// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
59// 适用性 M:编译期门,运行时由 harness 环境前置承担。
60function TC_eUICC_ES10b_RemoveNotificationFromList_01_10_Nominal_all_10_sequences() {
61 var bind = curBind;
62 var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10b_RemoveNotificationFromList_01_10_Nominal_all_10_sequences");
63
64 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
65 var s51 = bind.resetAndAtr();
66 bind.checkData("ICH-SEQ01-IC1-K1-C1 ATR_present", "1", s51.atr_hex !== "" ? "1" : "0");
67
68 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
69 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
70 var s52 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
71 bind.checkData("ICH-SEQ01-IC1-K2-C2 FCP_Template", "1", s52.resp.length > 0 ? "1" : "0");
72 bind.checkData("ICH-SEQ01-IC1-K2-C4 SW", "9000", s52.sw);
73
74 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
75 var s53 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
76 bind.checkData("ICH-SEQ01-IC1-K3-C4 SW", "9000", s53.sw);
77
78 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
79 var steady54 = bind.runToSteadyState(function () {
80 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
81 });
82 bind.checkData("ICH-SEQ01-IC1-K4-C4 final SW", "9000", steady54.final.sw);
83
84 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
85 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
86 var s55 = bind.manageChannelOpen("9000");
87 bind.checkData("ICH-SEQ01-IC2-K1-C4 SW", "9000", s55.sw);
88 bind.checkData("ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s55.chan !== null ? "1" : "0");
89
90 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
91 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
92 var s56 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
93 // 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.
94 bind.checkData("ICH-SEQ01-IC2-K2-C4 SW", "9000", s56.sw);
95
96 // 步骤 1:SEQ01-IC4] MTD_STORE_DATA(tc_step)
97 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
98 var sdCla1 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
99 var s1 = bind.sendApdu(sdCla1, "E2", "91", "00", "BF2804810204F0", "00", "9000");
100 bind.checkData("S1-C1 SW", "9000", s1.sw);
101 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
102 var lw1T = BindEs10xSingleRequest.parseBerTlv(s1.resp);
103 var lw1Ok0 = lw1T.length === 1 && lw1T[0].tag === "BF28";
104 var lw1_br = lw1Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw1T[0].value) : [];
105 var lw1_brtag = lw1_br.length === 1 ? lw1_br[0].tag : "";
106 var lw1_els = lw1_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw1_br[0].value) : [];
107 bind.checkData("S1-C2 响应结构匹配 #R_LIST_NOTIF_IN1_IN1_PIR:ListNotificationResponse no branch/count", "1", (lw1_brtag === "A0" && lw1_els.length === 2) ? "1" : "0");
108
109 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1 ← 步 1 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
110 var nd2_NOTIF_SEQ_NO_IN1 = {ok: false, seq: ""};
111 var nd2_NOTIF_SEQ_NO_IN1T = BindEs10xSingleRequest.parseBerTlv(s1.resp);
112 if (nd2_NOTIF_SEQ_NO_IN1T.length === 1 && nd2_NOTIF_SEQ_NO_IN1T[0].tag === "BF28") {
113 var nd2_NOTIF_SEQ_NO_IN1X1 = BindEs10xSingleRequest.parseBerTlv(nd2_NOTIF_SEQ_NO_IN1T[0].value);
114 if (nd2_NOTIF_SEQ_NO_IN1X1.length === 1 && nd2_NOTIF_SEQ_NO_IN1X1[0].tag === "A0") {
115 var nd2_NOTIF_SEQ_NO_IN1X2 = BindEs10xSingleRequest.parseBerTlv(nd2_NOTIF_SEQ_NO_IN1X1[0].value);
116 var nd2_NOTIF_SEQ_NO_IN1XHIT = 0;
117 for (var nd2_NOTIF_SEQ_NO_IN1XI = 0; nd2_NOTIF_SEQ_NO_IN1XI < nd2_NOTIF_SEQ_NO_IN1X2.length; nd2_NOTIF_SEQ_NO_IN1XI++) {
118 if (nd2_NOTIF_SEQ_NO_IN1X2[nd2_NOTIF_SEQ_NO_IN1XI].tag !== "BF2F") { continue; }
119 var nd2_NOTIF_SEQ_NO_IN1XM = BindEs10xSingleRequest.parseBerTlv(nd2_NOTIF_SEQ_NO_IN1X2[nd2_NOTIF_SEQ_NO_IN1XI].value);
120 for (var nd2_NOTIF_SEQ_NO_IN1XJ = 0; nd2_NOTIF_SEQ_NO_IN1XJ < nd2_NOTIF_SEQ_NO_IN1XM.length; nd2_NOTIF_SEQ_NO_IN1XJ++) {
121 if (nd2_NOTIF_SEQ_NO_IN1XM[nd2_NOTIF_SEQ_NO_IN1XJ].tag === "81" && nd2_NOTIF_SEQ_NO_IN1XM[nd2_NOTIF_SEQ_NO_IN1XJ].value === "80") {
122 nd2_NOTIF_SEQ_NO_IN1XHIT += 1;
123 if (nd2_NOTIF_SEQ_NO_IN1XHIT === 1) {
124 for (var nd2_NOTIF_SEQ_NO_IN1XK = 0; nd2_NOTIF_SEQ_NO_IN1XK < nd2_NOTIF_SEQ_NO_IN1XM.length; nd2_NOTIF_SEQ_NO_IN1XK++) {
125 if (nd2_NOTIF_SEQ_NO_IN1XM[nd2_NOTIF_SEQ_NO_IN1XK].tag === "80") { nd2_NOTIF_SEQ_NO_IN1.seq = nd2_NOTIF_SEQ_NO_IN1XM[nd2_NOTIF_SEQ_NO_IN1XK].value; nd2_NOTIF_SEQ_NO_IN1.ok = true; }
126 }
127 }
128 }
129 }
130 }
131 }
132 }
133 var nd2_NOTIF_SEQ_NO_IN1Req = nd2_NOTIF_SEQ_NO_IN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd2_NOTIF_SEQ_NO_IN1.seq)) : "";
134 // 步骤 2:SEQ01-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
135 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
136 var sdCla2 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
137 // runtime-bound payload: NOTIF_SEQ_NO_IN1 stays in execution domain
138 var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", nd2_NOTIF_SEQ_NO_IN1Req, "00", "9000");
139 bind.checkData("S2-C1 SW", "9000", s2.sw);
140 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1", s2.cmd, profileAidSession);
141 var ns2W = BindEs10xSingleRequest.parseBerTlv(s2.resp);
142 var ns2Ok0 = ns2W.length === 1 && ns2W[0].tag === "BF30";
143 var ns2In = ns2Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns2W[0].value) : [];
144 var ns2Code = (ns2In.length === 1 && ns2In[0].tag === "80") ? ns2In[0].value : "absent";
145 bind.checkData("S2-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns2Code);
146
147 // 步骤 3:SEQ01-2] MTD_STORE_DATA(tc_step)
148 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
149 var sdCla3 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
150 var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2804810204F0", "00", "9000");
151 bind.checkData("S3-C1 SW", "9000", s3.sw);
152 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
153 var lw3T = BindEs10xSingleRequest.parseBerTlv(s3.resp);
154 var lw3Ok0 = lw3T.length === 1 && lw3T[0].tag === "BF28";
155 var lw3_br = lw3Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw3T[0].value) : [];
156 var lw3_brtag = lw3_br.length === 1 ? lw3_br[0].tag : "";
157 var lw3_els = lw3_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw3_br[0].value) : [];
158 bind.checkData("S3-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count", "1", (lw3_brtag === "A0" && lw3_els.length === 1) ? "1" : "0");
159
160 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 1 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
161 var nd4_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
162 var nd4_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s1.resp);
163 if (nd4_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd4_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
164 var nd4_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd4_NOTIF_SEQ_NO_IN1_PIRT[0].value);
165 if (nd4_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd4_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
166 var nd4_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd4_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
167 var nd4_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
168 for (var nd4_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd4_NOTIF_SEQ_NO_IN1_PIRXI < nd4_NOTIF_SEQ_NO_IN1_PIRX2.length; nd4_NOTIF_SEQ_NO_IN1_PIRXI++) {
169 if (nd4_NOTIF_SEQ_NO_IN1_PIRX2[nd4_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
170 var nd4_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd4_NOTIF_SEQ_NO_IN1_PIRX2[nd4_NOTIF_SEQ_NO_IN1_PIRXI].value);
171 for (var nd4_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd4_NOTIF_SEQ_NO_IN1_PIRXJ < nd4_NOTIF_SEQ_NO_IN1_PIRXM.length; nd4_NOTIF_SEQ_NO_IN1_PIRXJ++) {
172 if (nd4_NOTIF_SEQ_NO_IN1_PIRXM[nd4_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd4_NOTIF_SEQ_NO_IN1_PIRXM[nd4_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
173 nd4_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
174 if (nd4_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
175 for (var nd4_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd4_NOTIF_SEQ_NO_IN1_PIRXK < nd4_NOTIF_SEQ_NO_IN1_PIRXM.length; nd4_NOTIF_SEQ_NO_IN1_PIRXK++) {
176 if (nd4_NOTIF_SEQ_NO_IN1_PIRXM[nd4_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd4_NOTIF_SEQ_NO_IN1_PIR.seq = nd4_NOTIF_SEQ_NO_IN1_PIRXM[nd4_NOTIF_SEQ_NO_IN1_PIRXK].value; nd4_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
177 }
178 }
179 }
180 }
181 }
182 }
183 }
184 var nd4_NOTIF_SEQ_NO_IN1_PIRReq = nd4_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd4_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
185 // 步骤 4:SEQ01-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
186 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
187 var sdCla4 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
188 // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
189 var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", nd4_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
190 bind.checkData("S4-C1 SW", "9000", s4.sw);
191 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s4.cmd, profileAidSession);
192 var ns4W = BindEs10xSingleRequest.parseBerTlv(s4.resp);
193 var ns4Ok0 = ns4W.length === 1 && ns4W[0].tag === "BF30";
194 var ns4In = ns4Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns4W[0].value) : [];
195 var ns4Code = (ns4In.length === 1 && ns4In[0].tag === "80") ? ns4In[0].value : "absent";
196 bind.checkData("S4-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns4Code);
197
198 // 步骤 5:SEQ01-4] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
199 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
200 var sdCla5 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
201 var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF2804810204F0", "00", "9000");
202 bind.checkData("S5-C1 SW", "9000", s5.sw);
203 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
204 var lw5T = BindEs10xSingleRequest.parseBerTlv(s5.resp);
205 var lw5Ok0 = lw5T.length === 1 && lw5T[0].tag === "BF28";
206 var lw5_br = lw5Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw5T[0].value) : [];
207 var lw5_brtag = lw5_br.length === 1 ? lw5_br[0].tag : "";
208 var lw5_els = lw5_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw5_br[0].value) : [];
209 bind.checkData("S5-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw5_brtag === "A0" && lw5_els.length === 0) ? "1" : "0");
210
211 // 步骤 6:SEQ02-IC5] MTD_STORE_DATA(tc_step)
212 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
213 var sdCla6 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
214 var s6 = bind.sendApdu(sdCla6, "E2", "91", "00", "BF2804810204F0", "00", "9000");
215 bind.checkData("S6-C1 SW", "9000", s6.sw);
216 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
217 var lw6T = BindEs10xSingleRequest.parseBerTlv(s6.resp);
218 var lw6Ok0 = lw6T.length === 1 && lw6T[0].tag === "BF28";
219 var lw6_br = lw6Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw6T[0].value) : [];
220 var lw6_brtag = lw6_br.length === 1 ? lw6_br[0].tag : "";
221 var lw6_els = lw6_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw6_br[0].value) : [];
222 bind.checkData("S6-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count", "1", (lw6_brtag === "A0" && lw6_els.length === 1) ? "1" : "0");
223
224 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_EN1 ← 步 6 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=40 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
225 var nd7_NOTIF_SEQ_NO_EN1 = {ok: false, seq: ""};
226 var nd7_NOTIF_SEQ_NO_EN1T = BindEs10xSingleRequest.parseBerTlv(s6.resp);
227 if (nd7_NOTIF_SEQ_NO_EN1T.length === 1 && nd7_NOTIF_SEQ_NO_EN1T[0].tag === "BF28") {
228 var nd7_NOTIF_SEQ_NO_EN1X1 = BindEs10xSingleRequest.parseBerTlv(nd7_NOTIF_SEQ_NO_EN1T[0].value);
229 if (nd7_NOTIF_SEQ_NO_EN1X1.length === 1 && nd7_NOTIF_SEQ_NO_EN1X1[0].tag === "A0") {
230 var nd7_NOTIF_SEQ_NO_EN1X2 = BindEs10xSingleRequest.parseBerTlv(nd7_NOTIF_SEQ_NO_EN1X1[0].value);
231 var nd7_NOTIF_SEQ_NO_EN1XHIT = 0;
232 for (var nd7_NOTIF_SEQ_NO_EN1XI = 0; nd7_NOTIF_SEQ_NO_EN1XI < nd7_NOTIF_SEQ_NO_EN1X2.length; nd7_NOTIF_SEQ_NO_EN1XI++) {
233 if (nd7_NOTIF_SEQ_NO_EN1X2[nd7_NOTIF_SEQ_NO_EN1XI].tag !== "BF2F") { continue; }
234 var nd7_NOTIF_SEQ_NO_EN1XM = BindEs10xSingleRequest.parseBerTlv(nd7_NOTIF_SEQ_NO_EN1X2[nd7_NOTIF_SEQ_NO_EN1XI].value);
235 for (var nd7_NOTIF_SEQ_NO_EN1XJ = 0; nd7_NOTIF_SEQ_NO_EN1XJ < nd7_NOTIF_SEQ_NO_EN1XM.length; nd7_NOTIF_SEQ_NO_EN1XJ++) {
236 if (nd7_NOTIF_SEQ_NO_EN1XM[nd7_NOTIF_SEQ_NO_EN1XJ].tag === "81" && nd7_NOTIF_SEQ_NO_EN1XM[nd7_NOTIF_SEQ_NO_EN1XJ].value === "40") {
237 nd7_NOTIF_SEQ_NO_EN1XHIT += 1;
238 if (nd7_NOTIF_SEQ_NO_EN1XHIT === 1) {
239 for (var nd7_NOTIF_SEQ_NO_EN1XK = 0; nd7_NOTIF_SEQ_NO_EN1XK < nd7_NOTIF_SEQ_NO_EN1XM.length; nd7_NOTIF_SEQ_NO_EN1XK++) {
240 if (nd7_NOTIF_SEQ_NO_EN1XM[nd7_NOTIF_SEQ_NO_EN1XK].tag === "80") { nd7_NOTIF_SEQ_NO_EN1.seq = nd7_NOTIF_SEQ_NO_EN1XM[nd7_NOTIF_SEQ_NO_EN1XK].value; nd7_NOTIF_SEQ_NO_EN1.ok = true; }
241 }
242 }
243 }
244 }
245 }
246 }
247 }
248 var nd7_NOTIF_SEQ_NO_EN1Req = nd7_NOTIF_SEQ_NO_EN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd7_NOTIF_SEQ_NO_EN1.seq)) : "";
249 // 步骤 7:SEQ02-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
250 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
251 var sdCla7 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
252 // runtime-bound payload: NOTIF_SEQ_NO_EN1 stays in execution domain
253 var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", nd7_NOTIF_SEQ_NO_EN1Req, "00", "9000");
254 bind.checkData("S7-C1 SW", "9000", s7.sw);
255 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_EN1", s7.cmd, profileAidSession);
256 var ns7W = BindEs10xSingleRequest.parseBerTlv(s7.resp);
257 var ns7Ok0 = ns7W.length === 1 && ns7W[0].tag === "BF30";
258 var ns7In = ns7Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns7W[0].value) : [];
259 var ns7Code = (ns7In.length === 1 && ns7In[0].tag === "80") ? ns7In[0].value : "absent";
260 bind.checkData("S7-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns7Code);
261
262 // 步骤 8:SEQ02-2] MTD_STORE_DATA(tc_step)
263 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
264 var sdCla8 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
265 var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2804810204F0", "00", "9000");
266 bind.checkData("S8-C1 SW", "9000", s8.sw);
267 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
268 var lw8T = BindEs10xSingleRequest.parseBerTlv(s8.resp);
269 var lw8Ok0 = lw8T.length === 1 && lw8T[0].tag === "BF28";
270 var lw8_br = lw8Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw8T[0].value) : [];
271 var lw8_brtag = lw8_br.length === 1 ? lw8_br[0].tag : "";
272 var lw8_els = lw8_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw8_br[0].value) : [];
273 bind.checkData("S8-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw8_brtag === "A0" && lw8_els.length === 0) ? "1" : "0");
274
275 // 步骤 9:SEQ03-IC6] MTD_STORE_DATA(tc_step)
276 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
277 var sdCla9 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
278 var s9 = bind.sendApdu(sdCla9, "E2", "91", "00", "BF2804810204F0", "00", "9000");
279 bind.checkData("S9-C1 SW", "9000", s9.sw);
280 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
281 var lw9T = BindEs10xSingleRequest.parseBerTlv(s9.resp);
282 var lw9Ok0 = lw9T.length === 1 && lw9T[0].tag === "BF28";
283 var lw9_br = lw9Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw9T[0].value) : [];
284 var lw9_brtag = lw9_br.length === 1 ? lw9_br[0].tag : "";
285 var lw9_els = lw9_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw9_br[0].value) : [];
286 bind.checkData("S9-C2 响应结构匹配 #R_LIST_NOTIF_DI1:ListNotificationResponse notificati branch/count", "1", (lw9_brtag === "A0" && lw9_els.length === 1) ? "1" : "0");
287
288 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_DI1 ← 步 9 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=20 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
289 var nd10_NOTIF_SEQ_NO_DI1 = {ok: false, seq: ""};
290 var nd10_NOTIF_SEQ_NO_DI1T = BindEs10xSingleRequest.parseBerTlv(s9.resp);
291 if (nd10_NOTIF_SEQ_NO_DI1T.length === 1 && nd10_NOTIF_SEQ_NO_DI1T[0].tag === "BF28") {
292 var nd10_NOTIF_SEQ_NO_DI1X1 = BindEs10xSingleRequest.parseBerTlv(nd10_NOTIF_SEQ_NO_DI1T[0].value);
293 if (nd10_NOTIF_SEQ_NO_DI1X1.length === 1 && nd10_NOTIF_SEQ_NO_DI1X1[0].tag === "A0") {
294 var nd10_NOTIF_SEQ_NO_DI1X2 = BindEs10xSingleRequest.parseBerTlv(nd10_NOTIF_SEQ_NO_DI1X1[0].value);
295 var nd10_NOTIF_SEQ_NO_DI1XHIT = 0;
296 for (var nd10_NOTIF_SEQ_NO_DI1XI = 0; nd10_NOTIF_SEQ_NO_DI1XI < nd10_NOTIF_SEQ_NO_DI1X2.length; nd10_NOTIF_SEQ_NO_DI1XI++) {
297 if (nd10_NOTIF_SEQ_NO_DI1X2[nd10_NOTIF_SEQ_NO_DI1XI].tag !== "BF2F") { continue; }
298 var nd10_NOTIF_SEQ_NO_DI1XM = BindEs10xSingleRequest.parseBerTlv(nd10_NOTIF_SEQ_NO_DI1X2[nd10_NOTIF_SEQ_NO_DI1XI].value);
299 for (var nd10_NOTIF_SEQ_NO_DI1XJ = 0; nd10_NOTIF_SEQ_NO_DI1XJ < nd10_NOTIF_SEQ_NO_DI1XM.length; nd10_NOTIF_SEQ_NO_DI1XJ++) {
300 if (nd10_NOTIF_SEQ_NO_DI1XM[nd10_NOTIF_SEQ_NO_DI1XJ].tag === "81" && nd10_NOTIF_SEQ_NO_DI1XM[nd10_NOTIF_SEQ_NO_DI1XJ].value === "20") {
301 nd10_NOTIF_SEQ_NO_DI1XHIT += 1;
302 if (nd10_NOTIF_SEQ_NO_DI1XHIT === 1) {
303 for (var nd10_NOTIF_SEQ_NO_DI1XK = 0; nd10_NOTIF_SEQ_NO_DI1XK < nd10_NOTIF_SEQ_NO_DI1XM.length; nd10_NOTIF_SEQ_NO_DI1XK++) {
304 if (nd10_NOTIF_SEQ_NO_DI1XM[nd10_NOTIF_SEQ_NO_DI1XK].tag === "80") { nd10_NOTIF_SEQ_NO_DI1.seq = nd10_NOTIF_SEQ_NO_DI1XM[nd10_NOTIF_SEQ_NO_DI1XK].value; nd10_NOTIF_SEQ_NO_DI1.ok = true; }
305 }
306 }
307 }
308 }
309 }
310 }
311 }
312 var nd10_NOTIF_SEQ_NO_DI1Req = nd10_NOTIF_SEQ_NO_DI1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd10_NOTIF_SEQ_NO_DI1.seq)) : "";
313 // 步骤 10:SEQ03-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
314 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
315 var sdCla10 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
316 // runtime-bound payload: NOTIF_SEQ_NO_DI1 stays in execution domain
317 var s10 = bind.sendApdu(sdCla10, "E2", "91", "00", nd10_NOTIF_SEQ_NO_DI1Req, "00", "9000");
318 bind.checkData("S10-C1 SW", "9000", s10.sw);
319 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_DI1", s10.cmd, profileAidSession);
320 var ns10W = BindEs10xSingleRequest.parseBerTlv(s10.resp);
321 var ns10Ok0 = ns10W.length === 1 && ns10W[0].tag === "BF30";
322 var ns10In = ns10Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns10W[0].value) : [];
323 var ns10Code = (ns10In.length === 1 && ns10In[0].tag === "80") ? ns10In[0].value : "absent";
324 bind.checkData("S10-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns10Code);
325
326 // 步骤 11:SEQ03-2] MTD_STORE_DATA(tc_step)
327 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
328 var sdCla11 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
329 var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2804810204F0", "00", "9000");
330 bind.checkData("S11-C1 SW", "9000", s11.sw);
331 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
332 var lw11T = BindEs10xSingleRequest.parseBerTlv(s11.resp);
333 var lw11Ok0 = lw11T.length === 1 && lw11T[0].tag === "BF28";
334 var lw11_br = lw11Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw11T[0].value) : [];
335 var lw11_brtag = lw11_br.length === 1 ? lw11_br[0].tag : "";
336 var lw11_els = lw11_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw11_br[0].value) : [];
337 bind.checkData("S11-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw11_brtag === "A0" && lw11_els.length === 0) ? "1" : "0");
338
339 // 步骤 12:SEQ04-IC7] MTD_STORE_DATA(tc_step)
340 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
341 var sdCla12 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
342 var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", "BF2804810204F0", "00", "9000");
343 bind.checkData("S12-C1 SW", "9000", s12.sw);
344 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
345 var lw12T = BindEs10xSingleRequest.parseBerTlv(s12.resp);
346 var lw12Ok0 = lw12T.length === 1 && lw12T[0].tag === "BF28";
347 var lw12_br = lw12Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw12T[0].value) : [];
348 var lw12_brtag = lw12_br.length === 1 ? lw12_br[0].tag : "";
349 var lw12_els = lw12_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw12_br[0].value) : [];
350 bind.checkData("S12-C2 响应结构匹配 #R_LIST_NOTIF_DE1:ListNotificationResponse notificati branch/count", "1", (lw12_brtag === "A0" && lw12_els.length === 1) ? "1" : "0");
351
352 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_DE1 ← 步 12 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=10 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
353 var nd13_NOTIF_SEQ_NO_DE1 = {ok: false, seq: ""};
354 var nd13_NOTIF_SEQ_NO_DE1T = BindEs10xSingleRequest.parseBerTlv(s12.resp);
355 if (nd13_NOTIF_SEQ_NO_DE1T.length === 1 && nd13_NOTIF_SEQ_NO_DE1T[0].tag === "BF28") {
356 var nd13_NOTIF_SEQ_NO_DE1X1 = BindEs10xSingleRequest.parseBerTlv(nd13_NOTIF_SEQ_NO_DE1T[0].value);
357 if (nd13_NOTIF_SEQ_NO_DE1X1.length === 1 && nd13_NOTIF_SEQ_NO_DE1X1[0].tag === "A0") {
358 var nd13_NOTIF_SEQ_NO_DE1X2 = BindEs10xSingleRequest.parseBerTlv(nd13_NOTIF_SEQ_NO_DE1X1[0].value);
359 var nd13_NOTIF_SEQ_NO_DE1XHIT = 0;
360 for (var nd13_NOTIF_SEQ_NO_DE1XI = 0; nd13_NOTIF_SEQ_NO_DE1XI < nd13_NOTIF_SEQ_NO_DE1X2.length; nd13_NOTIF_SEQ_NO_DE1XI++) {
361 if (nd13_NOTIF_SEQ_NO_DE1X2[nd13_NOTIF_SEQ_NO_DE1XI].tag !== "BF2F") { continue; }
362 var nd13_NOTIF_SEQ_NO_DE1XM = BindEs10xSingleRequest.parseBerTlv(nd13_NOTIF_SEQ_NO_DE1X2[nd13_NOTIF_SEQ_NO_DE1XI].value);
363 for (var nd13_NOTIF_SEQ_NO_DE1XJ = 0; nd13_NOTIF_SEQ_NO_DE1XJ < nd13_NOTIF_SEQ_NO_DE1XM.length; nd13_NOTIF_SEQ_NO_DE1XJ++) {
364 if (nd13_NOTIF_SEQ_NO_DE1XM[nd13_NOTIF_SEQ_NO_DE1XJ].tag === "81" && nd13_NOTIF_SEQ_NO_DE1XM[nd13_NOTIF_SEQ_NO_DE1XJ].value === "10") {
365 nd13_NOTIF_SEQ_NO_DE1XHIT += 1;
366 if (nd13_NOTIF_SEQ_NO_DE1XHIT === 1) {
367 for (var nd13_NOTIF_SEQ_NO_DE1XK = 0; nd13_NOTIF_SEQ_NO_DE1XK < nd13_NOTIF_SEQ_NO_DE1XM.length; nd13_NOTIF_SEQ_NO_DE1XK++) {
368 if (nd13_NOTIF_SEQ_NO_DE1XM[nd13_NOTIF_SEQ_NO_DE1XK].tag === "80") { nd13_NOTIF_SEQ_NO_DE1.seq = nd13_NOTIF_SEQ_NO_DE1XM[nd13_NOTIF_SEQ_NO_DE1XK].value; nd13_NOTIF_SEQ_NO_DE1.ok = true; }
369 }
370 }
371 }
372 }
373 }
374 }
375 }
376 var nd13_NOTIF_SEQ_NO_DE1Req = nd13_NOTIF_SEQ_NO_DE1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd13_NOTIF_SEQ_NO_DE1.seq)) : "";
377 // 步骤 13:SEQ04-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
378 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
379 var sdCla13 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
380 // runtime-bound payload: NOTIF_SEQ_NO_DE1 stays in execution domain
381 var s13 = bind.sendApdu(sdCla13, "E2", "91", "00", nd13_NOTIF_SEQ_NO_DE1Req, "00", "9000");
382 bind.checkData("S13-C1 SW", "9000", s13.sw);
383 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_DE1", s13.cmd, profileAidSession);
384 var ns13W = BindEs10xSingleRequest.parseBerTlv(s13.resp);
385 var ns13Ok0 = ns13W.length === 1 && ns13W[0].tag === "BF30";
386 var ns13In = ns13Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns13W[0].value) : [];
387 var ns13Code = (ns13In.length === 1 && ns13In[0].tag === "80") ? ns13In[0].value : "absent";
388 bind.checkData("S13-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns13Code);
389
390 // 步骤 14:SEQ04-2] MTD_STORE_DATA(tc_step)
391 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
392 var sdCla14 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
393 var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", "BF2804810204F0", "00", "9000");
394 bind.checkData("S14-C1 SW", "9000", s14.sw);
395 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
396 var lw14T = BindEs10xSingleRequest.parseBerTlv(s14.resp);
397 var lw14Ok0 = lw14T.length === 1 && lw14T[0].tag === "BF28";
398 var lw14_br = lw14Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw14T[0].value) : [];
399 var lw14_brtag = lw14_br.length === 1 ? lw14_br[0].tag : "";
400 var lw14_els = lw14_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw14_br[0].value) : [];
401 bind.checkData("S14-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw14_brtag === "A0" && lw14_els.length === 0) ? "1" : "0");
402
403 // 步骤 15:SEQ05-IC5] MTD_STORE_DATA(tc_step)
404 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
405 var sdCla15 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
406 var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF2804810204F0", "00", "9000");
407 bind.checkData("S15-C1 SW", "9000", s15.sw);
408 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
409 var lw15T = BindEs10xSingleRequest.parseBerTlv(s15.resp);
410 var lw15Ok0 = lw15T.length === 1 && lw15T[0].tag === "BF28";
411 var lw15_br = lw15Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw15T[0].value) : [];
412 var lw15_brtag = lw15_br.length === 1 ? lw15_br[0].tag : "";
413 var lw15_els = lw15_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw15_br[0].value) : [];
414 bind.checkData("S15-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:ListNotificationRespons branch/count", "1", (lw15_brtag === "A0" && lw15_els.length === 2) ? "1" : "0");
415
416 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 15 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
417 var nd16_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
418 var nd16_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s15.resp);
419 if (nd16_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd16_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
420 var nd16_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd16_NOTIF_SEQ_NO_IN1_PIRT[0].value);
421 if (nd16_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd16_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
422 var nd16_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd16_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
423 var nd16_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
424 for (var nd16_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd16_NOTIF_SEQ_NO_IN1_PIRXI < nd16_NOTIF_SEQ_NO_IN1_PIRX2.length; nd16_NOTIF_SEQ_NO_IN1_PIRXI++) {
425 if (nd16_NOTIF_SEQ_NO_IN1_PIRX2[nd16_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
426 var nd16_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd16_NOTIF_SEQ_NO_IN1_PIRX2[nd16_NOTIF_SEQ_NO_IN1_PIRXI].value);
427 for (var nd16_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd16_NOTIF_SEQ_NO_IN1_PIRXJ < nd16_NOTIF_SEQ_NO_IN1_PIRXM.length; nd16_NOTIF_SEQ_NO_IN1_PIRXJ++) {
428 if (nd16_NOTIF_SEQ_NO_IN1_PIRXM[nd16_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd16_NOTIF_SEQ_NO_IN1_PIRXM[nd16_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
429 nd16_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
430 if (nd16_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
431 for (var nd16_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd16_NOTIF_SEQ_NO_IN1_PIRXK < nd16_NOTIF_SEQ_NO_IN1_PIRXM.length; nd16_NOTIF_SEQ_NO_IN1_PIRXK++) {
432 if (nd16_NOTIF_SEQ_NO_IN1_PIRXM[nd16_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd16_NOTIF_SEQ_NO_IN1_PIR.seq = nd16_NOTIF_SEQ_NO_IN1_PIRXM[nd16_NOTIF_SEQ_NO_IN1_PIRXK].value; nd16_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
433 }
434 }
435 }
436 }
437 }
438 }
439 }
440 var nd16_NOTIF_SEQ_NO_IN1_PIRReq = nd16_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd16_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
441 // 步骤 16:SEQ05-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
442 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
443 var sdCla16 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
444 // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
445 var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", nd16_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
446 bind.checkData("S16-C1 SW", "9000", s16.sw);
447 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s16.cmd, profileAidSession);
448 var ns16W = BindEs10xSingleRequest.parseBerTlv(s16.resp);
449 var ns16Ok0 = ns16W.length === 1 && ns16W[0].tag === "BF30";
450 var ns16In = ns16Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns16W[0].value) : [];
451 var ns16Code = (ns16In.length === 1 && ns16In[0].tag === "80") ? ns16In[0].value : "absent";
452 bind.checkData("S16-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns16Code);
453
454 // 步骤 17:SEQ05-2] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
455 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
456 var sdCla17 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
457 var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", "BF2804810204F0", "00", "9000");
458 bind.checkData("S17-C1 SW", "9000", s17.sw);
459 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
460 var lw17T = BindEs10xSingleRequest.parseBerTlv(s17.resp);
461 var lw17Ok0 = lw17T.length === 1 && lw17T[0].tag === "BF28";
462 var lw17_br = lw17Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw17T[0].value) : [];
463 var lw17_brtag = lw17_br.length === 1 ? lw17_br[0].tag : "";
464 var lw17_els = lw17_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw17_br[0].value) : [];
465 bind.checkData("S17-C2 响应结构匹配 #R_LIST_NOTIF_IN2_PIR:ListNotificationResponse notifi branch/count", "1", (lw17_brtag === "A0" && lw17_els.length === 1) ? "1" : "0");
466
467 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN2_PIR ← 步 15 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
468 var nd18_NOTIF_SEQ_NO_IN2_PIR = {ok: false, seq: ""};
469 var nd18_NOTIF_SEQ_NO_IN2_PIRT = BindEs10xSingleRequest.parseBerTlv(s15.resp);
470 if (nd18_NOTIF_SEQ_NO_IN2_PIRT.length === 1 && nd18_NOTIF_SEQ_NO_IN2_PIRT[0].tag === "BF28") {
471 var nd18_NOTIF_SEQ_NO_IN2_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd18_NOTIF_SEQ_NO_IN2_PIRT[0].value);
472 if (nd18_NOTIF_SEQ_NO_IN2_PIRX1.length === 1 && nd18_NOTIF_SEQ_NO_IN2_PIRX1[0].tag === "A0") {
473 var nd18_NOTIF_SEQ_NO_IN2_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd18_NOTIF_SEQ_NO_IN2_PIRX1[0].value);
474 var nd18_NOTIF_SEQ_NO_IN2_PIRXHIT = 0;
475 for (var nd18_NOTIF_SEQ_NO_IN2_PIRXI = 0; nd18_NOTIF_SEQ_NO_IN2_PIRXI < nd18_NOTIF_SEQ_NO_IN2_PIRX2.length; nd18_NOTIF_SEQ_NO_IN2_PIRXI++) {
476 if (nd18_NOTIF_SEQ_NO_IN2_PIRX2[nd18_NOTIF_SEQ_NO_IN2_PIRXI].tag !== "BF2F") { continue; }
477 var nd18_NOTIF_SEQ_NO_IN2_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd18_NOTIF_SEQ_NO_IN2_PIRX2[nd18_NOTIF_SEQ_NO_IN2_PIRXI].value);
478 for (var nd18_NOTIF_SEQ_NO_IN2_PIRXJ = 0; nd18_NOTIF_SEQ_NO_IN2_PIRXJ < nd18_NOTIF_SEQ_NO_IN2_PIRXM.length; nd18_NOTIF_SEQ_NO_IN2_PIRXJ++) {
479 if (nd18_NOTIF_SEQ_NO_IN2_PIRXM[nd18_NOTIF_SEQ_NO_IN2_PIRXJ].tag === "81" && nd18_NOTIF_SEQ_NO_IN2_PIRXM[nd18_NOTIF_SEQ_NO_IN2_PIRXJ].value === "80") {
480 nd18_NOTIF_SEQ_NO_IN2_PIRXHIT += 1;
481 if (nd18_NOTIF_SEQ_NO_IN2_PIRXHIT === 2) {
482 for (var nd18_NOTIF_SEQ_NO_IN2_PIRXK = 0; nd18_NOTIF_SEQ_NO_IN2_PIRXK < nd18_NOTIF_SEQ_NO_IN2_PIRXM.length; nd18_NOTIF_SEQ_NO_IN2_PIRXK++) {
483 if (nd18_NOTIF_SEQ_NO_IN2_PIRXM[nd18_NOTIF_SEQ_NO_IN2_PIRXK].tag === "80") { nd18_NOTIF_SEQ_NO_IN2_PIR.seq = nd18_NOTIF_SEQ_NO_IN2_PIRXM[nd18_NOTIF_SEQ_NO_IN2_PIRXK].value; nd18_NOTIF_SEQ_NO_IN2_PIR.ok = true; }
484 }
485 }
486 }
487 }
488 }
489 }
490 }
491 var nd18_NOTIF_SEQ_NO_IN2_PIRReq = nd18_NOTIF_SEQ_NO_IN2_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd18_NOTIF_SEQ_NO_IN2_PIR.seq)) : "";
492 // 步骤 18:SEQ05-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
493 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
494 var sdCla18 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
495 // runtime-bound payload: NOTIF_SEQ_NO_IN2_PIR stays in execution domain
496 var s18 = bind.sendApdu(sdCla18, "E2", "91", "00", nd18_NOTIF_SEQ_NO_IN2_PIRReq, "00", "9000");
497 bind.checkData("S18-C1 SW", "9000", s18.sw);
498 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN2_PIR", s18.cmd, profileAidSession);
499 var ns18W = BindEs10xSingleRequest.parseBerTlv(s18.resp);
500 var ns18Ok0 = ns18W.length === 1 && ns18W[0].tag === "BF30";
501 var ns18In = ns18Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns18W[0].value) : [];
502 var ns18Code = (ns18In.length === 1 && ns18In[0].tag === "80") ? ns18In[0].value : "absent";
503 bind.checkData("S18-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns18Code);
504
505 // 步骤 19:SEQ05-4] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
506 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
507 var sdCla19 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
508 var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF2804810204F0", "00", "9000");
509 bind.checkData("S19-C1 SW", "9000", s19.sw);
510 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
511 var lw19T = BindEs10xSingleRequest.parseBerTlv(s19.resp);
512 var lw19Ok0 = lw19T.length === 1 && lw19T[0].tag === "BF28";
513 var lw19_br = lw19Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw19T[0].value) : [];
514 var lw19_brtag = lw19_br.length === 1 ? lw19_br[0].tag : "";
515 var lw19_els = lw19_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw19_br[0].value) : [];
516 bind.checkData("S19-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw19_brtag === "A0" && lw19_els.length === 0) ? "1" : "0");
517
518 // 步骤 20:SEQ06-IC5] MTD_STORE_DATA(tc_step)
519 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
520 var sdCla20 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
521 var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF2804810204F0", "00", "9000");
522 bind.checkData("S20-C1 SW", "9000", s20.sw);
523 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
524 var lw20T = BindEs10xSingleRequest.parseBerTlv(s20.resp);
525 var lw20Ok0 = lw20T.length === 1 && lw20T[0].tag === "BF28";
526 var lw20_br = lw20Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw20T[0].value) : [];
527 var lw20_brtag = lw20_br.length === 1 ? lw20_br[0].tag : "";
528 var lw20_els = lw20_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw20_br[0].value) : [];
529 bind.checkData("S20-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR_EN1:ListNotificationResponse no branch/count", "1", (lw20_brtag === "A0" && lw20_els.length === 2) ? "1" : "0");
530
531 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 20 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
532 var nd21_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
533 var nd21_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s20.resp);
534 if (nd21_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd21_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
535 var nd21_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd21_NOTIF_SEQ_NO_IN1_PIRT[0].value);
536 if (nd21_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd21_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
537 var nd21_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd21_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
538 var nd21_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
539 for (var nd21_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd21_NOTIF_SEQ_NO_IN1_PIRXI < nd21_NOTIF_SEQ_NO_IN1_PIRX2.length; nd21_NOTIF_SEQ_NO_IN1_PIRXI++) {
540 if (nd21_NOTIF_SEQ_NO_IN1_PIRX2[nd21_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
541 var nd21_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd21_NOTIF_SEQ_NO_IN1_PIRX2[nd21_NOTIF_SEQ_NO_IN1_PIRXI].value);
542 for (var nd21_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd21_NOTIF_SEQ_NO_IN1_PIRXJ < nd21_NOTIF_SEQ_NO_IN1_PIRXM.length; nd21_NOTIF_SEQ_NO_IN1_PIRXJ++) {
543 if (nd21_NOTIF_SEQ_NO_IN1_PIRXM[nd21_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd21_NOTIF_SEQ_NO_IN1_PIRXM[nd21_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
544 nd21_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
545 if (nd21_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
546 for (var nd21_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd21_NOTIF_SEQ_NO_IN1_PIRXK < nd21_NOTIF_SEQ_NO_IN1_PIRXM.length; nd21_NOTIF_SEQ_NO_IN1_PIRXK++) {
547 if (nd21_NOTIF_SEQ_NO_IN1_PIRXM[nd21_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd21_NOTIF_SEQ_NO_IN1_PIR.seq = nd21_NOTIF_SEQ_NO_IN1_PIRXM[nd21_NOTIF_SEQ_NO_IN1_PIRXK].value; nd21_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
548 }
549 }
550 }
551 }
552 }
553 }
554 }
555 var nd21_NOTIF_SEQ_NO_IN1_PIRReq = nd21_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd21_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
556 // 步骤 21:SEQ06-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
557 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
558 var sdCla21 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
559 // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
560 var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", nd21_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
561 bind.checkData("S21-C1 SW", "9000", s21.sw);
562 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s21.cmd, profileAidSession);
563 var ns21W = BindEs10xSingleRequest.parseBerTlv(s21.resp);
564 var ns21Ok0 = ns21W.length === 1 && ns21W[0].tag === "BF30";
565 var ns21In = ns21Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns21W[0].value) : [];
566 var ns21Code = (ns21In.length === 1 && ns21In[0].tag === "80") ? ns21In[0].value : "absent";
567 bind.checkData("S21-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns21Code);
568
569 // 步骤 22:SEQ06-2] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
570 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
571 var sdCla22 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
572 var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF2804810204F0", "00", "9000");
573 bind.checkData("S22-C1 SW", "9000", s22.sw);
574 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
575 var lw22T = BindEs10xSingleRequest.parseBerTlv(s22.resp);
576 var lw22Ok0 = lw22T.length === 1 && lw22T[0].tag === "BF28";
577 var lw22_br = lw22Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw22T[0].value) : [];
578 var lw22_brtag = lw22_br.length === 1 ? lw22_br[0].tag : "";
579 var lw22_els = lw22_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw22_br[0].value) : [];
580 bind.checkData("S22-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count", "1", (lw22_brtag === "A0" && lw22_els.length === 1) ? "1" : "0");
581
582 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_EN1 ← 步 20 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=40 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
583 var nd23_NOTIF_SEQ_NO_EN1 = {ok: false, seq: ""};
584 var nd23_NOTIF_SEQ_NO_EN1T = BindEs10xSingleRequest.parseBerTlv(s20.resp);
585 if (nd23_NOTIF_SEQ_NO_EN1T.length === 1 && nd23_NOTIF_SEQ_NO_EN1T[0].tag === "BF28") {
586 var nd23_NOTIF_SEQ_NO_EN1X1 = BindEs10xSingleRequest.parseBerTlv(nd23_NOTIF_SEQ_NO_EN1T[0].value);
587 if (nd23_NOTIF_SEQ_NO_EN1X1.length === 1 && nd23_NOTIF_SEQ_NO_EN1X1[0].tag === "A0") {
588 var nd23_NOTIF_SEQ_NO_EN1X2 = BindEs10xSingleRequest.parseBerTlv(nd23_NOTIF_SEQ_NO_EN1X1[0].value);
589 var nd23_NOTIF_SEQ_NO_EN1XHIT = 0;
590 for (var nd23_NOTIF_SEQ_NO_EN1XI = 0; nd23_NOTIF_SEQ_NO_EN1XI < nd23_NOTIF_SEQ_NO_EN1X2.length; nd23_NOTIF_SEQ_NO_EN1XI++) {
591 if (nd23_NOTIF_SEQ_NO_EN1X2[nd23_NOTIF_SEQ_NO_EN1XI].tag !== "BF2F") { continue; }
592 var nd23_NOTIF_SEQ_NO_EN1XM = BindEs10xSingleRequest.parseBerTlv(nd23_NOTIF_SEQ_NO_EN1X2[nd23_NOTIF_SEQ_NO_EN1XI].value);
593 for (var nd23_NOTIF_SEQ_NO_EN1XJ = 0; nd23_NOTIF_SEQ_NO_EN1XJ < nd23_NOTIF_SEQ_NO_EN1XM.length; nd23_NOTIF_SEQ_NO_EN1XJ++) {
594 if (nd23_NOTIF_SEQ_NO_EN1XM[nd23_NOTIF_SEQ_NO_EN1XJ].tag === "81" && nd23_NOTIF_SEQ_NO_EN1XM[nd23_NOTIF_SEQ_NO_EN1XJ].value === "40") {
595 nd23_NOTIF_SEQ_NO_EN1XHIT += 1;
596 if (nd23_NOTIF_SEQ_NO_EN1XHIT === 1) {
597 for (var nd23_NOTIF_SEQ_NO_EN1XK = 0; nd23_NOTIF_SEQ_NO_EN1XK < nd23_NOTIF_SEQ_NO_EN1XM.length; nd23_NOTIF_SEQ_NO_EN1XK++) {
598 if (nd23_NOTIF_SEQ_NO_EN1XM[nd23_NOTIF_SEQ_NO_EN1XK].tag === "80") { nd23_NOTIF_SEQ_NO_EN1.seq = nd23_NOTIF_SEQ_NO_EN1XM[nd23_NOTIF_SEQ_NO_EN1XK].value; nd23_NOTIF_SEQ_NO_EN1.ok = true; }
599 }
600 }
601 }
602 }
603 }
604 }
605 }
606 var nd23_NOTIF_SEQ_NO_EN1Req = nd23_NOTIF_SEQ_NO_EN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd23_NOTIF_SEQ_NO_EN1.seq)) : "";
607 // 步骤 23:SEQ06-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
608 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
609 var sdCla23 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
610 // runtime-bound payload: NOTIF_SEQ_NO_EN1 stays in execution domain
611 var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", nd23_NOTIF_SEQ_NO_EN1Req, "00", "9000");
612 bind.checkData("S23-C1 SW", "9000", s23.sw);
613 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_EN1", s23.cmd, profileAidSession);
614 var ns23W = BindEs10xSingleRequest.parseBerTlv(s23.resp);
615 var ns23Ok0 = ns23W.length === 1 && ns23W[0].tag === "BF30";
616 var ns23In = ns23Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns23W[0].value) : [];
617 var ns23Code = (ns23In.length === 1 && ns23In[0].tag === "80") ? ns23In[0].value : "absent";
618 bind.checkData("S23-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns23Code);
619
620 // 步骤 24:SEQ06-4] MTD_STORE_DATA(tc_step)
621 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
622 var sdCla24 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
623 var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2804810204F0", "00", "9000");
624 bind.checkData("S24-C1 SW", "9000", s24.sw);
625 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
626 var lw24T = BindEs10xSingleRequest.parseBerTlv(s24.resp);
627 var lw24Ok0 = lw24T.length === 1 && lw24T[0].tag === "BF28";
628 var lw24_br = lw24Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw24T[0].value) : [];
629 var lw24_brtag = lw24_br.length === 1 ? lw24_br[0].tag : "";
630 var lw24_els = lw24_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw24_br[0].value) : [];
631 bind.checkData("S24-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw24_brtag === "A0" && lw24_els.length === 0) ? "1" : "0");
632
633 // 步骤 25:SEQ07-IC7] MTD_STORE_DATA(tc_step)
634 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
635 var sdCla25 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
636 var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2804810204F0", "00", "9000");
637 bind.checkData("S25-C1 SW", "9000", s25.sw);
638 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
639 var lw25T = BindEs10xSingleRequest.parseBerTlv(s25.resp);
640 var lw25Ok0 = lw25T.length === 1 && lw25T[0].tag === "BF28";
641 var lw25_br = lw25Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw25T[0].value) : [];
642 var lw25_brtag = lw25_br.length === 1 ? lw25_br[0].tag : "";
643 var lw25_els = lw25_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw25_br[0].value) : [];
644 bind.checkData("S25-C2 响应结构匹配 #R_LIST_NOTIF_DI1_DE1:ListNotificationResponse notifi branch/count", "1", (lw25_brtag === "A0" && lw25_els.length === 2) ? "1" : "0");
645
646 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_DI1 ← 步 25 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=20 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
647 var nd26_NOTIF_SEQ_NO_DI1 = {ok: false, seq: ""};
648 var nd26_NOTIF_SEQ_NO_DI1T = BindEs10xSingleRequest.parseBerTlv(s25.resp);
649 if (nd26_NOTIF_SEQ_NO_DI1T.length === 1 && nd26_NOTIF_SEQ_NO_DI1T[0].tag === "BF28") {
650 var nd26_NOTIF_SEQ_NO_DI1X1 = BindEs10xSingleRequest.parseBerTlv(nd26_NOTIF_SEQ_NO_DI1T[0].value);
651 if (nd26_NOTIF_SEQ_NO_DI1X1.length === 1 && nd26_NOTIF_SEQ_NO_DI1X1[0].tag === "A0") {
652 var nd26_NOTIF_SEQ_NO_DI1X2 = BindEs10xSingleRequest.parseBerTlv(nd26_NOTIF_SEQ_NO_DI1X1[0].value);
653 var nd26_NOTIF_SEQ_NO_DI1XHIT = 0;
654 for (var nd26_NOTIF_SEQ_NO_DI1XI = 0; nd26_NOTIF_SEQ_NO_DI1XI < nd26_NOTIF_SEQ_NO_DI1X2.length; nd26_NOTIF_SEQ_NO_DI1XI++) {
655 if (nd26_NOTIF_SEQ_NO_DI1X2[nd26_NOTIF_SEQ_NO_DI1XI].tag !== "BF2F") { continue; }
656 var nd26_NOTIF_SEQ_NO_DI1XM = BindEs10xSingleRequest.parseBerTlv(nd26_NOTIF_SEQ_NO_DI1X2[nd26_NOTIF_SEQ_NO_DI1XI].value);
657 for (var nd26_NOTIF_SEQ_NO_DI1XJ = 0; nd26_NOTIF_SEQ_NO_DI1XJ < nd26_NOTIF_SEQ_NO_DI1XM.length; nd26_NOTIF_SEQ_NO_DI1XJ++) {
658 if (nd26_NOTIF_SEQ_NO_DI1XM[nd26_NOTIF_SEQ_NO_DI1XJ].tag === "81" && nd26_NOTIF_SEQ_NO_DI1XM[nd26_NOTIF_SEQ_NO_DI1XJ].value === "20") {
659 nd26_NOTIF_SEQ_NO_DI1XHIT += 1;
660 if (nd26_NOTIF_SEQ_NO_DI1XHIT === 1) {
661 for (var nd26_NOTIF_SEQ_NO_DI1XK = 0; nd26_NOTIF_SEQ_NO_DI1XK < nd26_NOTIF_SEQ_NO_DI1XM.length; nd26_NOTIF_SEQ_NO_DI1XK++) {
662 if (nd26_NOTIF_SEQ_NO_DI1XM[nd26_NOTIF_SEQ_NO_DI1XK].tag === "80") { nd26_NOTIF_SEQ_NO_DI1.seq = nd26_NOTIF_SEQ_NO_DI1XM[nd26_NOTIF_SEQ_NO_DI1XK].value; nd26_NOTIF_SEQ_NO_DI1.ok = true; }
663 }
664 }
665 }
666 }
667 }
668 }
669 }
670 var nd26_NOTIF_SEQ_NO_DI1Req = nd26_NOTIF_SEQ_NO_DI1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd26_NOTIF_SEQ_NO_DI1.seq)) : "";
671 // 步骤 26:SEQ07-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
672 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
673 var sdCla26 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
674 // runtime-bound payload: NOTIF_SEQ_NO_DI1 stays in execution domain
675 var s26 = bind.sendApdu(sdCla26, "E2", "91", "00", nd26_NOTIF_SEQ_NO_DI1Req, "00", "9000");
676 bind.checkData("S26-C1 SW", "9000", s26.sw);
677 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_DI1", s26.cmd, profileAidSession);
678 var ns26W = BindEs10xSingleRequest.parseBerTlv(s26.resp);
679 var ns26Ok0 = ns26W.length === 1 && ns26W[0].tag === "BF30";
680 var ns26In = ns26Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns26W[0].value) : [];
681 var ns26Code = (ns26In.length === 1 && ns26In[0].tag === "80") ? ns26In[0].value : "absent";
682 bind.checkData("S26-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns26Code);
683
684 // 步骤 27:SEQ07-2] MTD_STORE_DATA(tc_step)
685 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
686 var sdCla27 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
687 var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF2804810204F0", "00", "9000");
688 bind.checkData("S27-C1 SW", "9000", s27.sw);
689 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
690 var lw27T = BindEs10xSingleRequest.parseBerTlv(s27.resp);
691 var lw27Ok0 = lw27T.length === 1 && lw27T[0].tag === "BF28";
692 var lw27_br = lw27Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw27T[0].value) : [];
693 var lw27_brtag = lw27_br.length === 1 ? lw27_br[0].tag : "";
694 var lw27_els = lw27_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw27_br[0].value) : [];
695 bind.checkData("S27-C2 响应结构匹配 #R_LIST_NOTIF_DE1:ListNotificationResponse notificati branch/count", "1", (lw27_brtag === "A0" && lw27_els.length === 1) ? "1" : "0");
696
697 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_DE1 ← 步 25 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=10 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
698 var nd28_NOTIF_SEQ_NO_DE1 = {ok: false, seq: ""};
699 var nd28_NOTIF_SEQ_NO_DE1T = BindEs10xSingleRequest.parseBerTlv(s25.resp);
700 if (nd28_NOTIF_SEQ_NO_DE1T.length === 1 && nd28_NOTIF_SEQ_NO_DE1T[0].tag === "BF28") {
701 var nd28_NOTIF_SEQ_NO_DE1X1 = BindEs10xSingleRequest.parseBerTlv(nd28_NOTIF_SEQ_NO_DE1T[0].value);
702 if (nd28_NOTIF_SEQ_NO_DE1X1.length === 1 && nd28_NOTIF_SEQ_NO_DE1X1[0].tag === "A0") {
703 var nd28_NOTIF_SEQ_NO_DE1X2 = BindEs10xSingleRequest.parseBerTlv(nd28_NOTIF_SEQ_NO_DE1X1[0].value);
704 var nd28_NOTIF_SEQ_NO_DE1XHIT = 0;
705 for (var nd28_NOTIF_SEQ_NO_DE1XI = 0; nd28_NOTIF_SEQ_NO_DE1XI < nd28_NOTIF_SEQ_NO_DE1X2.length; nd28_NOTIF_SEQ_NO_DE1XI++) {
706 if (nd28_NOTIF_SEQ_NO_DE1X2[nd28_NOTIF_SEQ_NO_DE1XI].tag !== "BF2F") { continue; }
707 var nd28_NOTIF_SEQ_NO_DE1XM = BindEs10xSingleRequest.parseBerTlv(nd28_NOTIF_SEQ_NO_DE1X2[nd28_NOTIF_SEQ_NO_DE1XI].value);
708 for (var nd28_NOTIF_SEQ_NO_DE1XJ = 0; nd28_NOTIF_SEQ_NO_DE1XJ < nd28_NOTIF_SEQ_NO_DE1XM.length; nd28_NOTIF_SEQ_NO_DE1XJ++) {
709 if (nd28_NOTIF_SEQ_NO_DE1XM[nd28_NOTIF_SEQ_NO_DE1XJ].tag === "81" && nd28_NOTIF_SEQ_NO_DE1XM[nd28_NOTIF_SEQ_NO_DE1XJ].value === "10") {
710 nd28_NOTIF_SEQ_NO_DE1XHIT += 1;
711 if (nd28_NOTIF_SEQ_NO_DE1XHIT === 1) {
712 for (var nd28_NOTIF_SEQ_NO_DE1XK = 0; nd28_NOTIF_SEQ_NO_DE1XK < nd28_NOTIF_SEQ_NO_DE1XM.length; nd28_NOTIF_SEQ_NO_DE1XK++) {
713 if (nd28_NOTIF_SEQ_NO_DE1XM[nd28_NOTIF_SEQ_NO_DE1XK].tag === "80") { nd28_NOTIF_SEQ_NO_DE1.seq = nd28_NOTIF_SEQ_NO_DE1XM[nd28_NOTIF_SEQ_NO_DE1XK].value; nd28_NOTIF_SEQ_NO_DE1.ok = true; }
714 }
715 }
716 }
717 }
718 }
719 }
720 }
721 var nd28_NOTIF_SEQ_NO_DE1Req = nd28_NOTIF_SEQ_NO_DE1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd28_NOTIF_SEQ_NO_DE1.seq)) : "";
722 // 步骤 28:SEQ07-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
723 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
724 var sdCla28 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
725 // runtime-bound payload: NOTIF_SEQ_NO_DE1 stays in execution domain
726 var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", nd28_NOTIF_SEQ_NO_DE1Req, "00", "9000");
727 bind.checkData("S28-C1 SW", "9000", s28.sw);
728 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_DE1", s28.cmd, profileAidSession);
729 var ns28W = BindEs10xSingleRequest.parseBerTlv(s28.resp);
730 var ns28Ok0 = ns28W.length === 1 && ns28W[0].tag === "BF30";
731 var ns28In = ns28Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns28W[0].value) : [];
732 var ns28Code = (ns28In.length === 1 && ns28In[0].tag === "80") ? ns28In[0].value : "absent";
733 bind.checkData("S28-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns28Code);
734
735 // 步骤 29:SEQ07-4] MTD_STORE_DATA(tc_step)
736 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
737 var sdCla29 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
738 var s29 = bind.sendApdu(sdCla29, "E2", "91", "00", "BF2804810204F0", "00", "9000");
739 bind.checkData("S29-C1 SW", "9000", s29.sw);
740 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
741 var lw29T = BindEs10xSingleRequest.parseBerTlv(s29.resp);
742 var lw29Ok0 = lw29T.length === 1 && lw29T[0].tag === "BF28";
743 var lw29_br = lw29Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw29T[0].value) : [];
744 var lw29_brtag = lw29_br.length === 1 ? lw29_br[0].tag : "";
745 var lw29_els = lw29_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw29_br[0].value) : [];
746 bind.checkData("S29-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw29_brtag === "A0" && lw29_els.length === 0) ? "1" : "0");
747
748 // 步骤 30:SEQ08-IC5] MTD_STORE_DATA(tc_step)
749 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
750 var sdCla30 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
751 var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", "BF2804810204F0", "00", "9000");
752 bind.checkData("S30-C1 SW", "9000", s30.sw);
753 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
754 var lw30T = BindEs10xSingleRequest.parseBerTlv(s30.resp);
755 var lw30Ok0 = lw30T.length === 1 && lw30T[0].tag === "BF28";
756 var lw30_br = lw30Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw30T[0].value) : [];
757 var lw30_brtag = lw30_br.length === 1 ? lw30_br[0].tag : "";
758 var lw30_els = lw30_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw30_br[0].value) : [];
759 bind.checkData("S30-C2 响应结构匹配 #R_LIST_NOTIF_IN1_EN1:ListNotificationResponse notifi branch/count", "1", (lw30_brtag === "A0" && lw30_els.length === 2) ? "1" : "0");
760
761 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1 ← 步 30 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
762 var nd31_NOTIF_SEQ_NO_IN1 = {ok: false, seq: ""};
763 var nd31_NOTIF_SEQ_NO_IN1T = BindEs10xSingleRequest.parseBerTlv(s30.resp);
764 if (nd31_NOTIF_SEQ_NO_IN1T.length === 1 && nd31_NOTIF_SEQ_NO_IN1T[0].tag === "BF28") {
765 var nd31_NOTIF_SEQ_NO_IN1X1 = BindEs10xSingleRequest.parseBerTlv(nd31_NOTIF_SEQ_NO_IN1T[0].value);
766 if (nd31_NOTIF_SEQ_NO_IN1X1.length === 1 && nd31_NOTIF_SEQ_NO_IN1X1[0].tag === "A0") {
767 var nd31_NOTIF_SEQ_NO_IN1X2 = BindEs10xSingleRequest.parseBerTlv(nd31_NOTIF_SEQ_NO_IN1X1[0].value);
768 var nd31_NOTIF_SEQ_NO_IN1XHIT = 0;
769 for (var nd31_NOTIF_SEQ_NO_IN1XI = 0; nd31_NOTIF_SEQ_NO_IN1XI < nd31_NOTIF_SEQ_NO_IN1X2.length; nd31_NOTIF_SEQ_NO_IN1XI++) {
770 if (nd31_NOTIF_SEQ_NO_IN1X2[nd31_NOTIF_SEQ_NO_IN1XI].tag !== "BF2F") { continue; }
771 var nd31_NOTIF_SEQ_NO_IN1XM = BindEs10xSingleRequest.parseBerTlv(nd31_NOTIF_SEQ_NO_IN1X2[nd31_NOTIF_SEQ_NO_IN1XI].value);
772 for (var nd31_NOTIF_SEQ_NO_IN1XJ = 0; nd31_NOTIF_SEQ_NO_IN1XJ < nd31_NOTIF_SEQ_NO_IN1XM.length; nd31_NOTIF_SEQ_NO_IN1XJ++) {
773 if (nd31_NOTIF_SEQ_NO_IN1XM[nd31_NOTIF_SEQ_NO_IN1XJ].tag === "81" && nd31_NOTIF_SEQ_NO_IN1XM[nd31_NOTIF_SEQ_NO_IN1XJ].value === "80") {
774 nd31_NOTIF_SEQ_NO_IN1XHIT += 1;
775 if (nd31_NOTIF_SEQ_NO_IN1XHIT === 1) {
776 for (var nd31_NOTIF_SEQ_NO_IN1XK = 0; nd31_NOTIF_SEQ_NO_IN1XK < nd31_NOTIF_SEQ_NO_IN1XM.length; nd31_NOTIF_SEQ_NO_IN1XK++) {
777 if (nd31_NOTIF_SEQ_NO_IN1XM[nd31_NOTIF_SEQ_NO_IN1XK].tag === "80") { nd31_NOTIF_SEQ_NO_IN1.seq = nd31_NOTIF_SEQ_NO_IN1XM[nd31_NOTIF_SEQ_NO_IN1XK].value; nd31_NOTIF_SEQ_NO_IN1.ok = true; }
778 }
779 }
780 }
781 }
782 }
783 }
784 }
785 var nd31_NOTIF_SEQ_NO_IN1Req = nd31_NOTIF_SEQ_NO_IN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd31_NOTIF_SEQ_NO_IN1.seq)) : "";
786 // 步骤 31:SEQ08-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
787 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
788 var sdCla31 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
789 // runtime-bound payload: NOTIF_SEQ_NO_IN1 stays in execution domain
790 var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", nd31_NOTIF_SEQ_NO_IN1Req, "00", "9000");
791 bind.checkData("S31-C1 SW", "9000", s31.sw);
792 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1", s31.cmd, profileAidSession);
793 var ns31W = BindEs10xSingleRequest.parseBerTlv(s31.resp);
794 var ns31Ok0 = ns31W.length === 1 && ns31W[0].tag === "BF30";
795 var ns31In = ns31Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns31W[0].value) : [];
796 var ns31Code = (ns31In.length === 1 && ns31In[0].tag === "80") ? ns31In[0].value : "absent";
797 bind.checkData("S31-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns31Code);
798
799 // 步骤 32:SEQ08-2] MTD_STORE_DATA(tc_step)
800 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
801 var sdCla32 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
802 var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF2804810204F0", "00", "9000");
803 bind.checkData("S32-C1 SW", "9000", s32.sw);
804 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
805 var lw32T = BindEs10xSingleRequest.parseBerTlv(s32.resp);
806 var lw32Ok0 = lw32T.length === 1 && lw32T[0].tag === "BF28";
807 var lw32_br = lw32Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw32T[0].value) : [];
808 var lw32_brtag = lw32_br.length === 1 ? lw32_br[0].tag : "";
809 var lw32_els = lw32_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw32_br[0].value) : [];
810 bind.checkData("S32-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count", "1", (lw32_brtag === "A0" && lw32_els.length === 1) ? "1" : "0");
811
812 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_EN1 ← 步 30 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=40 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
813 var nd33_NOTIF_SEQ_NO_EN1 = {ok: false, seq: ""};
814 var nd33_NOTIF_SEQ_NO_EN1T = BindEs10xSingleRequest.parseBerTlv(s30.resp);
815 if (nd33_NOTIF_SEQ_NO_EN1T.length === 1 && nd33_NOTIF_SEQ_NO_EN1T[0].tag === "BF28") {
816 var nd33_NOTIF_SEQ_NO_EN1X1 = BindEs10xSingleRequest.parseBerTlv(nd33_NOTIF_SEQ_NO_EN1T[0].value);
817 if (nd33_NOTIF_SEQ_NO_EN1X1.length === 1 && nd33_NOTIF_SEQ_NO_EN1X1[0].tag === "A0") {
818 var nd33_NOTIF_SEQ_NO_EN1X2 = BindEs10xSingleRequest.parseBerTlv(nd33_NOTIF_SEQ_NO_EN1X1[0].value);
819 var nd33_NOTIF_SEQ_NO_EN1XHIT = 0;
820 for (var nd33_NOTIF_SEQ_NO_EN1XI = 0; nd33_NOTIF_SEQ_NO_EN1XI < nd33_NOTIF_SEQ_NO_EN1X2.length; nd33_NOTIF_SEQ_NO_EN1XI++) {
821 if (nd33_NOTIF_SEQ_NO_EN1X2[nd33_NOTIF_SEQ_NO_EN1XI].tag !== "BF2F") { continue; }
822 var nd33_NOTIF_SEQ_NO_EN1XM = BindEs10xSingleRequest.parseBerTlv(nd33_NOTIF_SEQ_NO_EN1X2[nd33_NOTIF_SEQ_NO_EN1XI].value);
823 for (var nd33_NOTIF_SEQ_NO_EN1XJ = 0; nd33_NOTIF_SEQ_NO_EN1XJ < nd33_NOTIF_SEQ_NO_EN1XM.length; nd33_NOTIF_SEQ_NO_EN1XJ++) {
824 if (nd33_NOTIF_SEQ_NO_EN1XM[nd33_NOTIF_SEQ_NO_EN1XJ].tag === "81" && nd33_NOTIF_SEQ_NO_EN1XM[nd33_NOTIF_SEQ_NO_EN1XJ].value === "40") {
825 nd33_NOTIF_SEQ_NO_EN1XHIT += 1;
826 if (nd33_NOTIF_SEQ_NO_EN1XHIT === 1) {
827 for (var nd33_NOTIF_SEQ_NO_EN1XK = 0; nd33_NOTIF_SEQ_NO_EN1XK < nd33_NOTIF_SEQ_NO_EN1XM.length; nd33_NOTIF_SEQ_NO_EN1XK++) {
828 if (nd33_NOTIF_SEQ_NO_EN1XM[nd33_NOTIF_SEQ_NO_EN1XK].tag === "80") { nd33_NOTIF_SEQ_NO_EN1.seq = nd33_NOTIF_SEQ_NO_EN1XM[nd33_NOTIF_SEQ_NO_EN1XK].value; nd33_NOTIF_SEQ_NO_EN1.ok = true; }
829 }
830 }
831 }
832 }
833 }
834 }
835 }
836 var nd33_NOTIF_SEQ_NO_EN1Req = nd33_NOTIF_SEQ_NO_EN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd33_NOTIF_SEQ_NO_EN1.seq)) : "";
837 // 步骤 33:SEQ08-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
838 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
839 var sdCla33 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
840 // runtime-bound payload: NOTIF_SEQ_NO_EN1 stays in execution domain
841 var s33 = bind.sendApdu(sdCla33, "E2", "91", "00", nd33_NOTIF_SEQ_NO_EN1Req, "00", "9000");
842 bind.checkData("S33-C1 SW", "9000", s33.sw);
843 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_EN1", s33.cmd, profileAidSession);
844 var ns33W = BindEs10xSingleRequest.parseBerTlv(s33.resp);
845 var ns33Ok0 = ns33W.length === 1 && ns33W[0].tag === "BF30";
846 var ns33In = ns33Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns33W[0].value) : [];
847 var ns33Code = (ns33In.length === 1 && ns33In[0].tag === "80") ? ns33In[0].value : "absent";
848 bind.checkData("S33-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns33Code);
849
850 // 步骤 34:SEQ08-4] MTD_STORE_DATA(tc_step)
851 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
852 var sdCla34 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
853 var s34 = bind.sendApdu(sdCla34, "E2", "91", "00", "BF2804810204F0", "00", "9000");
854 bind.checkData("S34-C1 SW", "9000", s34.sw);
855 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
856 var lw34T = BindEs10xSingleRequest.parseBerTlv(s34.resp);
857 var lw34Ok0 = lw34T.length === 1 && lw34T[0].tag === "BF28";
858 var lw34_br = lw34Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw34T[0].value) : [];
859 var lw34_brtag = lw34_br.length === 1 ? lw34_br[0].tag : "";
860 var lw34_els = lw34_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw34_br[0].value) : [];
861 bind.checkData("S34-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw34_brtag === "A0" && lw34_els.length === 0) ? "1" : "0");
862
863 // 步骤 35:SEQ09-IC6] MTD_STORE_DATA(tc_step)
864 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
865 var sdCla35 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
866 var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF2804810204F0", "00", "9000");
867 bind.checkData("S35-C1 SW", "9000", s35.sw);
868 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
869 var lw35T = BindEs10xSingleRequest.parseBerTlv(s35.resp);
870 var lw35Ok0 = lw35T.length === 1 && lw35T[0].tag === "BF28";
871 var lw35_br = lw35Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw35T[0].value) : [];
872 var lw35_brtag = lw35_br.length === 1 ? lw35_br[0].tag : "";
873 var lw35_els = lw35_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw35_br[0].value) : [];
874 bind.checkData("S35-C2 响应结构匹配 #R_LIST_NOTIF_EN1_IN2_PIR:ListNotificationResponse no branch/count", "1", (lw35_brtag === "A0" && lw35_els.length === 2) ? "1" : "0");
875
876 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN2_PIR ← 步 35 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
877 var nd36_NOTIF_SEQ_NO_IN2_PIR = {ok: false, seq: ""};
878 var nd36_NOTIF_SEQ_NO_IN2_PIRT = BindEs10xSingleRequest.parseBerTlv(s35.resp);
879 if (nd36_NOTIF_SEQ_NO_IN2_PIRT.length === 1 && nd36_NOTIF_SEQ_NO_IN2_PIRT[0].tag === "BF28") {
880 var nd36_NOTIF_SEQ_NO_IN2_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd36_NOTIF_SEQ_NO_IN2_PIRT[0].value);
881 if (nd36_NOTIF_SEQ_NO_IN2_PIRX1.length === 1 && nd36_NOTIF_SEQ_NO_IN2_PIRX1[0].tag === "A0") {
882 var nd36_NOTIF_SEQ_NO_IN2_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd36_NOTIF_SEQ_NO_IN2_PIRX1[0].value);
883 var nd36_NOTIF_SEQ_NO_IN2_PIRXHIT = 0;
884 for (var nd36_NOTIF_SEQ_NO_IN2_PIRXI = 0; nd36_NOTIF_SEQ_NO_IN2_PIRXI < nd36_NOTIF_SEQ_NO_IN2_PIRX2.length; nd36_NOTIF_SEQ_NO_IN2_PIRXI++) {
885 if (nd36_NOTIF_SEQ_NO_IN2_PIRX2[nd36_NOTIF_SEQ_NO_IN2_PIRXI].tag !== "BF2F") { continue; }
886 var nd36_NOTIF_SEQ_NO_IN2_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd36_NOTIF_SEQ_NO_IN2_PIRX2[nd36_NOTIF_SEQ_NO_IN2_PIRXI].value);
887 for (var nd36_NOTIF_SEQ_NO_IN2_PIRXJ = 0; nd36_NOTIF_SEQ_NO_IN2_PIRXJ < nd36_NOTIF_SEQ_NO_IN2_PIRXM.length; nd36_NOTIF_SEQ_NO_IN2_PIRXJ++) {
888 if (nd36_NOTIF_SEQ_NO_IN2_PIRXM[nd36_NOTIF_SEQ_NO_IN2_PIRXJ].tag === "81" && nd36_NOTIF_SEQ_NO_IN2_PIRXM[nd36_NOTIF_SEQ_NO_IN2_PIRXJ].value === "80") {
889 nd36_NOTIF_SEQ_NO_IN2_PIRXHIT += 1;
890 if (nd36_NOTIF_SEQ_NO_IN2_PIRXHIT === 2) {
891 for (var nd36_NOTIF_SEQ_NO_IN2_PIRXK = 0; nd36_NOTIF_SEQ_NO_IN2_PIRXK < nd36_NOTIF_SEQ_NO_IN2_PIRXM.length; nd36_NOTIF_SEQ_NO_IN2_PIRXK++) {
892 if (nd36_NOTIF_SEQ_NO_IN2_PIRXM[nd36_NOTIF_SEQ_NO_IN2_PIRXK].tag === "80") { nd36_NOTIF_SEQ_NO_IN2_PIR.seq = nd36_NOTIF_SEQ_NO_IN2_PIRXM[nd36_NOTIF_SEQ_NO_IN2_PIRXK].value; nd36_NOTIF_SEQ_NO_IN2_PIR.ok = true; }
893 }
894 }
895 }
896 }
897 }
898 }
899 }
900 var nd36_NOTIF_SEQ_NO_IN2_PIRReq = nd36_NOTIF_SEQ_NO_IN2_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd36_NOTIF_SEQ_NO_IN2_PIR.seq)) : "";
901 // 步骤 36:SEQ09-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
902 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
903 var sdCla36 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
904 // runtime-bound payload: NOTIF_SEQ_NO_IN2_PIR stays in execution domain
905 var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", nd36_NOTIF_SEQ_NO_IN2_PIRReq, "00", "9000");
906 bind.checkData("S36-C1 SW", "9000", s36.sw);
907 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN2_PIR", s36.cmd, profileAidSession);
908 var ns36W = BindEs10xSingleRequest.parseBerTlv(s36.resp);
909 var ns36Ok0 = ns36W.length === 1 && ns36W[0].tag === "BF30";
910 var ns36In = ns36Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns36W[0].value) : [];
911 var ns36Code = (ns36In.length === 1 && ns36In[0].tag === "80") ? ns36In[0].value : "absent";
912 bind.checkData("S36-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns36Code);
913
914 // 步骤 37:SEQ09-2] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
915 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
916 var sdCla37 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
917 var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF2804810204F0", "00", "9000");
918 bind.checkData("S37-C1 SW", "9000", s37.sw);
919 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
920 var lw37T = BindEs10xSingleRequest.parseBerTlv(s37.resp);
921 var lw37Ok0 = lw37T.length === 1 && lw37T[0].tag === "BF28";
922 var lw37_br = lw37Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw37T[0].value) : [];
923 var lw37_brtag = lw37_br.length === 1 ? lw37_br[0].tag : "";
924 var lw37_els = lw37_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw37_br[0].value) : [];
925 bind.checkData("S37-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count", "1", (lw37_brtag === "A0" && lw37_els.length === 1) ? "1" : "0");
926
927 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_EN1 ← 步 35 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=40 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
928 var nd38_NOTIF_SEQ_NO_EN1 = {ok: false, seq: ""};
929 var nd38_NOTIF_SEQ_NO_EN1T = BindEs10xSingleRequest.parseBerTlv(s35.resp);
930 if (nd38_NOTIF_SEQ_NO_EN1T.length === 1 && nd38_NOTIF_SEQ_NO_EN1T[0].tag === "BF28") {
931 var nd38_NOTIF_SEQ_NO_EN1X1 = BindEs10xSingleRequest.parseBerTlv(nd38_NOTIF_SEQ_NO_EN1T[0].value);
932 if (nd38_NOTIF_SEQ_NO_EN1X1.length === 1 && nd38_NOTIF_SEQ_NO_EN1X1[0].tag === "A0") {
933 var nd38_NOTIF_SEQ_NO_EN1X2 = BindEs10xSingleRequest.parseBerTlv(nd38_NOTIF_SEQ_NO_EN1X1[0].value);
934 var nd38_NOTIF_SEQ_NO_EN1XHIT = 0;
935 for (var nd38_NOTIF_SEQ_NO_EN1XI = 0; nd38_NOTIF_SEQ_NO_EN1XI < nd38_NOTIF_SEQ_NO_EN1X2.length; nd38_NOTIF_SEQ_NO_EN1XI++) {
936 if (nd38_NOTIF_SEQ_NO_EN1X2[nd38_NOTIF_SEQ_NO_EN1XI].tag !== "BF2F") { continue; }
937 var nd38_NOTIF_SEQ_NO_EN1XM = BindEs10xSingleRequest.parseBerTlv(nd38_NOTIF_SEQ_NO_EN1X2[nd38_NOTIF_SEQ_NO_EN1XI].value);
938 for (var nd38_NOTIF_SEQ_NO_EN1XJ = 0; nd38_NOTIF_SEQ_NO_EN1XJ < nd38_NOTIF_SEQ_NO_EN1XM.length; nd38_NOTIF_SEQ_NO_EN1XJ++) {
939 if (nd38_NOTIF_SEQ_NO_EN1XM[nd38_NOTIF_SEQ_NO_EN1XJ].tag === "81" && nd38_NOTIF_SEQ_NO_EN1XM[nd38_NOTIF_SEQ_NO_EN1XJ].value === "40") {
940 nd38_NOTIF_SEQ_NO_EN1XHIT += 1;
941 if (nd38_NOTIF_SEQ_NO_EN1XHIT === 1) {
942 for (var nd38_NOTIF_SEQ_NO_EN1XK = 0; nd38_NOTIF_SEQ_NO_EN1XK < nd38_NOTIF_SEQ_NO_EN1XM.length; nd38_NOTIF_SEQ_NO_EN1XK++) {
943 if (nd38_NOTIF_SEQ_NO_EN1XM[nd38_NOTIF_SEQ_NO_EN1XK].tag === "80") { nd38_NOTIF_SEQ_NO_EN1.seq = nd38_NOTIF_SEQ_NO_EN1XM[nd38_NOTIF_SEQ_NO_EN1XK].value; nd38_NOTIF_SEQ_NO_EN1.ok = true; }
944 }
945 }
946 }
947 }
948 }
949 }
950 }
951 var nd38_NOTIF_SEQ_NO_EN1Req = nd38_NOTIF_SEQ_NO_EN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd38_NOTIF_SEQ_NO_EN1.seq)) : "";
952 // 步骤 38:SEQ09-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
953 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
954 var sdCla38 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
955 // runtime-bound payload: NOTIF_SEQ_NO_EN1 stays in execution domain
956 var s38 = bind.sendApdu(sdCla38, "E2", "91", "00", nd38_NOTIF_SEQ_NO_EN1Req, "00", "9000");
957 bind.checkData("S38-C1 SW", "9000", s38.sw);
958 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_EN1", s38.cmd, profileAidSession);
959 var ns38W = BindEs10xSingleRequest.parseBerTlv(s38.resp);
960 var ns38Ok0 = ns38W.length === 1 && ns38W[0].tag === "BF30";
961 var ns38In = ns38Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns38W[0].value) : [];
962 var ns38Code = (ns38In.length === 1 && ns38In[0].tag === "80") ? ns38In[0].value : "absent";
963 bind.checkData("S38-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns38Code);
964
965 // 步骤 39:SEQ09-4] MTD_STORE_DATA(tc_step)
966 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
967 var sdCla39 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
968 var s39 = bind.sendApdu(sdCla39, "E2", "91", "00", "BF2804810204F0", "00", "9000");
969 bind.checkData("S39-C1 SW", "9000", s39.sw);
970 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
971 var lw39T = BindEs10xSingleRequest.parseBerTlv(s39.resp);
972 var lw39Ok0 = lw39T.length === 1 && lw39T[0].tag === "BF28";
973 var lw39_br = lw39Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw39T[0].value) : [];
974 var lw39_brtag = lw39_br.length === 1 ? lw39_br[0].tag : "";
975 var lw39_els = lw39_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw39_br[0].value) : [];
976 bind.checkData("S39-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw39_brtag === "A0" && lw39_els.length === 0) ? "1" : "0");
977
978 // 步骤 40:SEQ10-IC4] MTD_STORE_DATA(tc_step)
979 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
980 var sdCla40 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
981 var s40 = bind.sendApdu(sdCla40, "E2", "91", "00", "BF2804810204F0", "00", "9000");
982 bind.checkData("S40-C1 SW", "9000", s40.sw);
983 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
984 var lw40T = BindEs10xSingleRequest.parseBerTlv(s40.resp);
985 var lw40Ok0 = lw40T.length === 1 && lw40T[0].tag === "BF28";
986 var lw40_br = lw40Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw40T[0].value) : [];
987 var lw40_brtag = lw40_br.length === 1 ? lw40_br[0].tag : "";
988 var lw40_els = lw40_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw40_br[0].value) : [];
989 bind.checkData("S40-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count", "1", (lw40_brtag === "A0" && lw40_els.length === 1) ? "1" : "0");
990
991 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
992 var nd41_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
993 var nd41_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
994 if (nd41_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd41_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
995 var nd41_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd41_NOTIF_SEQ_NO_IN1_PIRT[0].value);
996 if (nd41_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd41_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
997 var nd41_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd41_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
998 var nd41_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
999 for (var nd41_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd41_NOTIF_SEQ_NO_IN1_PIRXI < nd41_NOTIF_SEQ_NO_IN1_PIRX2.length; nd41_NOTIF_SEQ_NO_IN1_PIRXI++) {
1000 if (nd41_NOTIF_SEQ_NO_IN1_PIRX2[nd41_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
1001 var nd41_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd41_NOTIF_SEQ_NO_IN1_PIRX2[nd41_NOTIF_SEQ_NO_IN1_PIRXI].value);
1002 for (var nd41_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd41_NOTIF_SEQ_NO_IN1_PIRXJ < nd41_NOTIF_SEQ_NO_IN1_PIRXM.length; nd41_NOTIF_SEQ_NO_IN1_PIRXJ++) {
1003 if (nd41_NOTIF_SEQ_NO_IN1_PIRXM[nd41_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd41_NOTIF_SEQ_NO_IN1_PIRXM[nd41_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
1004 nd41_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
1005 if (nd41_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
1006 for (var nd41_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd41_NOTIF_SEQ_NO_IN1_PIRXK < nd41_NOTIF_SEQ_NO_IN1_PIRXM.length; nd41_NOTIF_SEQ_NO_IN1_PIRXK++) {
1007 if (nd41_NOTIF_SEQ_NO_IN1_PIRXM[nd41_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd41_NOTIF_SEQ_NO_IN1_PIR.seq = nd41_NOTIF_SEQ_NO_IN1_PIRXM[nd41_NOTIF_SEQ_NO_IN1_PIRXK].value; nd41_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
1008 }
1009 }
1010 }
1011 }
1012 }
1013 }
1014 }
1015 var nd41_NOTIF_SEQ_NO_IN1_PIRReq = nd41_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd41_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
1016 // 步骤 41:SEQ10-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
1017 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1018 var sdCla41 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1019 // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
1020 var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", nd41_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
1021 bind.checkData("S41-C1 SW", "9000", s41.sw);
1022 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s41.cmd, profileAidSession);
1023 var ns41W = BindEs10xSingleRequest.parseBerTlv(s41.resp);
1024 var ns41Ok0 = ns41W.length === 1 && ns41W[0].tag === "BF30";
1025 var ns41In = ns41Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns41W[0].value) : [];
1026 var ns41Code = (ns41In.length === 1 && ns41In[0].tag === "80") ? ns41In[0].value : "absent";
1027 bind.checkData("S41-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus", "01", ns41Code);
1028
1029 // 步骤 42:SEQ10-2] MTD_STORE_DATA(tc_step)
1030 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1031 var sdCla42 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1032 var s42 = bind.sendApdu(sdCla42, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1033 bind.checkData("S42-C1 SW", "9000", s42.sw);
1034 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1035 var lw42T = BindEs10xSingleRequest.parseBerTlv(s42.resp);
1036 var lw42Ok0 = lw42T.length === 1 && lw42T[0].tag === "BF28";
1037 var lw42_br = lw42Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw42T[0].value) : [];
1038 var lw42_brtag = lw42_br.length === 1 ? lw42_br[0].tag : "";
1039 var lw42_els = lw42_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw42_br[0].value) : [];
1040 bind.checkData("S42-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count", "1", (lw42_brtag === "A0" && lw42_els.length === 1) ? "1" : "0");
1041
1042 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
1043 var nd43_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
1044 var nd43_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
1045 if (nd43_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd43_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
1046 var nd43_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd43_NOTIF_SEQ_NO_IN1_PIRT[0].value);
1047 if (nd43_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd43_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
1048 var nd43_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd43_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
1049 var nd43_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
1050 for (var nd43_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd43_NOTIF_SEQ_NO_IN1_PIRXI < nd43_NOTIF_SEQ_NO_IN1_PIRX2.length; nd43_NOTIF_SEQ_NO_IN1_PIRXI++) {
1051 if (nd43_NOTIF_SEQ_NO_IN1_PIRX2[nd43_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
1052 var nd43_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd43_NOTIF_SEQ_NO_IN1_PIRX2[nd43_NOTIF_SEQ_NO_IN1_PIRXI].value);
1053 for (var nd43_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd43_NOTIF_SEQ_NO_IN1_PIRXJ < nd43_NOTIF_SEQ_NO_IN1_PIRXM.length; nd43_NOTIF_SEQ_NO_IN1_PIRXJ++) {
1054 if (nd43_NOTIF_SEQ_NO_IN1_PIRXM[nd43_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd43_NOTIF_SEQ_NO_IN1_PIRXM[nd43_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
1055 nd43_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
1056 if (nd43_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
1057 for (var nd43_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd43_NOTIF_SEQ_NO_IN1_PIRXK < nd43_NOTIF_SEQ_NO_IN1_PIRXM.length; nd43_NOTIF_SEQ_NO_IN1_PIRXK++) {
1058 if (nd43_NOTIF_SEQ_NO_IN1_PIRXM[nd43_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd43_NOTIF_SEQ_NO_IN1_PIR.seq = nd43_NOTIF_SEQ_NO_IN1_PIRXM[nd43_NOTIF_SEQ_NO_IN1_PIRXK].value; nd43_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
1059 }
1060 }
1061 }
1062 }
1063 }
1064 }
1065 }
1066 var nd43_NOTIF_SEQ_NO_IN1_PIRReq = nd43_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd43_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
1067 // 步骤 43:SEQ10-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
1068 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1069 var sdCla43 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1070 // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
1071 var s43 = bind.sendApdu(sdCla43, "E2", "91", "00", nd43_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
1072 bind.checkData("S43-C1 SW", "9000", s43.sw);
1073 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s43.cmd, profileAidSession);
1074 var ns43W = BindEs10xSingleRequest.parseBerTlv(s43.resp);
1075 var ns43Ok0 = ns43W.length === 1 && ns43W[0].tag === "BF30";
1076 var ns43In = ns43Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns43W[0].value) : [];
1077 var ns43Code = (ns43In.length === 1 && ns43In[0].tag === "80") ? ns43In[0].value : "absent";
1078 bind.checkData("S43-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus", "01", ns43Code);
1079
1080 // 步骤 44:SEQ10-4] MTD_STORE_DATA(tc_step)
1081 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1082 var sdCla44 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1083 var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1084 bind.checkData("S44-C1 SW", "9000", s44.sw);
1085 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1086 var lw44T = BindEs10xSingleRequest.parseBerTlv(s44.resp);
1087 var lw44Ok0 = lw44T.length === 1 && lw44T[0].tag === "BF28";
1088 var lw44_br = lw44Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw44T[0].value) : [];
1089 var lw44_brtag = lw44_br.length === 1 ? lw44_br[0].tag : "";
1090 var lw44_els = lw44_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw44_br[0].value) : [];
1091 bind.checkData("S44-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count", "1", (lw44_brtag === "A0" && lw44_els.length === 1) ? "1" : "0");
1092
1093 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
1094 var nd45_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
1095 var nd45_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
1096 if (nd45_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd45_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
1097 var nd45_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd45_NOTIF_SEQ_NO_IN1_PIRT[0].value);
1098 if (nd45_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd45_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
1099 var nd45_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd45_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
1100 var nd45_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
1101 for (var nd45_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd45_NOTIF_SEQ_NO_IN1_PIRXI < nd45_NOTIF_SEQ_NO_IN1_PIRX2.length; nd45_NOTIF_SEQ_NO_IN1_PIRXI++) {
1102 if (nd45_NOTIF_SEQ_NO_IN1_PIRX2[nd45_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
1103 var nd45_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd45_NOTIF_SEQ_NO_IN1_PIRX2[nd45_NOTIF_SEQ_NO_IN1_PIRXI].value);
1104 for (var nd45_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd45_NOTIF_SEQ_NO_IN1_PIRXJ < nd45_NOTIF_SEQ_NO_IN1_PIRXM.length; nd45_NOTIF_SEQ_NO_IN1_PIRXJ++) {
1105 if (nd45_NOTIF_SEQ_NO_IN1_PIRXM[nd45_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd45_NOTIF_SEQ_NO_IN1_PIRXM[nd45_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
1106 nd45_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
1107 if (nd45_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
1108 for (var nd45_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd45_NOTIF_SEQ_NO_IN1_PIRXK < nd45_NOTIF_SEQ_NO_IN1_PIRXM.length; nd45_NOTIF_SEQ_NO_IN1_PIRXK++) {
1109 if (nd45_NOTIF_SEQ_NO_IN1_PIRXM[nd45_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd45_NOTIF_SEQ_NO_IN1_PIR.seq = nd45_NOTIF_SEQ_NO_IN1_PIRXM[nd45_NOTIF_SEQ_NO_IN1_PIRXK].value; nd45_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
1110 }
1111 }
1112 }
1113 }
1114 }
1115 }
1116 }
1117 var nd45_NOTIF_SEQ_NO_IN1_PIRReq = nd45_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd45_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
1118 // 步骤 45:SEQ10-5] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
1119 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1120 var sdCla45 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1121 // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
1122 var s45 = bind.sendApdu(sdCla45, "E2", "91", "00", nd45_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
1123 bind.checkData("S45-C1 SW", "9000", s45.sw);
1124 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s45.cmd, profileAidSession);
1125 var ns45W = BindEs10xSingleRequest.parseBerTlv(s45.resp);
1126 var ns45Ok0 = ns45W.length === 1 && ns45W[0].tag === "BF30";
1127 var ns45In = ns45Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns45W[0].value) : [];
1128 var ns45Code = (ns45In.length === 1 && ns45In[0].tag === "80") ? ns45In[0].value : "absent";
1129 bind.checkData("S45-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns45Code);
1130
1131 // 步骤 46:SEQ10-6] MTD_STORE_DATA(tc_step)
1132 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1133 var sdCla46 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1134 var s46 = bind.sendApdu(sdCla46, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1135 bind.checkData("S46-C1 SW", "9000", s46.sw);
1136 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1137 var lw46T = BindEs10xSingleRequest.parseBerTlv(s46.resp);
1138 var lw46Ok0 = lw46T.length === 1 && lw46T[0].tag === "BF28";
1139 var lw46_br = lw46Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw46T[0].value) : [];
1140 var lw46_brtag = lw46_br.length === 1 ? lw46_br[0].tag : "";
1141 var lw46_els = lw46_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw46_br[0].value) : [];
1142 bind.checkData("S46-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw46_brtag === "A0" && lw46_els.length === 0) ? "1" : "0");
1143
1144 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
1145 var nd47_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
1146 var nd47_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
1147 if (nd47_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd47_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
1148 var nd47_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd47_NOTIF_SEQ_NO_IN1_PIRT[0].value);
1149 if (nd47_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd47_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
1150 var nd47_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd47_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
1151 var nd47_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
1152 for (var nd47_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd47_NOTIF_SEQ_NO_IN1_PIRXI < nd47_NOTIF_SEQ_NO_IN1_PIRX2.length; nd47_NOTIF_SEQ_NO_IN1_PIRXI++) {
1153 if (nd47_NOTIF_SEQ_NO_IN1_PIRX2[nd47_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
1154 var nd47_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd47_NOTIF_SEQ_NO_IN1_PIRX2[nd47_NOTIF_SEQ_NO_IN1_PIRXI].value);
1155 for (var nd47_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd47_NOTIF_SEQ_NO_IN1_PIRXJ < nd47_NOTIF_SEQ_NO_IN1_PIRXM.length; nd47_NOTIF_SEQ_NO_IN1_PIRXJ++) {
1156 if (nd47_NOTIF_SEQ_NO_IN1_PIRXM[nd47_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd47_NOTIF_SEQ_NO_IN1_PIRXM[nd47_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
1157 nd47_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
1158 if (nd47_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
1159 for (var nd47_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd47_NOTIF_SEQ_NO_IN1_PIRXK < nd47_NOTIF_SEQ_NO_IN1_PIRXM.length; nd47_NOTIF_SEQ_NO_IN1_PIRXK++) {
1160 if (nd47_NOTIF_SEQ_NO_IN1_PIRXM[nd47_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd47_NOTIF_SEQ_NO_IN1_PIR.seq = nd47_NOTIF_SEQ_NO_IN1_PIRXM[nd47_NOTIF_SEQ_NO_IN1_PIRXK].value; nd47_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
1161 }
1162 }
1163 }
1164 }
1165 }
1166 }
1167 }
1168 var nd47_NOTIF_SEQ_NO_IN1_PIRReq = nd47_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd47_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
1169 // 步骤 47:SEQ10-7] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
1170 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1171 var sdCla47 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1172 // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
1173 var s47 = bind.sendApdu(sdCla47, "E2", "91", "00", nd47_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
1174 bind.checkData("S47-C1 SW", "9000", s47.sw);
1175 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s47.cmd, profileAidSession);
1176 var ns47W = BindEs10xSingleRequest.parseBerTlv(s47.resp);
1177 var ns47Ok0 = ns47W.length === 1 && ns47W[0].tag === "BF30";
1178 var ns47In = ns47Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns47W[0].value) : [];
1179 var ns47Code = (ns47In.length === 1 && ns47In[0].tag === "80") ? ns47In[0].value : "absent";
1180 bind.checkData("S47-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus", "01", ns47Code);
1181
1182 // 步骤 48:SEQ10-8] MTD_STORE_DATA(tc_step)
1183 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1184 var sdCla48 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1185 var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1186 bind.checkData("S48-C1 SW", "9000", s48.sw);
1187 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1188 var lw48T = BindEs10xSingleRequest.parseBerTlv(s48.resp);
1189 var lw48Ok0 = lw48T.length === 1 && lw48T[0].tag === "BF28";
1190 var lw48_br = lw48Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw48T[0].value) : [];
1191 var lw48_brtag = lw48_br.length === 1 ? lw48_br[0].tag : "";
1192 var lw48_els = lw48_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw48_br[0].value) : [];
1193 bind.checkData("S48-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw48_brtag === "A0" && lw48_els.length === 0) ? "1" : "0");
1194
1195 // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
1196 var nd49_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
1197 var nd49_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
1198 if (nd49_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd49_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
1199 var nd49_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd49_NOTIF_SEQ_NO_IN1_PIRT[0].value);
1200 if (nd49_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd49_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
1201 var nd49_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd49_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
1202 var nd49_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
1203 for (var nd49_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd49_NOTIF_SEQ_NO_IN1_PIRXI < nd49_NOTIF_SEQ_NO_IN1_PIRX2.length; nd49_NOTIF_SEQ_NO_IN1_PIRXI++) {
1204 if (nd49_NOTIF_SEQ_NO_IN1_PIRX2[nd49_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
1205 var nd49_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd49_NOTIF_SEQ_NO_IN1_PIRX2[nd49_NOTIF_SEQ_NO_IN1_PIRXI].value);
1206 for (var nd49_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd49_NOTIF_SEQ_NO_IN1_PIRXJ < nd49_NOTIF_SEQ_NO_IN1_PIRXM.length; nd49_NOTIF_SEQ_NO_IN1_PIRXJ++) {
1207 if (nd49_NOTIF_SEQ_NO_IN1_PIRXM[nd49_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd49_NOTIF_SEQ_NO_IN1_PIRXM[nd49_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
1208 nd49_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
1209 if (nd49_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
1210 for (var nd49_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd49_NOTIF_SEQ_NO_IN1_PIRXK < nd49_NOTIF_SEQ_NO_IN1_PIRXM.length; nd49_NOTIF_SEQ_NO_IN1_PIRXK++) {
1211 if (nd49_NOTIF_SEQ_NO_IN1_PIRXM[nd49_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd49_NOTIF_SEQ_NO_IN1_PIR.seq = nd49_NOTIF_SEQ_NO_IN1_PIRXM[nd49_NOTIF_SEQ_NO_IN1_PIRXK].value; nd49_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
1212 }
1213 }
1214 }
1215 }
1216 }
1217 }
1218 }
1219 var nd49_NOTIF_SEQ_NO_IN1_PIRReq = nd49_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd49_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
1220 // 步骤 49:SEQ10-9] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
1221 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1222 var sdCla49 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1223 // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
1224 var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", nd49_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
1225 bind.checkData("S49-C1 SW", "9000", s49.sw);
1226 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s49.cmd, profileAidSession);
1227 var ns49W = BindEs10xSingleRequest.parseBerTlv(s49.resp);
1228 var ns49Ok0 = ns49W.length === 1 && ns49W[0].tag === "BF30";
1229 var ns49In = ns49Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns49W[0].value) : [];
1230 var ns49Code = (ns49In.length === 1 && ns49In[0].tag === "80") ? ns49In[0].value : "absent";
1231 bind.checkData("S49-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus", "01", ns49Code);
1232
1233 // 步骤 50:SEQ10-10] MTD_STORE_DATA(tc_step)
1234 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1235 var sdCla50 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
1236 var s50 = bind.sendApdu(sdCla50, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1237 bind.checkData("S50-C1 SW", "9000", s50.sw);
1238 // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1239 var lw50T = BindEs10xSingleRequest.parseBerTlv(s50.resp);
1240 var lw50Ok0 = lw50T.length === 1 && lw50T[0].tag === "BF28";
1241 var lw50_br = lw50Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw50T[0].value) : [];
1242 var lw50_brtag = lw50_br.length === 1 ? lw50_br[0].tag : "";
1243 var lw50_els = lw50_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw50_br[0].value) : [];
1244 bind.checkData("S50-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw50_brtag === "A0" && lw50_els.length === 0) ? "1" : "0");
1245}
1246
完整 unified diff
行级差异:新增 1244 行 / 删除 668 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(1917 行)
--- -man
+++ -cas
@@ -1,670 +1,1246 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10b_RemoveNotificationFromList_01_Nominal_Install_Notification + TC_eUICC_ES10b_RemoveNotificationFromList_02_Nominal_Enable_Notification + TC_eUICC_ES10b_RemoveNotificationFromList_03_Nominal_Disable_Notification + TC_eUICC_ES10b_RemoveNotificationFromList_04_Nominal_Delete_Notification + TC_eUICC_ES10b_RemoveNotificationFromList_05_Nominal_Two_Install_PIR_Notifications_with_different_Notification_Addresses + TC_eUICC_ES10b_RemoveNotificationFromList_06_Nominal_Install_PIR_and_Enable_Notifications + TC_eUICC_ES10b_RemoveNotificationFromList_07_Nominal_Disable_and_Delete_Notifications + TC_eUICC_ES10b_RemoveNotificationFromList_08_Nominal_Install_OtherSignedNotification_and_Enable_Notifications + TC_eUICC_ES10b_RemoveNotificationFromList_09_Nominal_Enable_and_Install_PIR_notifications + TC_eUICC_ES10b_RemoveNotificationFromList_10_Nominal_Removing_Sequence_Numbers_that_are_not_present + Install_PROFILE_OPERATIONAL1_Do_not_remove_both_the_notifications (extracted verbatim)
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_01_Nominal_Install_Notification()
-{
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_Do_not_remove_both_the_notifications();
-
- tracenamestr = "01 Nominal: 删除安装通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行RetrieveNotificationsList;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_02_Nominal_Enable_Notification()
-{
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
- Enable_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
-
- tracenamestr = "02 Nominal: 删除激活profile通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行RetrieveNotificationsList;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
- Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_03_Nominal_Disable_Notification()
-{
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
- Enable_PROFILE_OPERATIONAL1_Remove_the_Notification();
- Disable_PROFILE_OPERATIONAL1_Do_not_Remove_the_Notification();
-
- tracenamestr = "03 Nominal: 删除去激活profile通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行RetrieveNotificationsList;");
- curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_04_Nominal_Delete_Notification()
-{
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
- Enable_PROFILE_OPERATIONAL1_Remove_the_Notification();
- Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
- Delete_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
-
- tracenamestr = "04 Nominal: 删除删除profile通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行RetrieveNotificationsList;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_05_Nominal_Two_Install_PIR_Notifications_with_different_Notification_Addresses()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C025"))
- return;
-
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_with_METADATA_OP_PROF1_NO_INSTALL_Do_not_remove_the_Notification();
- Install_PROFILE_OPERATIONAL2_with_METADATA_OP_PROF2_NO_INSTALL_Do_not_remove_the_Notification();
-
- tracenamestr = "05 Nominal: 删除两个具有不同通知地址的安装通知(PIR)";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
-
- Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
- Delete_PROFILE_OPERATIONAL2_Remove_the_Notification();
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_06_Nominal_Install_PIR_and_Enable_Notifications()
-{
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_with_METADATA_OP_PROF1_NO_INSTALL_Do_not_remove_the_Notification();
- Enable_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
-
- tracenamestr = "06 Nominal: 删除安装(PIR)和激活profile通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
-
- Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
- Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_07_Nominal_Disable_and_Delete_Notifications()
-{
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
- Enable_PROFILE_OPERATIONAL1_Remove_the_Notification();
- Disable_PROFILE_OPERATIONAL1_Do_not_Remove_the_Notification();
- Delete_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
-
- tracenamestr = "07 Nominal: 删除去激活和删除profile通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-
- curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_08_Nominal_Install_OtherSignedNotification_and_Enable_Notifications()
-{
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_Remove_the_PIR_notification_but_do_not_remove_the_OtherSignedNotification();
- Enable_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
-
- tracenamestr = "08 Nominal: 删除安装(OtherSignedNotification)和激活profile通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
- Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
-
- try
- {
- var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
- if(Max_seqNumber_Of_Notification == seqNumber)
- {
- curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-
- curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
- }
- else
- {
- curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-
- curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
- }
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = EnCodeInteger_Ber(Max_seqNumber_Of_Notification-1);
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- Disable_PROFILE_OPERATIONAL1_Do_not_Remove_the_Notification();
- Delete_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_09_Nominal_Enable_and_Install_PIR_notifications()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_Remove_both_the_Notifications();
- Enable_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
- Install_PROFILE_OPERATIONAL2_with_METADATA_OP_PROF2_NO_INSTALL_Do_not_remove_the_Notification();
-
-
- tracenamestr = "09 Nominal: 删除激活profile和安装(PIR)通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- Disable_PROFILE_OPERATIONAL1_Do_not_Remove_the_Notification();
- Delete_PROFILE_OPERATIONAL1_Do_not_remove_the_Notification();
- Delete_PROFILE_OPERATIONAL2_Remove_the_Notification();
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_RemoveNotificationFromList_10_Nominal_Removing_Sequence_Numbers_that_are_not_present ()
-{
- Remove_All_the_Notification();
- Install_PROFILE_OPERATIONAL1_with_METADATA_OP_PROF1_NO_INSTALL_Do_not_remove_the_Notification();
-
- tracenamestr = "10 Nominal: 删除通知,指定的序列号不存在";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- curDis.OutlengStr(PROFILE_OPERATIONAL1_DATA,"PROFILE_OPERATIONAL1_DATA");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
- parameter = EnCodeInteger_Ber(parseInt(parameter,16)+1);
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("01", deleteNotificationStatus, "deleteNotificationStatus");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
-
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
- }catch(e){
- obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
- }
-
-
- Delete_PROFILE_OPERATIONAL1_Remove_the_Notification();
- RecoverCard();
-}
-
-function Install_PROFILE_OPERATIONAL1_Do_not_remove_both_the_notifications()
-{
- Remove_All_the_Notification();
-
- curLogicChannel = 0;
-
- tracenamestr = "Install PROFILE_OPERATIONAL1. Do not remove both the notifications.";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
- Profile_load_procedure.iconType = "01";
- Profile_load_procedure.icon = ICON_OP_PROF1;
- Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
+// Author: 卡思Cas智能体
+// Date: 20261004-141736
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10b.RemoveNotificationFromList,Test Sequence #01-#10 Nominal (all 10 sequences),适用性 M。
+// Test points: ICH-SEQ01-IC1-K1-C1 ATR_present;ICH-SEQ01-IC1-K2-C2 FCP_Template
+// ICH-SEQ01-IC1-K2-C4 SW;ICH-SEQ01-IC1-K3-C4 SW;ICH-SEQ01-IC1-K4-C4 final SW
+// ICH-SEQ01-IC2-K1-C4 SW;ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted;ICH-SEQ01-IC2-K2-C4 SW
+// S1-C1 SW;S1-C2 响应结构匹配 #R_LIST_NOTIF_IN1_IN1_PIR:ListNotificationResponse no branch/count
+// S2-C1 SW;S2-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S3-C1 SW
+// S3-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count;S4-C1 SW
+// S4-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S5-C1 SW
+// S5-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S6-C1 SW
+// S6-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count;S7-C1 SW
+// S7-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S8-C1 SW
+// S8-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S9-C1 SW
+// S9-C2 响应结构匹配 #R_LIST_NOTIF_DI1:ListNotificationResponse notificati branch/count;S10-C1 SW
+// S10-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S11-C1 SW
+// S11-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S12-C1 SW
+// S12-C2 响应结构匹配 #R_LIST_NOTIF_DE1:ListNotificationResponse notificati branch/count;S13-C1 SW
+// S13-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S14-C1 SW
+// S14-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S15-C1 SW
+// S15-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:ListNotificationRespons branch/count;S16-C1 SW
+// S16-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S17-C1 SW
+// S17-C2 响应结构匹配 #R_LIST_NOTIF_IN2_PIR:ListNotificationResponse notifi branch/count;S18-C1 SW
+// S18-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S19-C1 SW
+// S19-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S20-C1 SW
+// S20-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR_EN1:ListNotificationResponse no branch/count;S21-C1 SW
+// S21-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S22-C1 SW
+// S22-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count;S23-C1 SW
+// S23-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S24-C1 SW
+// S24-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S25-C1 SW
+// S25-C2 响应结构匹配 #R_LIST_NOTIF_DI1_DE1:ListNotificationResponse notifi branch/count;S26-C1 SW
+// S26-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S27-C1 SW
+// S27-C2 响应结构匹配 #R_LIST_NOTIF_DE1:ListNotificationResponse notificati branch/count;S28-C1 SW
+// S28-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S29-C1 SW
+// S29-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S30-C1 SW
+// S30-C2 响应结构匹配 #R_LIST_NOTIF_IN1_EN1:ListNotificationResponse notifi branch/count;S31-C1 SW
+// S31-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S32-C1 SW
+// S32-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count;S33-C1 SW
+// S33-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S34-C1 SW
+// S34-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S35-C1 SW
+// S35-C2 响应结构匹配 #R_LIST_NOTIF_EN1_IN2_PIR:ListNotificationResponse no branch/count;S36-C1 SW
+// S36-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S37-C1 SW
+// S37-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count;S38-C1 SW
+// S38-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S39-C1 SW
+// S39-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S40-C1 SW
+// S40-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count;S41-C1 SW
+// S41-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus;S42-C1 SW
+// S42-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count;S43-C1 SW
+// S43-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus;S44-C1 SW
+// S44-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count;S45-C1 SW
+// S45-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus;S46-C1 SW
+// S46-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S47-C1 SW
+// S47-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus;S48-C1 SW
+// S48-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count;S49-C1 SW
+// S49-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus;S50-C1 SW
+// S50-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count
+// 本函数由 CaseIR 4.2.16.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA2,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 M:编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10b_RemoveNotificationFromList_01_10_Nominal_all_10_sequences() {
+ var bind = curBind;
+ var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10b_RemoveNotificationFromList_01_10_Nominal_all_10_sequences");
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s51 = bind.resetAndAtr();
+ bind.checkData("ICH-SEQ01-IC1-K1-C1 ATR_present", "1", s51.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 s52 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("ICH-SEQ01-IC1-K2-C2 FCP_Template", "1", s52.resp.length > 0 ? "1" : "0");
+ bind.checkData("ICH-SEQ01-IC1-K2-C4 SW", "9000", s52.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s53 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("ICH-SEQ01-IC1-K3-C4 SW", "9000", s53.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady54 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("ICH-SEQ01-IC1-K4-C4 final SW", "9000", steady54.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 s55 = bind.manageChannelOpen("9000");
+ bind.checkData("ICH-SEQ01-IC2-K1-C4 SW", "9000", s55.sw);
+ bind.checkData("ICH-SEQ01-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s55.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 s56 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("ICH-SEQ01-IC2-K2-C4 SW", "9000", s56.sw);
+
+ // 步骤 1:SEQ01-IC4] 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 sdCla1 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s1 = bind.sendApdu(sdCla1, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S1-C1 SW", "9000", s1.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw1T = BindEs10xSingleRequest.parseBerTlv(s1.resp);
+ var lw1Ok0 = lw1T.length === 1 && lw1T[0].tag === "BF28";
+ var lw1_br = lw1Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw1T[0].value) : [];
+ var lw1_brtag = lw1_br.length === 1 ? lw1_br[0].tag : "";
+ var lw1_els = lw1_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw1_br[0].value) : [];
+ bind.checkData("S1-C2 响应结构匹配 #R_LIST_NOTIF_IN1_IN1_PIR:ListNotificationResponse no branch/count", "1", (lw1_brtag === "A0" && lw1_els.length === 2) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1 ← 步 1 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd2_NOTIF_SEQ_NO_IN1 = {ok: false, seq: ""};
+ var nd2_NOTIF_SEQ_NO_IN1T = BindEs10xSingleRequest.parseBerTlv(s1.resp);
+ if (nd2_NOTIF_SEQ_NO_IN1T.length === 1 && nd2_NOTIF_SEQ_NO_IN1T[0].tag === "BF28") {
+ var nd2_NOTIF_SEQ_NO_IN1X1 = BindEs10xSingleRequest.parseBerTlv(nd2_NOTIF_SEQ_NO_IN1T[0].value);
+ if (nd2_NOTIF_SEQ_NO_IN1X1.length === 1 && nd2_NOTIF_SEQ_NO_IN1X1[0].tag === "A0") {
+ var nd2_NOTIF_SEQ_NO_IN1X2 = BindEs10xSingleRequest.parseBerTlv(nd2_NOTIF_SEQ_NO_IN1X1[0].value);
+ var nd2_NOTIF_SEQ_NO_IN1XHIT = 0;
+ for (var nd2_NOTIF_SEQ_NO_IN1XI = 0; nd2_NOTIF_SEQ_NO_IN1XI < nd2_NOTIF_SEQ_NO_IN1X2.length; nd2_NOTIF_SEQ_NO_IN1XI++) {
+ if (nd2_NOTIF_SEQ_NO_IN1X2[nd2_NOTIF_SEQ_NO_IN1XI].tag !== "BF2F") { continue; }
+ var nd2_NOTIF_SEQ_NO_IN1XM = BindEs10xSingleRequest.parseBerTlv(nd2_NOTIF_SEQ_NO_IN1X2[nd2_NOTIF_SEQ_NO_IN1XI].value);
+ for (var nd2_NOTIF_SEQ_NO_IN1XJ = 0; nd2_NOTIF_SEQ_NO_IN1XJ < nd2_NOTIF_SEQ_NO_IN1XM.length; nd2_NOTIF_SEQ_NO_IN1XJ++) {
+ if (nd2_NOTIF_SEQ_NO_IN1XM[nd2_NOTIF_SEQ_NO_IN1XJ].tag === "81" && nd2_NOTIF_SEQ_NO_IN1XM[nd2_NOTIF_SEQ_NO_IN1XJ].value === "80") {
+ nd2_NOTIF_SEQ_NO_IN1XHIT += 1;
+ if (nd2_NOTIF_SEQ_NO_IN1XHIT === 1) {
+ for (var nd2_NOTIF_SEQ_NO_IN1XK = 0; nd2_NOTIF_SEQ_NO_IN1XK < nd2_NOTIF_SEQ_NO_IN1XM.length; nd2_NOTIF_SEQ_NO_IN1XK++) {
+ if (nd2_NOTIF_SEQ_NO_IN1XM[nd2_NOTIF_SEQ_NO_IN1XK].tag === "80") { nd2_NOTIF_SEQ_NO_IN1.seq = nd2_NOTIF_SEQ_NO_IN1XM[nd2_NOTIF_SEQ_NO_IN1XK].value; nd2_NOTIF_SEQ_NO_IN1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd2_NOTIF_SEQ_NO_IN1Req = nd2_NOTIF_SEQ_NO_IN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd2_NOTIF_SEQ_NO_IN1.seq)) : "";
+ // 步骤 2:SEQ01-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla2 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1 stays in execution domain
+ var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", nd2_NOTIF_SEQ_NO_IN1Req, "00", "9000");
+ bind.checkData("S2-C1 SW", "9000", s2.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1", s2.cmd, profileAidSession);
+ var ns2W = BindEs10xSingleRequest.parseBerTlv(s2.resp);
+ var ns2Ok0 = ns2W.length === 1 && ns2W[0].tag === "BF30";
+ var ns2In = ns2Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns2W[0].value) : [];
+ var ns2Code = (ns2In.length === 1 && ns2In[0].tag === "80") ? ns2In[0].value : "absent";
+ bind.checkData("S2-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns2Code);
+
+ // 步骤 3:SEQ01-2] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla3 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S3-C1 SW", "9000", s3.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw3T = BindEs10xSingleRequest.parseBerTlv(s3.resp);
+ var lw3Ok0 = lw3T.length === 1 && lw3T[0].tag === "BF28";
+ var lw3_br = lw3Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw3T[0].value) : [];
+ var lw3_brtag = lw3_br.length === 1 ? lw3_br[0].tag : "";
+ var lw3_els = lw3_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw3_br[0].value) : [];
+ bind.checkData("S3-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count", "1", (lw3_brtag === "A0" && lw3_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 1 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd4_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
+ var nd4_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s1.resp);
+ if (nd4_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd4_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
+ var nd4_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd4_NOTIF_SEQ_NO_IN1_PIRT[0].value);
+ if (nd4_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd4_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
+ var nd4_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd4_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
+ var nd4_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
+ for (var nd4_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd4_NOTIF_SEQ_NO_IN1_PIRXI < nd4_NOTIF_SEQ_NO_IN1_PIRX2.length; nd4_NOTIF_SEQ_NO_IN1_PIRXI++) {
+ if (nd4_NOTIF_SEQ_NO_IN1_PIRX2[nd4_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
+ var nd4_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd4_NOTIF_SEQ_NO_IN1_PIRX2[nd4_NOTIF_SEQ_NO_IN1_PIRXI].value);
+ for (var nd4_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd4_NOTIF_SEQ_NO_IN1_PIRXJ < nd4_NOTIF_SEQ_NO_IN1_PIRXM.length; nd4_NOTIF_SEQ_NO_IN1_PIRXJ++) {
+ if (nd4_NOTIF_SEQ_NO_IN1_PIRXM[nd4_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd4_NOTIF_SEQ_NO_IN1_PIRXM[nd4_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
+ nd4_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
+ if (nd4_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
+ for (var nd4_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd4_NOTIF_SEQ_NO_IN1_PIRXK < nd4_NOTIF_SEQ_NO_IN1_PIRXM.length; nd4_NOTIF_SEQ_NO_IN1_PIRXK++) {
+ if (nd4_NOTIF_SEQ_NO_IN1_PIRXM[nd4_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd4_NOTIF_SEQ_NO_IN1_PIR.seq = nd4_NOTIF_SEQ_NO_IN1_PIRXM[nd4_NOTIF_SEQ_NO_IN1_PIRXK].value; nd4_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd4_NOTIF_SEQ_NO_IN1_PIRReq = nd4_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd4_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
+ // 步骤 4:SEQ01-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla4 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
+ var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", nd4_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
+ bind.checkData("S4-C1 SW", "9000", s4.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s4.cmd, profileAidSession);
+ var ns4W = BindEs10xSingleRequest.parseBerTlv(s4.resp);
+ var ns4Ok0 = ns4W.length === 1 && ns4W[0].tag === "BF30";
+ var ns4In = ns4Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns4W[0].value) : [];
+ var ns4Code = (ns4In.length === 1 && ns4In[0].tag === "80") ? ns4In[0].value : "absent";
+ bind.checkData("S4-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns4Code);
+
+ // 步骤 5:SEQ01-4] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla5 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S5-C1 SW", "9000", s5.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw5T = BindEs10xSingleRequest.parseBerTlv(s5.resp);
+ var lw5Ok0 = lw5T.length === 1 && lw5T[0].tag === "BF28";
+ var lw5_br = lw5Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw5T[0].value) : [];
+ var lw5_brtag = lw5_br.length === 1 ? lw5_br[0].tag : "";
+ var lw5_els = lw5_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw5_br[0].value) : [];
+ bind.checkData("S5-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw5_brtag === "A0" && lw5_els.length === 0) ? "1" : "0");
+
+ // 步骤 6:SEQ02-IC5] 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 sdCla6 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s6 = bind.sendApdu(sdCla6, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S6-C1 SW", "9000", s6.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw6T = BindEs10xSingleRequest.parseBerTlv(s6.resp);
+ var lw6Ok0 = lw6T.length === 1 && lw6T[0].tag === "BF28";
+ var lw6_br = lw6Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw6T[0].value) : [];
+ var lw6_brtag = lw6_br.length === 1 ? lw6_br[0].tag : "";
+ var lw6_els = lw6_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw6_br[0].value) : [];
+ bind.checkData("S6-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count", "1", (lw6_brtag === "A0" && lw6_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_EN1 ← 步 6 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=40 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd7_NOTIF_SEQ_NO_EN1 = {ok: false, seq: ""};
+ var nd7_NOTIF_SEQ_NO_EN1T = BindEs10xSingleRequest.parseBerTlv(s6.resp);
+ if (nd7_NOTIF_SEQ_NO_EN1T.length === 1 && nd7_NOTIF_SEQ_NO_EN1T[0].tag === "BF28") {
+ var nd7_NOTIF_SEQ_NO_EN1X1 = BindEs10xSingleRequest.parseBerTlv(nd7_NOTIF_SEQ_NO_EN1T[0].value);
+ if (nd7_NOTIF_SEQ_NO_EN1X1.length === 1 && nd7_NOTIF_SEQ_NO_EN1X1[0].tag === "A0") {
+ var nd7_NOTIF_SEQ_NO_EN1X2 = BindEs10xSingleRequest.parseBerTlv(nd7_NOTIF_SEQ_NO_EN1X1[0].value);
+ var nd7_NOTIF_SEQ_NO_EN1XHIT = 0;
+ for (var nd7_NOTIF_SEQ_NO_EN1XI = 0; nd7_NOTIF_SEQ_NO_EN1XI < nd7_NOTIF_SEQ_NO_EN1X2.length; nd7_NOTIF_SEQ_NO_EN1XI++) {
+ if (nd7_NOTIF_SEQ_NO_EN1X2[nd7_NOTIF_SEQ_NO_EN1XI].tag !== "BF2F") { continue; }
+ var nd7_NOTIF_SEQ_NO_EN1XM = BindEs10xSingleRequest.parseBerTlv(nd7_NOTIF_SEQ_NO_EN1X2[nd7_NOTIF_SEQ_NO_EN1XI].value);
+ for (var nd7_NOTIF_SEQ_NO_EN1XJ = 0; nd7_NOTIF_SEQ_NO_EN1XJ < nd7_NOTIF_SEQ_NO_EN1XM.length; nd7_NOTIF_SEQ_NO_EN1XJ++) {
+ if (nd7_NOTIF_SEQ_NO_EN1XM[nd7_NOTIF_SEQ_NO_EN1XJ].tag === "81" && nd7_NOTIF_SEQ_NO_EN1XM[nd7_NOTIF_SEQ_NO_EN1XJ].value === "40") {
+ nd7_NOTIF_SEQ_NO_EN1XHIT += 1;
+ if (nd7_NOTIF_SEQ_NO_EN1XHIT === 1) {
+ for (var nd7_NOTIF_SEQ_NO_EN1XK = 0; nd7_NOTIF_SEQ_NO_EN1XK < nd7_NOTIF_SEQ_NO_EN1XM.length; nd7_NOTIF_SEQ_NO_EN1XK++) {
+ if (nd7_NOTIF_SEQ_NO_EN1XM[nd7_NOTIF_SEQ_NO_EN1XK].tag === "80") { nd7_NOTIF_SEQ_NO_EN1.seq = nd7_NOTIF_SEQ_NO_EN1XM[nd7_NOTIF_SEQ_NO_EN1XK].value; nd7_NOTIF_SEQ_NO_EN1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd7_NOTIF_SEQ_NO_EN1Req = nd7_NOTIF_SEQ_NO_EN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd7_NOTIF_SEQ_NO_EN1.seq)) : "";
+ // 步骤 7:SEQ02-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla7 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_EN1 stays in execution domain
+ var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", nd7_NOTIF_SEQ_NO_EN1Req, "00", "9000");
+ bind.checkData("S7-C1 SW", "9000", s7.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_EN1", s7.cmd, profileAidSession);
+ var ns7W = BindEs10xSingleRequest.parseBerTlv(s7.resp);
+ var ns7Ok0 = ns7W.length === 1 && ns7W[0].tag === "BF30";
+ var ns7In = ns7Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns7W[0].value) : [];
+ var ns7Code = (ns7In.length === 1 && ns7In[0].tag === "80") ? ns7In[0].value : "absent";
+ bind.checkData("S7-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns7Code);
+
+ // 步骤 8:SEQ02-2] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla8 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S8-C1 SW", "9000", s8.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw8T = BindEs10xSingleRequest.parseBerTlv(s8.resp);
+ var lw8Ok0 = lw8T.length === 1 && lw8T[0].tag === "BF28";
+ var lw8_br = lw8Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw8T[0].value) : [];
+ var lw8_brtag = lw8_br.length === 1 ? lw8_br[0].tag : "";
+ var lw8_els = lw8_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw8_br[0].value) : [];
+ bind.checkData("S8-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw8_brtag === "A0" && lw8_els.length === 0) ? "1" : "0");
+
+ // 步骤 9:SEQ03-IC6] 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 sdCla9 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s9 = bind.sendApdu(sdCla9, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S9-C1 SW", "9000", s9.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw9T = BindEs10xSingleRequest.parseBerTlv(s9.resp);
+ var lw9Ok0 = lw9T.length === 1 && lw9T[0].tag === "BF28";
+ var lw9_br = lw9Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw9T[0].value) : [];
+ var lw9_brtag = lw9_br.length === 1 ? lw9_br[0].tag : "";
+ var lw9_els = lw9_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw9_br[0].value) : [];
+ bind.checkData("S9-C2 响应结构匹配 #R_LIST_NOTIF_DI1:ListNotificationResponse notificati branch/count", "1", (lw9_brtag === "A0" && lw9_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_DI1 ← 步 9 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=20 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd10_NOTIF_SEQ_NO_DI1 = {ok: false, seq: ""};
+ var nd10_NOTIF_SEQ_NO_DI1T = BindEs10xSingleRequest.parseBerTlv(s9.resp);
+ if (nd10_NOTIF_SEQ_NO_DI1T.length === 1 && nd10_NOTIF_SEQ_NO_DI1T[0].tag === "BF28") {
+ var nd10_NOTIF_SEQ_NO_DI1X1 = BindEs10xSingleRequest.parseBerTlv(nd10_NOTIF_SEQ_NO_DI1T[0].value);
+ if (nd10_NOTIF_SEQ_NO_DI1X1.length === 1 && nd10_NOTIF_SEQ_NO_DI1X1[0].tag === "A0") {
+ var nd10_NOTIF_SEQ_NO_DI1X2 = BindEs10xSingleRequest.parseBerTlv(nd10_NOTIF_SEQ_NO_DI1X1[0].value);
+ var nd10_NOTIF_SEQ_NO_DI1XHIT = 0;
+ for (var nd10_NOTIF_SEQ_NO_DI1XI = 0; nd10_NOTIF_SEQ_NO_DI1XI < nd10_NOTIF_SEQ_NO_DI1X2.length; nd10_NOTIF_SEQ_NO_DI1XI++) {
+ if (nd10_NOTIF_SEQ_NO_DI1X2[nd10_NOTIF_SEQ_NO_DI1XI].tag !== "BF2F") { continue; }
+ var nd10_NOTIF_SEQ_NO_DI1XM = BindEs10xSingleRequest.parseBerTlv(nd10_NOTIF_SEQ_NO_DI1X2[nd10_NOTIF_SEQ_NO_DI1XI].value);
+ for (var nd10_NOTIF_SEQ_NO_DI1XJ = 0; nd10_NOTIF_SEQ_NO_DI1XJ < nd10_NOTIF_SEQ_NO_DI1XM.length; nd10_NOTIF_SEQ_NO_DI1XJ++) {
+ if (nd10_NOTIF_SEQ_NO_DI1XM[nd10_NOTIF_SEQ_NO_DI1XJ].tag === "81" && nd10_NOTIF_SEQ_NO_DI1XM[nd10_NOTIF_SEQ_NO_DI1XJ].value === "20") {
+ nd10_NOTIF_SEQ_NO_DI1XHIT += 1;
+ if (nd10_NOTIF_SEQ_NO_DI1XHIT === 1) {
+ for (var nd10_NOTIF_SEQ_NO_DI1XK = 0; nd10_NOTIF_SEQ_NO_DI1XK < nd10_NOTIF_SEQ_NO_DI1XM.length; nd10_NOTIF_SEQ_NO_DI1XK++) {
+ if (nd10_NOTIF_SEQ_NO_DI1XM[nd10_NOTIF_SEQ_NO_DI1XK].tag === "80") { nd10_NOTIF_SEQ_NO_DI1.seq = nd10_NOTIF_SEQ_NO_DI1XM[nd10_NOTIF_SEQ_NO_DI1XK].value; nd10_NOTIF_SEQ_NO_DI1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd10_NOTIF_SEQ_NO_DI1Req = nd10_NOTIF_SEQ_NO_DI1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd10_NOTIF_SEQ_NO_DI1.seq)) : "";
+ // 步骤 10:SEQ03-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla10 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_DI1 stays in execution domain
+ var s10 = bind.sendApdu(sdCla10, "E2", "91", "00", nd10_NOTIF_SEQ_NO_DI1Req, "00", "9000");
+ bind.checkData("S10-C1 SW", "9000", s10.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_DI1", s10.cmd, profileAidSession);
+ var ns10W = BindEs10xSingleRequest.parseBerTlv(s10.resp);
+ var ns10Ok0 = ns10W.length === 1 && ns10W[0].tag === "BF30";
+ var ns10In = ns10Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns10W[0].value) : [];
+ var ns10Code = (ns10In.length === 1 && ns10In[0].tag === "80") ? ns10In[0].value : "absent";
+ bind.checkData("S10-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns10Code);
+
+ // 步骤 11:SEQ03-2] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla11 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S11-C1 SW", "9000", s11.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw11T = BindEs10xSingleRequest.parseBerTlv(s11.resp);
+ var lw11Ok0 = lw11T.length === 1 && lw11T[0].tag === "BF28";
+ var lw11_br = lw11Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw11T[0].value) : [];
+ var lw11_brtag = lw11_br.length === 1 ? lw11_br[0].tag : "";
+ var lw11_els = lw11_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw11_br[0].value) : [];
+ bind.checkData("S11-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw11_brtag === "A0" && lw11_els.length === 0) ? "1" : "0");
+
+ // 步骤 12:SEQ04-IC7] 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 sdCla12 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S12-C1 SW", "9000", s12.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw12T = BindEs10xSingleRequest.parseBerTlv(s12.resp);
+ var lw12Ok0 = lw12T.length === 1 && lw12T[0].tag === "BF28";
+ var lw12_br = lw12Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw12T[0].value) : [];
+ var lw12_brtag = lw12_br.length === 1 ? lw12_br[0].tag : "";
+ var lw12_els = lw12_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw12_br[0].value) : [];
+ bind.checkData("S12-C2 响应结构匹配 #R_LIST_NOTIF_DE1:ListNotificationResponse notificati branch/count", "1", (lw12_brtag === "A0" && lw12_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_DE1 ← 步 12 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=10 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd13_NOTIF_SEQ_NO_DE1 = {ok: false, seq: ""};
+ var nd13_NOTIF_SEQ_NO_DE1T = BindEs10xSingleRequest.parseBerTlv(s12.resp);
+ if (nd13_NOTIF_SEQ_NO_DE1T.length === 1 && nd13_NOTIF_SEQ_NO_DE1T[0].tag === "BF28") {
+ var nd13_NOTIF_SEQ_NO_DE1X1 = BindEs10xSingleRequest.parseBerTlv(nd13_NOTIF_SEQ_NO_DE1T[0].value);
+ if (nd13_NOTIF_SEQ_NO_DE1X1.length === 1 && nd13_NOTIF_SEQ_NO_DE1X1[0].tag === "A0") {
+ var nd13_NOTIF_SEQ_NO_DE1X2 = BindEs10xSingleRequest.parseBerTlv(nd13_NOTIF_SEQ_NO_DE1X1[0].value);
+ var nd13_NOTIF_SEQ_NO_DE1XHIT = 0;
+ for (var nd13_NOTIF_SEQ_NO_DE1XI = 0; nd13_NOTIF_SEQ_NO_DE1XI < nd13_NOTIF_SEQ_NO_DE1X2.length; nd13_NOTIF_SEQ_NO_DE1XI++) {
+ if (nd13_NOTIF_SEQ_NO_DE1X2[nd13_NOTIF_SEQ_NO_DE1XI].tag !== "BF2F") { continue; }
+ var nd13_NOTIF_SEQ_NO_DE1XM = BindEs10xSingleRequest.parseBerTlv(nd13_NOTIF_SEQ_NO_DE1X2[nd13_NOTIF_SEQ_NO_DE1XI].value);
+ for (var nd13_NOTIF_SEQ_NO_DE1XJ = 0; nd13_NOTIF_SEQ_NO_DE1XJ < nd13_NOTIF_SEQ_NO_DE1XM.length; nd13_NOTIF_SEQ_NO_DE1XJ++) {
+ if (nd13_NOTIF_SEQ_NO_DE1XM[nd13_NOTIF_SEQ_NO_DE1XJ].tag === "81" && nd13_NOTIF_SEQ_NO_DE1XM[nd13_NOTIF_SEQ_NO_DE1XJ].value === "10") {
+ nd13_NOTIF_SEQ_NO_DE1XHIT += 1;
+ if (nd13_NOTIF_SEQ_NO_DE1XHIT === 1) {
+ for (var nd13_NOTIF_SEQ_NO_DE1XK = 0; nd13_NOTIF_SEQ_NO_DE1XK < nd13_NOTIF_SEQ_NO_DE1XM.length; nd13_NOTIF_SEQ_NO_DE1XK++) {
+ if (nd13_NOTIF_SEQ_NO_DE1XM[nd13_NOTIF_SEQ_NO_DE1XK].tag === "80") { nd13_NOTIF_SEQ_NO_DE1.seq = nd13_NOTIF_SEQ_NO_DE1XM[nd13_NOTIF_SEQ_NO_DE1XK].value; nd13_NOTIF_SEQ_NO_DE1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd13_NOTIF_SEQ_NO_DE1Req = nd13_NOTIF_SEQ_NO_DE1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd13_NOTIF_SEQ_NO_DE1.seq)) : "";
+ // 步骤 13:SEQ04-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla13 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_DE1 stays in execution domain
+ var s13 = bind.sendApdu(sdCla13, "E2", "91", "00", nd13_NOTIF_SEQ_NO_DE1Req, "00", "9000");
+ bind.checkData("S13-C1 SW", "9000", s13.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_DE1", s13.cmd, profileAidSession);
+ var ns13W = BindEs10xSingleRequest.parseBerTlv(s13.resp);
+ var ns13Ok0 = ns13W.length === 1 && ns13W[0].tag === "BF30";
+ var ns13In = ns13Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns13W[0].value) : [];
+ var ns13Code = (ns13In.length === 1 && ns13In[0].tag === "80") ? ns13In[0].value : "absent";
+ bind.checkData("S13-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns13Code);
+
+ // 步骤 14:SEQ04-2] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla14 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S14-C1 SW", "9000", s14.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw14T = BindEs10xSingleRequest.parseBerTlv(s14.resp);
+ var lw14Ok0 = lw14T.length === 1 && lw14T[0].tag === "BF28";
+ var lw14_br = lw14Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw14T[0].value) : [];
+ var lw14_brtag = lw14_br.length === 1 ? lw14_br[0].tag : "";
+ var lw14_els = lw14_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw14_br[0].value) : [];
+ bind.checkData("S14-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw14_brtag === "A0" && lw14_els.length === 0) ? "1" : "0");
+
+ // 步骤 15:SEQ05-IC5] 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 sdCla15 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s15.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw15T = BindEs10xSingleRequest.parseBerTlv(s15.resp);
+ var lw15Ok0 = lw15T.length === 1 && lw15T[0].tag === "BF28";
+ var lw15_br = lw15Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw15T[0].value) : [];
+ var lw15_brtag = lw15_br.length === 1 ? lw15_br[0].tag : "";
+ var lw15_els = lw15_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw15_br[0].value) : [];
+ bind.checkData("S15-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:ListNotificationRespons branch/count", "1", (lw15_brtag === "A0" && lw15_els.length === 2) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 15 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd16_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
+ var nd16_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s15.resp);
+ if (nd16_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd16_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
+ var nd16_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd16_NOTIF_SEQ_NO_IN1_PIRT[0].value);
+ if (nd16_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd16_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
+ var nd16_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd16_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
+ var nd16_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
+ for (var nd16_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd16_NOTIF_SEQ_NO_IN1_PIRXI < nd16_NOTIF_SEQ_NO_IN1_PIRX2.length; nd16_NOTIF_SEQ_NO_IN1_PIRXI++) {
+ if (nd16_NOTIF_SEQ_NO_IN1_PIRX2[nd16_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
+ var nd16_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd16_NOTIF_SEQ_NO_IN1_PIRX2[nd16_NOTIF_SEQ_NO_IN1_PIRXI].value);
+ for (var nd16_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd16_NOTIF_SEQ_NO_IN1_PIRXJ < nd16_NOTIF_SEQ_NO_IN1_PIRXM.length; nd16_NOTIF_SEQ_NO_IN1_PIRXJ++) {
+ if (nd16_NOTIF_SEQ_NO_IN1_PIRXM[nd16_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd16_NOTIF_SEQ_NO_IN1_PIRXM[nd16_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
+ nd16_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
+ if (nd16_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
+ for (var nd16_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd16_NOTIF_SEQ_NO_IN1_PIRXK < nd16_NOTIF_SEQ_NO_IN1_PIRXM.length; nd16_NOTIF_SEQ_NO_IN1_PIRXK++) {
+ if (nd16_NOTIF_SEQ_NO_IN1_PIRXM[nd16_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd16_NOTIF_SEQ_NO_IN1_PIR.seq = nd16_NOTIF_SEQ_NO_IN1_PIRXM[nd16_NOTIF_SEQ_NO_IN1_PIRXK].value; nd16_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd16_NOTIF_SEQ_NO_IN1_PIRReq = nd16_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd16_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
+ // 步骤 16:SEQ05-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla16 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
+ var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", nd16_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
+ bind.checkData("S16-C1 SW", "9000", s16.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s16.cmd, profileAidSession);
+ var ns16W = BindEs10xSingleRequest.parseBerTlv(s16.resp);
+ var ns16Ok0 = ns16W.length === 1 && ns16W[0].tag === "BF30";
+ var ns16In = ns16Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns16W[0].value) : [];
+ var ns16Code = (ns16In.length === 1 && ns16In[0].tag === "80") ? ns16In[0].value : "absent";
+ bind.checkData("S16-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns16Code);
+
+ // 步骤 17:SEQ05-2] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla17 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S17-C1 SW", "9000", s17.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw17T = BindEs10xSingleRequest.parseBerTlv(s17.resp);
+ var lw17Ok0 = lw17T.length === 1 && lw17T[0].tag === "BF28";
+ var lw17_br = lw17Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw17T[0].value) : [];
+ var lw17_brtag = lw17_br.length === 1 ? lw17_br[0].tag : "";
+ var lw17_els = lw17_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw17_br[0].value) : [];
+ bind.checkData("S17-C2 响应结构匹配 #R_LIST_NOTIF_IN2_PIR:ListNotificationResponse notifi branch/count", "1", (lw17_brtag === "A0" && lw17_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN2_PIR ← 步 15 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd18_NOTIF_SEQ_NO_IN2_PIR = {ok: false, seq: ""};
+ var nd18_NOTIF_SEQ_NO_IN2_PIRT = BindEs10xSingleRequest.parseBerTlv(s15.resp);
+ if (nd18_NOTIF_SEQ_NO_IN2_PIRT.length === 1 && nd18_NOTIF_SEQ_NO_IN2_PIRT[0].tag === "BF28") {
+ var nd18_NOTIF_SEQ_NO_IN2_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd18_NOTIF_SEQ_NO_IN2_PIRT[0].value);
+ if (nd18_NOTIF_SEQ_NO_IN2_PIRX1.length === 1 && nd18_NOTIF_SEQ_NO_IN2_PIRX1[0].tag === "A0") {
+ var nd18_NOTIF_SEQ_NO_IN2_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd18_NOTIF_SEQ_NO_IN2_PIRX1[0].value);
+ var nd18_NOTIF_SEQ_NO_IN2_PIRXHIT = 0;
+ for (var nd18_NOTIF_SEQ_NO_IN2_PIRXI = 0; nd18_NOTIF_SEQ_NO_IN2_PIRXI < nd18_NOTIF_SEQ_NO_IN2_PIRX2.length; nd18_NOTIF_SEQ_NO_IN2_PIRXI++) {
+ if (nd18_NOTIF_SEQ_NO_IN2_PIRX2[nd18_NOTIF_SEQ_NO_IN2_PIRXI].tag !== "BF2F") { continue; }
+ var nd18_NOTIF_SEQ_NO_IN2_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd18_NOTIF_SEQ_NO_IN2_PIRX2[nd18_NOTIF_SEQ_NO_IN2_PIRXI].value);
+ for (var nd18_NOTIF_SEQ_NO_IN2_PIRXJ = 0; nd18_NOTIF_SEQ_NO_IN2_PIRXJ < nd18_NOTIF_SEQ_NO_IN2_PIRXM.length; nd18_NOTIF_SEQ_NO_IN2_PIRXJ++) {
+ if (nd18_NOTIF_SEQ_NO_IN2_PIRXM[nd18_NOTIF_SEQ_NO_IN2_PIRXJ].tag === "81" && nd18_NOTIF_SEQ_NO_IN2_PIRXM[nd18_NOTIF_SEQ_NO_IN2_PIRXJ].value === "80") {
+ nd18_NOTIF_SEQ_NO_IN2_PIRXHIT += 1;
+ if (nd18_NOTIF_SEQ_NO_IN2_PIRXHIT === 2) {
+ for (var nd18_NOTIF_SEQ_NO_IN2_PIRXK = 0; nd18_NOTIF_SEQ_NO_IN2_PIRXK < nd18_NOTIF_SEQ_NO_IN2_PIRXM.length; nd18_NOTIF_SEQ_NO_IN2_PIRXK++) {
+ if (nd18_NOTIF_SEQ_NO_IN2_PIRXM[nd18_NOTIF_SEQ_NO_IN2_PIRXK].tag === "80") { nd18_NOTIF_SEQ_NO_IN2_PIR.seq = nd18_NOTIF_SEQ_NO_IN2_PIRXM[nd18_NOTIF_SEQ_NO_IN2_PIRXK].value; nd18_NOTIF_SEQ_NO_IN2_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd18_NOTIF_SEQ_NO_IN2_PIRReq = nd18_NOTIF_SEQ_NO_IN2_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd18_NOTIF_SEQ_NO_IN2_PIR.seq)) : "";
+ // 步骤 18:SEQ05-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla18 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN2_PIR stays in execution domain
+ var s18 = bind.sendApdu(sdCla18, "E2", "91", "00", nd18_NOTIF_SEQ_NO_IN2_PIRReq, "00", "9000");
+ bind.checkData("S18-C1 SW", "9000", s18.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN2_PIR", s18.cmd, profileAidSession);
+ var ns18W = BindEs10xSingleRequest.parseBerTlv(s18.resp);
+ var ns18Ok0 = ns18W.length === 1 && ns18W[0].tag === "BF30";
+ var ns18In = ns18Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns18W[0].value) : [];
+ var ns18Code = (ns18In.length === 1 && ns18In[0].tag === "80") ? ns18In[0].value : "absent";
+ bind.checkData("S18-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns18Code);
+
+ // 步骤 19:SEQ05-4] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla19 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S19-C1 SW", "9000", s19.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw19T = BindEs10xSingleRequest.parseBerTlv(s19.resp);
+ var lw19Ok0 = lw19T.length === 1 && lw19T[0].tag === "BF28";
+ var lw19_br = lw19Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw19T[0].value) : [];
+ var lw19_brtag = lw19_br.length === 1 ? lw19_br[0].tag : "";
+ var lw19_els = lw19_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw19_br[0].value) : [];
+ bind.checkData("S19-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw19_brtag === "A0" && lw19_els.length === 0) ? "1" : "0");
+
+ // 步骤 20:SEQ06-IC5] 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 sdCla20 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S20-C1 SW", "9000", s20.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw20T = BindEs10xSingleRequest.parseBerTlv(s20.resp);
+ var lw20Ok0 = lw20T.length === 1 && lw20T[0].tag === "BF28";
+ var lw20_br = lw20Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw20T[0].value) : [];
+ var lw20_brtag = lw20_br.length === 1 ? lw20_br[0].tag : "";
+ var lw20_els = lw20_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw20_br[0].value) : [];
+ bind.checkData("S20-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR_EN1:ListNotificationResponse no branch/count", "1", (lw20_brtag === "A0" && lw20_els.length === 2) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 20 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd21_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
+ var nd21_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s20.resp);
+ if (nd21_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd21_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
+ var nd21_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd21_NOTIF_SEQ_NO_IN1_PIRT[0].value);
+ if (nd21_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd21_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
+ var nd21_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd21_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
+ var nd21_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
+ for (var nd21_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd21_NOTIF_SEQ_NO_IN1_PIRXI < nd21_NOTIF_SEQ_NO_IN1_PIRX2.length; nd21_NOTIF_SEQ_NO_IN1_PIRXI++) {
+ if (nd21_NOTIF_SEQ_NO_IN1_PIRX2[nd21_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
+ var nd21_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd21_NOTIF_SEQ_NO_IN1_PIRX2[nd21_NOTIF_SEQ_NO_IN1_PIRXI].value);
+ for (var nd21_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd21_NOTIF_SEQ_NO_IN1_PIRXJ < nd21_NOTIF_SEQ_NO_IN1_PIRXM.length; nd21_NOTIF_SEQ_NO_IN1_PIRXJ++) {
+ if (nd21_NOTIF_SEQ_NO_IN1_PIRXM[nd21_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd21_NOTIF_SEQ_NO_IN1_PIRXM[nd21_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
+ nd21_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
+ if (nd21_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
+ for (var nd21_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd21_NOTIF_SEQ_NO_IN1_PIRXK < nd21_NOTIF_SEQ_NO_IN1_PIRXM.length; nd21_NOTIF_SEQ_NO_IN1_PIRXK++) {
+ if (nd21_NOTIF_SEQ_NO_IN1_PIRXM[nd21_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd21_NOTIF_SEQ_NO_IN1_PIR.seq = nd21_NOTIF_SEQ_NO_IN1_PIRXM[nd21_NOTIF_SEQ_NO_IN1_PIRXK].value; nd21_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd21_NOTIF_SEQ_NO_IN1_PIRReq = nd21_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd21_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
+ // 步骤 21:SEQ06-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla21 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
+ var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", nd21_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
+ bind.checkData("S21-C1 SW", "9000", s21.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s21.cmd, profileAidSession);
+ var ns21W = BindEs10xSingleRequest.parseBerTlv(s21.resp);
+ var ns21Ok0 = ns21W.length === 1 && ns21W[0].tag === "BF30";
+ var ns21In = ns21Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns21W[0].value) : [];
+ var ns21Code = (ns21In.length === 1 && ns21In[0].tag === "80") ? ns21In[0].value : "absent";
+ bind.checkData("S21-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns21Code);
+
+ // 步骤 22:SEQ06-2] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla22 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S22-C1 SW", "9000", s22.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw22T = BindEs10xSingleRequest.parseBerTlv(s22.resp);
+ var lw22Ok0 = lw22T.length === 1 && lw22T[0].tag === "BF28";
+ var lw22_br = lw22Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw22T[0].value) : [];
+ var lw22_brtag = lw22_br.length === 1 ? lw22_br[0].tag : "";
+ var lw22_els = lw22_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw22_br[0].value) : [];
+ bind.checkData("S22-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count", "1", (lw22_brtag === "A0" && lw22_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_EN1 ← 步 20 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=40 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd23_NOTIF_SEQ_NO_EN1 = {ok: false, seq: ""};
+ var nd23_NOTIF_SEQ_NO_EN1T = BindEs10xSingleRequest.parseBerTlv(s20.resp);
+ if (nd23_NOTIF_SEQ_NO_EN1T.length === 1 && nd23_NOTIF_SEQ_NO_EN1T[0].tag === "BF28") {
+ var nd23_NOTIF_SEQ_NO_EN1X1 = BindEs10xSingleRequest.parseBerTlv(nd23_NOTIF_SEQ_NO_EN1T[0].value);
+ if (nd23_NOTIF_SEQ_NO_EN1X1.length === 1 && nd23_NOTIF_SEQ_NO_EN1X1[0].tag === "A0") {
+ var nd23_NOTIF_SEQ_NO_EN1X2 = BindEs10xSingleRequest.parseBerTlv(nd23_NOTIF_SEQ_NO_EN1X1[0].value);
+ var nd23_NOTIF_SEQ_NO_EN1XHIT = 0;
+ for (var nd23_NOTIF_SEQ_NO_EN1XI = 0; nd23_NOTIF_SEQ_NO_EN1XI < nd23_NOTIF_SEQ_NO_EN1X2.length; nd23_NOTIF_SEQ_NO_EN1XI++) {
+ if (nd23_NOTIF_SEQ_NO_EN1X2[nd23_NOTIF_SEQ_NO_EN1XI].tag !== "BF2F") { continue; }
+ var nd23_NOTIF_SEQ_NO_EN1XM = BindEs10xSingleRequest.parseBerTlv(nd23_NOTIF_SEQ_NO_EN1X2[nd23_NOTIF_SEQ_NO_EN1XI].value);
+ for (var nd23_NOTIF_SEQ_NO_EN1XJ = 0; nd23_NOTIF_SEQ_NO_EN1XJ < nd23_NOTIF_SEQ_NO_EN1XM.length; nd23_NOTIF_SEQ_NO_EN1XJ++) {
+ if (nd23_NOTIF_SEQ_NO_EN1XM[nd23_NOTIF_SEQ_NO_EN1XJ].tag === "81" && nd23_NOTIF_SEQ_NO_EN1XM[nd23_NOTIF_SEQ_NO_EN1XJ].value === "40") {
+ nd23_NOTIF_SEQ_NO_EN1XHIT += 1;
+ if (nd23_NOTIF_SEQ_NO_EN1XHIT === 1) {
+ for (var nd23_NOTIF_SEQ_NO_EN1XK = 0; nd23_NOTIF_SEQ_NO_EN1XK < nd23_NOTIF_SEQ_NO_EN1XM.length; nd23_NOTIF_SEQ_NO_EN1XK++) {
+ if (nd23_NOTIF_SEQ_NO_EN1XM[nd23_NOTIF_SEQ_NO_EN1XK].tag === "80") { nd23_NOTIF_SEQ_NO_EN1.seq = nd23_NOTIF_SEQ_NO_EN1XM[nd23_NOTIF_SEQ_NO_EN1XK].value; nd23_NOTIF_SEQ_NO_EN1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd23_NOTIF_SEQ_NO_EN1Req = nd23_NOTIF_SEQ_NO_EN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd23_NOTIF_SEQ_NO_EN1.seq)) : "";
+ // 步骤 23:SEQ06-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla23 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_EN1 stays in execution domain
+ var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", nd23_NOTIF_SEQ_NO_EN1Req, "00", "9000");
+ bind.checkData("S23-C1 SW", "9000", s23.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_EN1", s23.cmd, profileAidSession);
+ var ns23W = BindEs10xSingleRequest.parseBerTlv(s23.resp);
+ var ns23Ok0 = ns23W.length === 1 && ns23W[0].tag === "BF30";
+ var ns23In = ns23Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns23W[0].value) : [];
+ var ns23Code = (ns23In.length === 1 && ns23In[0].tag === "80") ? ns23In[0].value : "absent";
+ bind.checkData("S23-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns23Code);
+
+ // 步骤 24:SEQ06-4] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla24 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S24-C1 SW", "9000", s24.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw24T = BindEs10xSingleRequest.parseBerTlv(s24.resp);
+ var lw24Ok0 = lw24T.length === 1 && lw24T[0].tag === "BF28";
+ var lw24_br = lw24Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw24T[0].value) : [];
+ var lw24_brtag = lw24_br.length === 1 ? lw24_br[0].tag : "";
+ var lw24_els = lw24_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw24_br[0].value) : [];
+ bind.checkData("S24-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw24_brtag === "A0" && lw24_els.length === 0) ? "1" : "0");
+
+ // 步骤 25:SEQ07-IC7] 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 sdCla25 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S25-C1 SW", "9000", s25.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw25T = BindEs10xSingleRequest.parseBerTlv(s25.resp);
+ var lw25Ok0 = lw25T.length === 1 && lw25T[0].tag === "BF28";
+ var lw25_br = lw25Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw25T[0].value) : [];
+ var lw25_brtag = lw25_br.length === 1 ? lw25_br[0].tag : "";
+ var lw25_els = lw25_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw25_br[0].value) : [];
+ bind.checkData("S25-C2 响应结构匹配 #R_LIST_NOTIF_DI1_DE1:ListNotificationResponse notifi branch/count", "1", (lw25_brtag === "A0" && lw25_els.length === 2) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_DI1 ← 步 25 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=20 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd26_NOTIF_SEQ_NO_DI1 = {ok: false, seq: ""};
+ var nd26_NOTIF_SEQ_NO_DI1T = BindEs10xSingleRequest.parseBerTlv(s25.resp);
+ if (nd26_NOTIF_SEQ_NO_DI1T.length === 1 && nd26_NOTIF_SEQ_NO_DI1T[0].tag === "BF28") {
+ var nd26_NOTIF_SEQ_NO_DI1X1 = BindEs10xSingleRequest.parseBerTlv(nd26_NOTIF_SEQ_NO_DI1T[0].value);
+ if (nd26_NOTIF_SEQ_NO_DI1X1.length === 1 && nd26_NOTIF_SEQ_NO_DI1X1[0].tag === "A0") {
+ var nd26_NOTIF_SEQ_NO_DI1X2 = BindEs10xSingleRequest.parseBerTlv(nd26_NOTIF_SEQ_NO_DI1X1[0].value);
+ var nd26_NOTIF_SEQ_NO_DI1XHIT = 0;
+ for (var nd26_NOTIF_SEQ_NO_DI1XI = 0; nd26_NOTIF_SEQ_NO_DI1XI < nd26_NOTIF_SEQ_NO_DI1X2.length; nd26_NOTIF_SEQ_NO_DI1XI++) {
+ if (nd26_NOTIF_SEQ_NO_DI1X2[nd26_NOTIF_SEQ_NO_DI1XI].tag !== "BF2F") { continue; }
+ var nd26_NOTIF_SEQ_NO_DI1XM = BindEs10xSingleRequest.parseBerTlv(nd26_NOTIF_SEQ_NO_DI1X2[nd26_NOTIF_SEQ_NO_DI1XI].value);
+ for (var nd26_NOTIF_SEQ_NO_DI1XJ = 0; nd26_NOTIF_SEQ_NO_DI1XJ < nd26_NOTIF_SEQ_NO_DI1XM.length; nd26_NOTIF_SEQ_NO_DI1XJ++) {
+ if (nd26_NOTIF_SEQ_NO_DI1XM[nd26_NOTIF_SEQ_NO_DI1XJ].tag === "81" && nd26_NOTIF_SEQ_NO_DI1XM[nd26_NOTIF_SEQ_NO_DI1XJ].value === "20") {
+ nd26_NOTIF_SEQ_NO_DI1XHIT += 1;
+ if (nd26_NOTIF_SEQ_NO_DI1XHIT === 1) {
+ for (var nd26_NOTIF_SEQ_NO_DI1XK = 0; nd26_NOTIF_SEQ_NO_DI1XK < nd26_NOTIF_SEQ_NO_DI1XM.length; nd26_NOTIF_SEQ_NO_DI1XK++) {
+ if (nd26_NOTIF_SEQ_NO_DI1XM[nd26_NOTIF_SEQ_NO_DI1XK].tag === "80") { nd26_NOTIF_SEQ_NO_DI1.seq = nd26_NOTIF_SEQ_NO_DI1XM[nd26_NOTIF_SEQ_NO_DI1XK].value; nd26_NOTIF_SEQ_NO_DI1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd26_NOTIF_SEQ_NO_DI1Req = nd26_NOTIF_SEQ_NO_DI1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd26_NOTIF_SEQ_NO_DI1.seq)) : "";
+ // 步骤 26:SEQ07-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla26 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_DI1 stays in execution domain
+ var s26 = bind.sendApdu(sdCla26, "E2", "91", "00", nd26_NOTIF_SEQ_NO_DI1Req, "00", "9000");
+ bind.checkData("S26-C1 SW", "9000", s26.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_DI1", s26.cmd, profileAidSession);
+ var ns26W = BindEs10xSingleRequest.parseBerTlv(s26.resp);
+ var ns26Ok0 = ns26W.length === 1 && ns26W[0].tag === "BF30";
+ var ns26In = ns26Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns26W[0].value) : [];
+ var ns26Code = (ns26In.length === 1 && ns26In[0].tag === "80") ? ns26In[0].value : "absent";
+ bind.checkData("S26-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns26Code);
+
+ // 步骤 27:SEQ07-2] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla27 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S27-C1 SW", "9000", s27.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw27T = BindEs10xSingleRequest.parseBerTlv(s27.resp);
+ var lw27Ok0 = lw27T.length === 1 && lw27T[0].tag === "BF28";
+ var lw27_br = lw27Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw27T[0].value) : [];
+ var lw27_brtag = lw27_br.length === 1 ? lw27_br[0].tag : "";
+ var lw27_els = lw27_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw27_br[0].value) : [];
+ bind.checkData("S27-C2 响应结构匹配 #R_LIST_NOTIF_DE1:ListNotificationResponse notificati branch/count", "1", (lw27_brtag === "A0" && lw27_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_DE1 ← 步 25 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=10 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd28_NOTIF_SEQ_NO_DE1 = {ok: false, seq: ""};
+ var nd28_NOTIF_SEQ_NO_DE1T = BindEs10xSingleRequest.parseBerTlv(s25.resp);
+ if (nd28_NOTIF_SEQ_NO_DE1T.length === 1 && nd28_NOTIF_SEQ_NO_DE1T[0].tag === "BF28") {
+ var nd28_NOTIF_SEQ_NO_DE1X1 = BindEs10xSingleRequest.parseBerTlv(nd28_NOTIF_SEQ_NO_DE1T[0].value);
+ if (nd28_NOTIF_SEQ_NO_DE1X1.length === 1 && nd28_NOTIF_SEQ_NO_DE1X1[0].tag === "A0") {
+ var nd28_NOTIF_SEQ_NO_DE1X2 = BindEs10xSingleRequest.parseBerTlv(nd28_NOTIF_SEQ_NO_DE1X1[0].value);
+ var nd28_NOTIF_SEQ_NO_DE1XHIT = 0;
+ for (var nd28_NOTIF_SEQ_NO_DE1XI = 0; nd28_NOTIF_SEQ_NO_DE1XI < nd28_NOTIF_SEQ_NO_DE1X2.length; nd28_NOTIF_SEQ_NO_DE1XI++) {
+ if (nd28_NOTIF_SEQ_NO_DE1X2[nd28_NOTIF_SEQ_NO_DE1XI].tag !== "BF2F") { continue; }
+ var nd28_NOTIF_SEQ_NO_DE1XM = BindEs10xSingleRequest.parseBerTlv(nd28_NOTIF_SEQ_NO_DE1X2[nd28_NOTIF_SEQ_NO_DE1XI].value);
+ for (var nd28_NOTIF_SEQ_NO_DE1XJ = 0; nd28_NOTIF_SEQ_NO_DE1XJ < nd28_NOTIF_SEQ_NO_DE1XM.length; nd28_NOTIF_SEQ_NO_DE1XJ++) {
+ if (nd28_NOTIF_SEQ_NO_DE1XM[nd28_NOTIF_SEQ_NO_DE1XJ].tag === "81" && nd28_NOTIF_SEQ_NO_DE1XM[nd28_NOTIF_SEQ_NO_DE1XJ].value === "10") {
+ nd28_NOTIF_SEQ_NO_DE1XHIT += 1;
+ if (nd28_NOTIF_SEQ_NO_DE1XHIT === 1) {
+ for (var nd28_NOTIF_SEQ_NO_DE1XK = 0; nd28_NOTIF_SEQ_NO_DE1XK < nd28_NOTIF_SEQ_NO_DE1XM.length; nd28_NOTIF_SEQ_NO_DE1XK++) {
+ if (nd28_NOTIF_SEQ_NO_DE1XM[nd28_NOTIF_SEQ_NO_DE1XK].tag === "80") { nd28_NOTIF_SEQ_NO_DE1.seq = nd28_NOTIF_SEQ_NO_DE1XM[nd28_NOTIF_SEQ_NO_DE1XK].value; nd28_NOTIF_SEQ_NO_DE1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd28_NOTIF_SEQ_NO_DE1Req = nd28_NOTIF_SEQ_NO_DE1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd28_NOTIF_SEQ_NO_DE1.seq)) : "";
+ // 步骤 28:SEQ07-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla28 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_DE1 stays in execution domain
+ var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", nd28_NOTIF_SEQ_NO_DE1Req, "00", "9000");
+ bind.checkData("S28-C1 SW", "9000", s28.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_DE1", s28.cmd, profileAidSession);
+ var ns28W = BindEs10xSingleRequest.parseBerTlv(s28.resp);
+ var ns28Ok0 = ns28W.length === 1 && ns28W[0].tag === "BF30";
+ var ns28In = ns28Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns28W[0].value) : [];
+ var ns28Code = (ns28In.length === 1 && ns28In[0].tag === "80") ? ns28In[0].value : "absent";
+ bind.checkData("S28-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns28Code);
+
+ // 步骤 29:SEQ07-4] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla29 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s29 = bind.sendApdu(sdCla29, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S29-C1 SW", "9000", s29.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw29T = BindEs10xSingleRequest.parseBerTlv(s29.resp);
+ var lw29Ok0 = lw29T.length === 1 && lw29T[0].tag === "BF28";
+ var lw29_br = lw29Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw29T[0].value) : [];
+ var lw29_brtag = lw29_br.length === 1 ? lw29_br[0].tag : "";
+ var lw29_els = lw29_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw29_br[0].value) : [];
+ bind.checkData("S29-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw29_brtag === "A0" && lw29_els.length === 0) ? "1" : "0");
+
+ // 步骤 30:SEQ08-IC5] 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 sdCla30 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S30-C1 SW", "9000", s30.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw30T = BindEs10xSingleRequest.parseBerTlv(s30.resp);
+ var lw30Ok0 = lw30T.length === 1 && lw30T[0].tag === "BF28";
+ var lw30_br = lw30Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw30T[0].value) : [];
+ var lw30_brtag = lw30_br.length === 1 ? lw30_br[0].tag : "";
+ var lw30_els = lw30_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw30_br[0].value) : [];
+ bind.checkData("S30-C2 响应结构匹配 #R_LIST_NOTIF_IN1_EN1:ListNotificationResponse notifi branch/count", "1", (lw30_brtag === "A0" && lw30_els.length === 2) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1 ← 步 30 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd31_NOTIF_SEQ_NO_IN1 = {ok: false, seq: ""};
+ var nd31_NOTIF_SEQ_NO_IN1T = BindEs10xSingleRequest.parseBerTlv(s30.resp);
+ if (nd31_NOTIF_SEQ_NO_IN1T.length === 1 && nd31_NOTIF_SEQ_NO_IN1T[0].tag === "BF28") {
+ var nd31_NOTIF_SEQ_NO_IN1X1 = BindEs10xSingleRequest.parseBerTlv(nd31_NOTIF_SEQ_NO_IN1T[0].value);
+ if (nd31_NOTIF_SEQ_NO_IN1X1.length === 1 && nd31_NOTIF_SEQ_NO_IN1X1[0].tag === "A0") {
+ var nd31_NOTIF_SEQ_NO_IN1X2 = BindEs10xSingleRequest.parseBerTlv(nd31_NOTIF_SEQ_NO_IN1X1[0].value);
+ var nd31_NOTIF_SEQ_NO_IN1XHIT = 0;
+ for (var nd31_NOTIF_SEQ_NO_IN1XI = 0; nd31_NOTIF_SEQ_NO_IN1XI < nd31_NOTIF_SEQ_NO_IN1X2.length; nd31_NOTIF_SEQ_NO_IN1XI++) {
+ if (nd31_NOTIF_SEQ_NO_IN1X2[nd31_NOTIF_SEQ_NO_IN1XI].tag !== "BF2F") { continue; }
+ var nd31_NOTIF_SEQ_NO_IN1XM = BindEs10xSingleRequest.parseBerTlv(nd31_NOTIF_SEQ_NO_IN1X2[nd31_NOTIF_SEQ_NO_IN1XI].value);
+ for (var nd31_NOTIF_SEQ_NO_IN1XJ = 0; nd31_NOTIF_SEQ_NO_IN1XJ < nd31_NOTIF_SEQ_NO_IN1XM.length; nd31_NOTIF_SEQ_NO_IN1XJ++) {
+ if (nd31_NOTIF_SEQ_NO_IN1XM[nd31_NOTIF_SEQ_NO_IN1XJ].tag === "81" && nd31_NOTIF_SEQ_NO_IN1XM[nd31_NOTIF_SEQ_NO_IN1XJ].value === "80") {
+ nd31_NOTIF_SEQ_NO_IN1XHIT += 1;
+ if (nd31_NOTIF_SEQ_NO_IN1XHIT === 1) {
+ for (var nd31_NOTIF_SEQ_NO_IN1XK = 0; nd31_NOTIF_SEQ_NO_IN1XK < nd31_NOTIF_SEQ_NO_IN1XM.length; nd31_NOTIF_SEQ_NO_IN1XK++) {
+ if (nd31_NOTIF_SEQ_NO_IN1XM[nd31_NOTIF_SEQ_NO_IN1XK].tag === "80") { nd31_NOTIF_SEQ_NO_IN1.seq = nd31_NOTIF_SEQ_NO_IN1XM[nd31_NOTIF_SEQ_NO_IN1XK].value; nd31_NOTIF_SEQ_NO_IN1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd31_NOTIF_SEQ_NO_IN1Req = nd31_NOTIF_SEQ_NO_IN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd31_NOTIF_SEQ_NO_IN1.seq)) : "";
+ // 步骤 31:SEQ08-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla31 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1 stays in execution domain
+ var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", nd31_NOTIF_SEQ_NO_IN1Req, "00", "9000");
+ bind.checkData("S31-C1 SW", "9000", s31.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1", s31.cmd, profileAidSession);
+ var ns31W = BindEs10xSingleRequest.parseBerTlv(s31.resp);
+ var ns31Ok0 = ns31W.length === 1 && ns31W[0].tag === "BF30";
+ var ns31In = ns31Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns31W[0].value) : [];
+ var ns31Code = (ns31In.length === 1 && ns31In[0].tag === "80") ? ns31In[0].value : "absent";
+ bind.checkData("S31-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns31Code);
+
+ // 步骤 32:SEQ08-2] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla32 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S32-C1 SW", "9000", s32.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw32T = BindEs10xSingleRequest.parseBerTlv(s32.resp);
+ var lw32Ok0 = lw32T.length === 1 && lw32T[0].tag === "BF28";
+ var lw32_br = lw32Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw32T[0].value) : [];
+ var lw32_brtag = lw32_br.length === 1 ? lw32_br[0].tag : "";
+ var lw32_els = lw32_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw32_br[0].value) : [];
+ bind.checkData("S32-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count", "1", (lw32_brtag === "A0" && lw32_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_EN1 ← 步 30 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=40 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd33_NOTIF_SEQ_NO_EN1 = {ok: false, seq: ""};
+ var nd33_NOTIF_SEQ_NO_EN1T = BindEs10xSingleRequest.parseBerTlv(s30.resp);
+ if (nd33_NOTIF_SEQ_NO_EN1T.length === 1 && nd33_NOTIF_SEQ_NO_EN1T[0].tag === "BF28") {
+ var nd33_NOTIF_SEQ_NO_EN1X1 = BindEs10xSingleRequest.parseBerTlv(nd33_NOTIF_SEQ_NO_EN1T[0].value);
+ if (nd33_NOTIF_SEQ_NO_EN1X1.length === 1 && nd33_NOTIF_SEQ_NO_EN1X1[0].tag === "A0") {
+ var nd33_NOTIF_SEQ_NO_EN1X2 = BindEs10xSingleRequest.parseBerTlv(nd33_NOTIF_SEQ_NO_EN1X1[0].value);
+ var nd33_NOTIF_SEQ_NO_EN1XHIT = 0;
+ for (var nd33_NOTIF_SEQ_NO_EN1XI = 0; nd33_NOTIF_SEQ_NO_EN1XI < nd33_NOTIF_SEQ_NO_EN1X2.length; nd33_NOTIF_SEQ_NO_EN1XI++) {
+ if (nd33_NOTIF_SEQ_NO_EN1X2[nd33_NOTIF_SEQ_NO_EN1XI].tag !== "BF2F") { continue; }
+ var nd33_NOTIF_SEQ_NO_EN1XM = BindEs10xSingleRequest.parseBerTlv(nd33_NOTIF_SEQ_NO_EN1X2[nd33_NOTIF_SEQ_NO_EN1XI].value);
+ for (var nd33_NOTIF_SEQ_NO_EN1XJ = 0; nd33_NOTIF_SEQ_NO_EN1XJ < nd33_NOTIF_SEQ_NO_EN1XM.length; nd33_NOTIF_SEQ_NO_EN1XJ++) {
+ if (nd33_NOTIF_SEQ_NO_EN1XM[nd33_NOTIF_SEQ_NO_EN1XJ].tag === "81" && nd33_NOTIF_SEQ_NO_EN1XM[nd33_NOTIF_SEQ_NO_EN1XJ].value === "40") {
+ nd33_NOTIF_SEQ_NO_EN1XHIT += 1;
+ if (nd33_NOTIF_SEQ_NO_EN1XHIT === 1) {
+ for (var nd33_NOTIF_SEQ_NO_EN1XK = 0; nd33_NOTIF_SEQ_NO_EN1XK < nd33_NOTIF_SEQ_NO_EN1XM.length; nd33_NOTIF_SEQ_NO_EN1XK++) {
+ if (nd33_NOTIF_SEQ_NO_EN1XM[nd33_NOTIF_SEQ_NO_EN1XK].tag === "80") { nd33_NOTIF_SEQ_NO_EN1.seq = nd33_NOTIF_SEQ_NO_EN1XM[nd33_NOTIF_SEQ_NO_EN1XK].value; nd33_NOTIF_SEQ_NO_EN1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd33_NOTIF_SEQ_NO_EN1Req = nd33_NOTIF_SEQ_NO_EN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd33_NOTIF_SEQ_NO_EN1.seq)) : "";
+ // 步骤 33:SEQ08-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla33 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_EN1 stays in execution domain
+ var s33 = bind.sendApdu(sdCla33, "E2", "91", "00", nd33_NOTIF_SEQ_NO_EN1Req, "00", "9000");
+ bind.checkData("S33-C1 SW", "9000", s33.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_EN1", s33.cmd, profileAidSession);
+ var ns33W = BindEs10xSingleRequest.parseBerTlv(s33.resp);
+ var ns33Ok0 = ns33W.length === 1 && ns33W[0].tag === "BF30";
+ var ns33In = ns33Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns33W[0].value) : [];
+ var ns33Code = (ns33In.length === 1 && ns33In[0].tag === "80") ? ns33In[0].value : "absent";
+ bind.checkData("S33-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns33Code);
+
+ // 步骤 34:SEQ08-4] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla34 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s34 = bind.sendApdu(sdCla34, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S34-C1 SW", "9000", s34.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw34T = BindEs10xSingleRequest.parseBerTlv(s34.resp);
+ var lw34Ok0 = lw34T.length === 1 && lw34T[0].tag === "BF28";
+ var lw34_br = lw34Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw34T[0].value) : [];
+ var lw34_brtag = lw34_br.length === 1 ? lw34_br[0].tag : "";
+ var lw34_els = lw34_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw34_br[0].value) : [];
+ bind.checkData("S34-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw34_brtag === "A0" && lw34_els.length === 0) ? "1" : "0");
+
+ // 步骤 35:SEQ09-IC6] 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 sdCla35 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S35-C1 SW", "9000", s35.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw35T = BindEs10xSingleRequest.parseBerTlv(s35.resp);
+ var lw35Ok0 = lw35T.length === 1 && lw35T[0].tag === "BF28";
+ var lw35_br = lw35Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw35T[0].value) : [];
+ var lw35_brtag = lw35_br.length === 1 ? lw35_br[0].tag : "";
+ var lw35_els = lw35_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw35_br[0].value) : [];
+ bind.checkData("S35-C2 响应结构匹配 #R_LIST_NOTIF_EN1_IN2_PIR:ListNotificationResponse no branch/count", "1", (lw35_brtag === "A0" && lw35_els.length === 2) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN2_PIR ← 步 35 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd36_NOTIF_SEQ_NO_IN2_PIR = {ok: false, seq: ""};
+ var nd36_NOTIF_SEQ_NO_IN2_PIRT = BindEs10xSingleRequest.parseBerTlv(s35.resp);
+ if (nd36_NOTIF_SEQ_NO_IN2_PIRT.length === 1 && nd36_NOTIF_SEQ_NO_IN2_PIRT[0].tag === "BF28") {
+ var nd36_NOTIF_SEQ_NO_IN2_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd36_NOTIF_SEQ_NO_IN2_PIRT[0].value);
+ if (nd36_NOTIF_SEQ_NO_IN2_PIRX1.length === 1 && nd36_NOTIF_SEQ_NO_IN2_PIRX1[0].tag === "A0") {
+ var nd36_NOTIF_SEQ_NO_IN2_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd36_NOTIF_SEQ_NO_IN2_PIRX1[0].value);
+ var nd36_NOTIF_SEQ_NO_IN2_PIRXHIT = 0;
+ for (var nd36_NOTIF_SEQ_NO_IN2_PIRXI = 0; nd36_NOTIF_SEQ_NO_IN2_PIRXI < nd36_NOTIF_SEQ_NO_IN2_PIRX2.length; nd36_NOTIF_SEQ_NO_IN2_PIRXI++) {
+ if (nd36_NOTIF_SEQ_NO_IN2_PIRX2[nd36_NOTIF_SEQ_NO_IN2_PIRXI].tag !== "BF2F") { continue; }
+ var nd36_NOTIF_SEQ_NO_IN2_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd36_NOTIF_SEQ_NO_IN2_PIRX2[nd36_NOTIF_SEQ_NO_IN2_PIRXI].value);
+ for (var nd36_NOTIF_SEQ_NO_IN2_PIRXJ = 0; nd36_NOTIF_SEQ_NO_IN2_PIRXJ < nd36_NOTIF_SEQ_NO_IN2_PIRXM.length; nd36_NOTIF_SEQ_NO_IN2_PIRXJ++) {
+ if (nd36_NOTIF_SEQ_NO_IN2_PIRXM[nd36_NOTIF_SEQ_NO_IN2_PIRXJ].tag === "81" && nd36_NOTIF_SEQ_NO_IN2_PIRXM[nd36_NOTIF_SEQ_NO_IN2_PIRXJ].value === "80") {
+ nd36_NOTIF_SEQ_NO_IN2_PIRXHIT += 1;
+ if (nd36_NOTIF_SEQ_NO_IN2_PIRXHIT === 2) {
+ for (var nd36_NOTIF_SEQ_NO_IN2_PIRXK = 0; nd36_NOTIF_SEQ_NO_IN2_PIRXK < nd36_NOTIF_SEQ_NO_IN2_PIRXM.length; nd36_NOTIF_SEQ_NO_IN2_PIRXK++) {
+ if (nd36_NOTIF_SEQ_NO_IN2_PIRXM[nd36_NOTIF_SEQ_NO_IN2_PIRXK].tag === "80") { nd36_NOTIF_SEQ_NO_IN2_PIR.seq = nd36_NOTIF_SEQ_NO_IN2_PIRXM[nd36_NOTIF_SEQ_NO_IN2_PIRXK].value; nd36_NOTIF_SEQ_NO_IN2_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd36_NOTIF_SEQ_NO_IN2_PIRReq = nd36_NOTIF_SEQ_NO_IN2_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd36_NOTIF_SEQ_NO_IN2_PIR.seq)) : "";
+ // 步骤 36:SEQ09-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla36 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN2_PIR stays in execution domain
+ var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", nd36_NOTIF_SEQ_NO_IN2_PIRReq, "00", "9000");
+ bind.checkData("S36-C1 SW", "9000", s36.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN2_PIR", s36.cmd, profileAidSession);
+ var ns36W = BindEs10xSingleRequest.parseBerTlv(s36.resp);
+ var ns36Ok0 = ns36W.length === 1 && ns36W[0].tag === "BF30";
+ var ns36In = ns36Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns36W[0].value) : [];
+ var ns36Code = (ns36In.length === 1 && ns36In[0].tag === "80") ? ns36In[0].value : "absent";
+ bind.checkData("S36-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns36Code);
+
+ // 步骤 37:SEQ09-2] MTD_STORE_DATA(tc_step;REQ: RQ25_020, RQ31_182)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla37 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S37-C1 SW", "9000", s37.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw37T = BindEs10xSingleRequest.parseBerTlv(s37.resp);
+ var lw37Ok0 = lw37T.length === 1 && lw37T[0].tag === "BF28";
+ var lw37_br = lw37Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw37T[0].value) : [];
+ var lw37_brtag = lw37_br.length === 1 ? lw37_br[0].tag : "";
+ var lw37_els = lw37_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw37_br[0].value) : [];
+ bind.checkData("S37-C2 响应结构匹配 #R_LIST_NOTIF_EN1:ListNotificationResponse notificati branch/count", "1", (lw37_brtag === "A0" && lw37_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_EN1 ← 步 35 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=40 第 1 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd38_NOTIF_SEQ_NO_EN1 = {ok: false, seq: ""};
+ var nd38_NOTIF_SEQ_NO_EN1T = BindEs10xSingleRequest.parseBerTlv(s35.resp);
+ if (nd38_NOTIF_SEQ_NO_EN1T.length === 1 && nd38_NOTIF_SEQ_NO_EN1T[0].tag === "BF28") {
+ var nd38_NOTIF_SEQ_NO_EN1X1 = BindEs10xSingleRequest.parseBerTlv(nd38_NOTIF_SEQ_NO_EN1T[0].value);
+ if (nd38_NOTIF_SEQ_NO_EN1X1.length === 1 && nd38_NOTIF_SEQ_NO_EN1X1[0].tag === "A0") {
+ var nd38_NOTIF_SEQ_NO_EN1X2 = BindEs10xSingleRequest.parseBerTlv(nd38_NOTIF_SEQ_NO_EN1X1[0].value);
+ var nd38_NOTIF_SEQ_NO_EN1XHIT = 0;
+ for (var nd38_NOTIF_SEQ_NO_EN1XI = 0; nd38_NOTIF_SEQ_NO_EN1XI < nd38_NOTIF_SEQ_NO_EN1X2.length; nd38_NOTIF_SEQ_NO_EN1XI++) {
+ if (nd38_NOTIF_SEQ_NO_EN1X2[nd38_NOTIF_SEQ_NO_EN1XI].tag !== "BF2F") { continue; }
+ var nd38_NOTIF_SEQ_NO_EN1XM = BindEs10xSingleRequest.parseBerTlv(nd38_NOTIF_SEQ_NO_EN1X2[nd38_NOTIF_SEQ_NO_EN1XI].value);
+ for (var nd38_NOTIF_SEQ_NO_EN1XJ = 0; nd38_NOTIF_SEQ_NO_EN1XJ < nd38_NOTIF_SEQ_NO_EN1XM.length; nd38_NOTIF_SEQ_NO_EN1XJ++) {
+ if (nd38_NOTIF_SEQ_NO_EN1XM[nd38_NOTIF_SEQ_NO_EN1XJ].tag === "81" && nd38_NOTIF_SEQ_NO_EN1XM[nd38_NOTIF_SEQ_NO_EN1XJ].value === "40") {
+ nd38_NOTIF_SEQ_NO_EN1XHIT += 1;
+ if (nd38_NOTIF_SEQ_NO_EN1XHIT === 1) {
+ for (var nd38_NOTIF_SEQ_NO_EN1XK = 0; nd38_NOTIF_SEQ_NO_EN1XK < nd38_NOTIF_SEQ_NO_EN1XM.length; nd38_NOTIF_SEQ_NO_EN1XK++) {
+ if (nd38_NOTIF_SEQ_NO_EN1XM[nd38_NOTIF_SEQ_NO_EN1XK].tag === "80") { nd38_NOTIF_SEQ_NO_EN1.seq = nd38_NOTIF_SEQ_NO_EN1XM[nd38_NOTIF_SEQ_NO_EN1XK].value; nd38_NOTIF_SEQ_NO_EN1.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd38_NOTIF_SEQ_NO_EN1Req = nd38_NOTIF_SEQ_NO_EN1.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd38_NOTIF_SEQ_NO_EN1.seq)) : "";
+ // 步骤 38:SEQ09-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla38 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_EN1 stays in execution domain
+ var s38 = bind.sendApdu(sdCla38, "E2", "91", "00", nd38_NOTIF_SEQ_NO_EN1Req, "00", "9000");
+ bind.checkData("S38-C1 SW", "9000", s38.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_EN1", s38.cmd, profileAidSession);
+ var ns38W = BindEs10xSingleRequest.parseBerTlv(s38.resp);
+ var ns38Ok0 = ns38W.length === 1 && ns38W[0].tag === "BF30";
+ var ns38In = ns38Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns38W[0].value) : [];
+ var ns38Code = (ns38In.length === 1 && ns38In[0].tag === "80") ? ns38In[0].value : "absent";
+ bind.checkData("S38-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns38Code);
+
+ // 步骤 39:SEQ09-4] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla39 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s39 = bind.sendApdu(sdCla39, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S39-C1 SW", "9000", s39.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw39T = BindEs10xSingleRequest.parseBerTlv(s39.resp);
+ var lw39Ok0 = lw39T.length === 1 && lw39T[0].tag === "BF28";
+ var lw39_br = lw39Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw39T[0].value) : [];
+ var lw39_brtag = lw39_br.length === 1 ? lw39_br[0].tag : "";
+ var lw39_els = lw39_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw39_br[0].value) : [];
+ bind.checkData("S39-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw39_brtag === "A0" && lw39_els.length === 0) ? "1" : "0");
+
+ // 步骤 40:SEQ10-IC4] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla40 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s40 = bind.sendApdu(sdCla40, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S40-C1 SW", "9000", s40.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw40T = BindEs10xSingleRequest.parseBerTlv(s40.resp);
+ var lw40Ok0 = lw40T.length === 1 && lw40T[0].tag === "BF28";
+ var lw40_br = lw40Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw40T[0].value) : [];
+ var lw40_brtag = lw40_br.length === 1 ? lw40_br[0].tag : "";
+ var lw40_els = lw40_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw40_br[0].value) : [];
+ bind.checkData("S40-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count", "1", (lw40_brtag === "A0" && lw40_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd41_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
+ var nd41_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
+ if (nd41_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd41_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
+ var nd41_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd41_NOTIF_SEQ_NO_IN1_PIRT[0].value);
+ if (nd41_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd41_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
+ var nd41_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd41_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
+ var nd41_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
+ for (var nd41_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd41_NOTIF_SEQ_NO_IN1_PIRXI < nd41_NOTIF_SEQ_NO_IN1_PIRX2.length; nd41_NOTIF_SEQ_NO_IN1_PIRXI++) {
+ if (nd41_NOTIF_SEQ_NO_IN1_PIRX2[nd41_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
+ var nd41_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd41_NOTIF_SEQ_NO_IN1_PIRX2[nd41_NOTIF_SEQ_NO_IN1_PIRXI].value);
+ for (var nd41_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd41_NOTIF_SEQ_NO_IN1_PIRXJ < nd41_NOTIF_SEQ_NO_IN1_PIRXM.length; nd41_NOTIF_SEQ_NO_IN1_PIRXJ++) {
+ if (nd41_NOTIF_SEQ_NO_IN1_PIRXM[nd41_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd41_NOTIF_SEQ_NO_IN1_PIRXM[nd41_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
+ nd41_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
+ if (nd41_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
+ for (var nd41_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd41_NOTIF_SEQ_NO_IN1_PIRXK < nd41_NOTIF_SEQ_NO_IN1_PIRXM.length; nd41_NOTIF_SEQ_NO_IN1_PIRXK++) {
+ if (nd41_NOTIF_SEQ_NO_IN1_PIRXM[nd41_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd41_NOTIF_SEQ_NO_IN1_PIR.seq = nd41_NOTIF_SEQ_NO_IN1_PIRXM[nd41_NOTIF_SEQ_NO_IN1_PIRXK].value; nd41_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd41_NOTIF_SEQ_NO_IN1_PIRReq = nd41_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd41_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
+ // 步骤 41:SEQ10-1] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla41 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
+ var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", nd41_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
+ bind.checkData("S41-C1 SW", "9000", s41.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s41.cmd, profileAidSession);
+ var ns41W = BindEs10xSingleRequest.parseBerTlv(s41.resp);
+ var ns41Ok0 = ns41W.length === 1 && ns41W[0].tag === "BF30";
+ var ns41In = ns41Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns41W[0].value) : [];
+ var ns41Code = (ns41In.length === 1 && ns41In[0].tag === "80") ? ns41In[0].value : "absent";
+ bind.checkData("S41-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus", "01", ns41Code);
+
+ // 步骤 42:SEQ10-2] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla42 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s42 = bind.sendApdu(sdCla42, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S42-C1 SW", "9000", s42.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw42T = BindEs10xSingleRequest.parseBerTlv(s42.resp);
+ var lw42Ok0 = lw42T.length === 1 && lw42T[0].tag === "BF28";
+ var lw42_br = lw42Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw42T[0].value) : [];
+ var lw42_brtag = lw42_br.length === 1 ? lw42_br[0].tag : "";
+ var lw42_els = lw42_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw42_br[0].value) : [];
+ bind.checkData("S42-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count", "1", (lw42_brtag === "A0" && lw42_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd43_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
+ var nd43_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
+ if (nd43_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd43_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
+ var nd43_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd43_NOTIF_SEQ_NO_IN1_PIRT[0].value);
+ if (nd43_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd43_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
+ var nd43_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd43_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
+ var nd43_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
+ for (var nd43_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd43_NOTIF_SEQ_NO_IN1_PIRXI < nd43_NOTIF_SEQ_NO_IN1_PIRX2.length; nd43_NOTIF_SEQ_NO_IN1_PIRXI++) {
+ if (nd43_NOTIF_SEQ_NO_IN1_PIRX2[nd43_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
+ var nd43_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd43_NOTIF_SEQ_NO_IN1_PIRX2[nd43_NOTIF_SEQ_NO_IN1_PIRXI].value);
+ for (var nd43_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd43_NOTIF_SEQ_NO_IN1_PIRXJ < nd43_NOTIF_SEQ_NO_IN1_PIRXM.length; nd43_NOTIF_SEQ_NO_IN1_PIRXJ++) {
+ if (nd43_NOTIF_SEQ_NO_IN1_PIRXM[nd43_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd43_NOTIF_SEQ_NO_IN1_PIRXM[nd43_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
+ nd43_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
+ if (nd43_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
+ for (var nd43_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd43_NOTIF_SEQ_NO_IN1_PIRXK < nd43_NOTIF_SEQ_NO_IN1_PIRXM.length; nd43_NOTIF_SEQ_NO_IN1_PIRXK++) {
+ if (nd43_NOTIF_SEQ_NO_IN1_PIRXM[nd43_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd43_NOTIF_SEQ_NO_IN1_PIR.seq = nd43_NOTIF_SEQ_NO_IN1_PIRXM[nd43_NOTIF_SEQ_NO_IN1_PIRXK].value; nd43_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd43_NOTIF_SEQ_NO_IN1_PIRReq = nd43_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd43_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
+ // 步骤 43:SEQ10-3] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla43 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
+ var s43 = bind.sendApdu(sdCla43, "E2", "91", "00", nd43_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
+ bind.checkData("S43-C1 SW", "9000", s43.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s43.cmd, profileAidSession);
+ var ns43W = BindEs10xSingleRequest.parseBerTlv(s43.resp);
+ var ns43Ok0 = ns43W.length === 1 && ns43W[0].tag === "BF30";
+ var ns43In = ns43Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns43W[0].value) : [];
+ var ns43Code = (ns43In.length === 1 && ns43In[0].tag === "80") ? ns43In[0].value : "absent";
+ bind.checkData("S43-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus", "01", ns43Code);
+
+ // 步骤 44:SEQ10-4] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla44 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S44-C1 SW", "9000", s44.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw44T = BindEs10xSingleRequest.parseBerTlv(s44.resp);
+ var lw44Ok0 = lw44T.length === 1 && lw44T[0].tag === "BF28";
+ var lw44_br = lw44Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw44T[0].value) : [];
+ var lw44_brtag = lw44_br.length === 1 ? lw44_br[0].tag : "";
+ var lw44_els = lw44_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw44_br[0].value) : [];
+ bind.checkData("S44-C2 响应结构匹配 #R_LIST_NOTIF_IN1_PIR:ListNotificationResponse notifi branch/count", "1", (lw44_brtag === "A0" && lw44_els.length === 1) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd45_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
+ var nd45_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
+ if (nd45_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd45_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
+ var nd45_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd45_NOTIF_SEQ_NO_IN1_PIRT[0].value);
+ if (nd45_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd45_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
+ var nd45_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd45_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
+ var nd45_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
+ for (var nd45_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd45_NOTIF_SEQ_NO_IN1_PIRXI < nd45_NOTIF_SEQ_NO_IN1_PIRX2.length; nd45_NOTIF_SEQ_NO_IN1_PIRXI++) {
+ if (nd45_NOTIF_SEQ_NO_IN1_PIRX2[nd45_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
+ var nd45_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd45_NOTIF_SEQ_NO_IN1_PIRX2[nd45_NOTIF_SEQ_NO_IN1_PIRXI].value);
+ for (var nd45_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd45_NOTIF_SEQ_NO_IN1_PIRXJ < nd45_NOTIF_SEQ_NO_IN1_PIRXM.length; nd45_NOTIF_SEQ_NO_IN1_PIRXJ++) {
+ if (nd45_NOTIF_SEQ_NO_IN1_PIRXM[nd45_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd45_NOTIF_SEQ_NO_IN1_PIRXM[nd45_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
+ nd45_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
+ if (nd45_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
+ for (var nd45_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd45_NOTIF_SEQ_NO_IN1_PIRXK < nd45_NOTIF_SEQ_NO_IN1_PIRXM.length; nd45_NOTIF_SEQ_NO_IN1_PIRXK++) {
+ if (nd45_NOTIF_SEQ_NO_IN1_PIRXM[nd45_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd45_NOTIF_SEQ_NO_IN1_PIR.seq = nd45_NOTIF_SEQ_NO_IN1_PIRXM[nd45_NOTIF_SEQ_NO_IN1_PIRXK].value; nd45_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd45_NOTIF_SEQ_NO_IN1_PIRReq = nd45_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd45_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
+ // 步骤 45:SEQ10-5] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla45 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
+ var s45 = bind.sendApdu(sdCla45, "E2", "91", "00", nd45_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
+ bind.checkData("S45-C1 SW", "9000", s45.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s45.cmd, profileAidSession);
+ var ns45W = BindEs10xSingleRequest.parseBerTlv(s45.resp);
+ var ns45Ok0 = ns45W.length === 1 && ns45W[0].tag === "BF30";
+ var ns45In = ns45Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns45W[0].value) : [];
+ var ns45Code = (ns45In.length === 1 && ns45In[0].tag === "80") ? ns45In[0].value : "absent";
+ bind.checkData("S45-C2 响应结构匹配 #R_REMOVE_NOTIF_OK deleteNotificationStatus", "01", ns45Code);
+
+ // 步骤 46:SEQ10-6] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla46 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s46 = bind.sendApdu(sdCla46, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S46-C1 SW", "9000", s46.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw46T = BindEs10xSingleRequest.parseBerTlv(s46.resp);
+ var lw46Ok0 = lw46T.length === 1 && lw46T[0].tag === "BF28";
+ var lw46_br = lw46Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw46T[0].value) : [];
+ var lw46_brtag = lw46_br.length === 1 ? lw46_br[0].tag : "";
+ var lw46_els = lw46_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw46_br[0].value) : [];
+ bind.checkData("S46-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw46_brtag === "A0" && lw46_els.length === 0) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd47_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
+ var nd47_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
+ if (nd47_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd47_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
+ var nd47_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd47_NOTIF_SEQ_NO_IN1_PIRT[0].value);
+ if (nd47_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd47_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
+ var nd47_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd47_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
+ var nd47_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
+ for (var nd47_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd47_NOTIF_SEQ_NO_IN1_PIRXI < nd47_NOTIF_SEQ_NO_IN1_PIRX2.length; nd47_NOTIF_SEQ_NO_IN1_PIRXI++) {
+ if (nd47_NOTIF_SEQ_NO_IN1_PIRX2[nd47_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
+ var nd47_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd47_NOTIF_SEQ_NO_IN1_PIRX2[nd47_NOTIF_SEQ_NO_IN1_PIRXI].value);
+ for (var nd47_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd47_NOTIF_SEQ_NO_IN1_PIRXJ < nd47_NOTIF_SEQ_NO_IN1_PIRXM.length; nd47_NOTIF_SEQ_NO_IN1_PIRXJ++) {
+ if (nd47_NOTIF_SEQ_NO_IN1_PIRXM[nd47_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd47_NOTIF_SEQ_NO_IN1_PIRXM[nd47_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
+ nd47_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
+ if (nd47_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
+ for (var nd47_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd47_NOTIF_SEQ_NO_IN1_PIRXK < nd47_NOTIF_SEQ_NO_IN1_PIRXM.length; nd47_NOTIF_SEQ_NO_IN1_PIRXK++) {
+ if (nd47_NOTIF_SEQ_NO_IN1_PIRXM[nd47_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd47_NOTIF_SEQ_NO_IN1_PIR.seq = nd47_NOTIF_SEQ_NO_IN1_PIRXM[nd47_NOTIF_SEQ_NO_IN1_PIRXK].value; nd47_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd47_NOTIF_SEQ_NO_IN1_PIRReq = nd47_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd47_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
+ // 步骤 47:SEQ10-7] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla47 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
+ var s47 = bind.sendApdu(sdCla47, "E2", "91", "00", nd47_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
+ bind.checkData("S47-C1 SW", "9000", s47.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s47.cmd, profileAidSession);
+ var ns47W = BindEs10xSingleRequest.parseBerTlv(s47.resp);
+ var ns47Ok0 = ns47W.length === 1 && ns47W[0].tag === "BF30";
+ var ns47In = ns47Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns47W[0].value) : [];
+ var ns47Code = (ns47In.length === 1 && ns47In[0].tag === "80") ? ns47In[0].value : "absent";
+ bind.checkData("S47-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus", "01", ns47Code);
+
+ // 步骤 48:SEQ10-8] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla48 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S48-C1 SW", "9000", s48.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw48T = BindEs10xSingleRequest.parseBerTlv(s48.resp);
+ var lw48Ok0 = lw48T.length === 1 && lw48T[0].tag === "BF28";
+ var lw48_br = lw48Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw48T[0].value) : [];
+ var lw48_brtag = lw48_br.length === 1 ? lw48_br[0].tag : "";
+ var lw48_els = lw48_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw48_br[0].value) : [];
+ bind.checkData("S48-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw48_brtag === "A0" && lw48_els.length === 0) ? "1" : "0");
+
+ // notif_seq 运行时绑定(B-6 缺口④):NOTIF_SEQ_NO_IN1_PIR ← 步 40 ListNotification 响应 BF28→A0→BF2F 元素 op[1]=80 第 2 命中的 seqNumber[0](AUTOMATIC TAGS 机械链)
+ var nd49_NOTIF_SEQ_NO_IN1_PIR = {ok: false, seq: ""};
+ var nd49_NOTIF_SEQ_NO_IN1_PIRT = BindEs10xSingleRequest.parseBerTlv(s40.resp);
+ if (nd49_NOTIF_SEQ_NO_IN1_PIRT.length === 1 && nd49_NOTIF_SEQ_NO_IN1_PIRT[0].tag === "BF28") {
+ var nd49_NOTIF_SEQ_NO_IN1_PIRX1 = BindEs10xSingleRequest.parseBerTlv(nd49_NOTIF_SEQ_NO_IN1_PIRT[0].value);
+ if (nd49_NOTIF_SEQ_NO_IN1_PIRX1.length === 1 && nd49_NOTIF_SEQ_NO_IN1_PIRX1[0].tag === "A0") {
+ var nd49_NOTIF_SEQ_NO_IN1_PIRX2 = BindEs10xSingleRequest.parseBerTlv(nd49_NOTIF_SEQ_NO_IN1_PIRX1[0].value);
+ var nd49_NOTIF_SEQ_NO_IN1_PIRXHIT = 0;
+ for (var nd49_NOTIF_SEQ_NO_IN1_PIRXI = 0; nd49_NOTIF_SEQ_NO_IN1_PIRXI < nd49_NOTIF_SEQ_NO_IN1_PIRX2.length; nd49_NOTIF_SEQ_NO_IN1_PIRXI++) {
+ if (nd49_NOTIF_SEQ_NO_IN1_PIRX2[nd49_NOTIF_SEQ_NO_IN1_PIRXI].tag !== "BF2F") { continue; }
+ var nd49_NOTIF_SEQ_NO_IN1_PIRXM = BindEs10xSingleRequest.parseBerTlv(nd49_NOTIF_SEQ_NO_IN1_PIRX2[nd49_NOTIF_SEQ_NO_IN1_PIRXI].value);
+ for (var nd49_NOTIF_SEQ_NO_IN1_PIRXJ = 0; nd49_NOTIF_SEQ_NO_IN1_PIRXJ < nd49_NOTIF_SEQ_NO_IN1_PIRXM.length; nd49_NOTIF_SEQ_NO_IN1_PIRXJ++) {
+ if (nd49_NOTIF_SEQ_NO_IN1_PIRXM[nd49_NOTIF_SEQ_NO_IN1_PIRXJ].tag === "81" && nd49_NOTIF_SEQ_NO_IN1_PIRXM[nd49_NOTIF_SEQ_NO_IN1_PIRXJ].value === "80") {
+ nd49_NOTIF_SEQ_NO_IN1_PIRXHIT += 1;
+ if (nd49_NOTIF_SEQ_NO_IN1_PIRXHIT === 2) {
+ for (var nd49_NOTIF_SEQ_NO_IN1_PIRXK = 0; nd49_NOTIF_SEQ_NO_IN1_PIRXK < nd49_NOTIF_SEQ_NO_IN1_PIRXM.length; nd49_NOTIF_SEQ_NO_IN1_PIRXK++) {
+ if (nd49_NOTIF_SEQ_NO_IN1_PIRXM[nd49_NOTIF_SEQ_NO_IN1_PIRXK].tag === "80") { nd49_NOTIF_SEQ_NO_IN1_PIR.seq = nd49_NOTIF_SEQ_NO_IN1_PIRXM[nd49_NOTIF_SEQ_NO_IN1_PIRXK].value; nd49_NOTIF_SEQ_NO_IN1_PIR.ok = true; }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ var nd49_NOTIF_SEQ_NO_IN1_PIRReq = nd49_NOTIF_SEQ_NO_IN1_PIR.ok ? BindEs10xSingleRequest.buildTlv("BF30", BindEs10xSingleRequest.buildTlv("80", nd49_NOTIF_SEQ_NO_IN1_PIR.seq)) : "";
+ // 步骤 49:SEQ10-9] MTD_STORE_DATA(tc_step;REQ: RQ35_021, RQ57_077, RQ57_078, RQ57_079)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla49 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ // runtime-bound payload: NOTIF_SEQ_NO_IN1_PIR stays in execution domain
+ var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", nd49_NOTIF_SEQ_NO_IN1_PIRReq, "00", "9000");
+ bind.checkData("S49-C1 SW", "9000", s49.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "NOTIF_SEQ_NO_IN1_PIR", s49.cmd, profileAidSession);
+ var ns49W = BindEs10xSingleRequest.parseBerTlv(s49.resp);
+ var ns49Ok0 = ns49W.length === 1 && ns49W[0].tag === "BF30";
+ var ns49In = ns49Ok0 ? BindEs10xSingleRequest.parseBerTlv(ns49W[0].value) : [];
+ var ns49Code = (ns49In.length === 1 && ns49In[0].tag === "80") ? ns49In[0].value : "absent";
+ bind.checkData("S49-C2 响应结构匹配 #R_REMOVE_NOTIF_NOTHING_TO_DELETE deleteNotificationStatus", "01", ns49Code);
+
+ // 步骤 50:SEQ10-10] 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 sdCla50 = s55.chan !== null ? (s55.chan <= 3 ? 128 + s55.chan : 188 + s55.chan).toString(16).toUpperCase() : null;
+ var s50 = bind.sendApdu(sdCla50, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S50-C1 SW", "9000", s50.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.RemoveNotificationFromList,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw50T = BindEs10xSingleRequest.parseBerTlv(s50.resp);
+ var lw50Ok0 = lw50T.length === 1 && lw50T[0].tag === "BF28";
+ var lw50_br = lw50Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw50T[0].value) : [];
+ var lw50_brtag = lw50_br.length === 1 ? lw50_br[0].tag : "";
+ var lw50_els = lw50_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw50_br[0].value) : [];
+ bind.checkData("S50-C2 响应结构匹配 #R_LIST_NOTIF_NONE:ListNotificationResponse notificat branch/count", "1", (lw50_brtag === "A0" && lw50_els.length === 0) ? "1" : "0");
}