源码对照:4.2.14.2.1
ES10b 列出通知 / TC_eUICC_ES10b.ListNotification
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
2496 行 / 138808 字符 / gb18030
-cas 入口
TC_eUICC_ES10b_ListNotification/Import/TC_eUICC_ES10b_ListNotification.js
2830 行 / 231323 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js2496 行 / 138808 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10b_ListNotification_01_Nominal_Install_Notification + TC_eUICC_ES10b_ListNotification_02_Nominal_Enable_Notification + TC_eUICC_ES10b_ListNotification_03_Nominal_Disable_Notification + TC_eUICC_ES10b_ListNotification_04_Nominal_Delete_Notification + TC_eUICC_ES10b_ListNotification_05_Nominal_Two_Install_Notifications_PIR_with_different_Notification_Address + TC_eUICC_ES10b_ListNotification_06_Nominal_Install_Notification_PIR_and_Enable_Notification + TC_eUICC_ES10b_ListNotification_07_Nominal_Disable_and_Delete_Notifications + TC_eUICC_ES10b_ListNotification_08_Nominal_Install_OtherSignedNotification_and_Enable_Notification + TC_eUICC_ES10b_ListNotification_09_Nominal_Enable_and_Install_PIR_Notifications + TC_eUICC_ES10b_ListNotification_10_Nominal_No_Notifications_available (extracted verbatim)
2
3function TC_eUICC_ES10b_ListNotification_01_Nominal_Install_Notification()
4{
5 tracenamestr = "测试目的:列举安装通知";
6 curDis.TraceStart(sno++,tracenamestr);
7
8 curDis.TestStepStart2(stno++,"复位;");
9 ResetCard();
10
11 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
12 TS_TERMINAL_CAPABILITY_cmd();
13
14 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
15 TS_MANAGE_CHANNEL_OPEN();
16
17 curLogicChannel = 1;
18
19 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
20 TS_SELECT("Select ISD",ISD_R_AID,"9000");
21
22 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
23 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
24 Profile_load_procedure.ES10b_ListNotification();
25
26 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
27 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
28 Profile_load_procedure.ES10b_GetEUICCInfo1();
29
30 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
31 Profile_load_procedure.ES10b_GetEUICCChallenge();
32
33 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
34 Profile_load_procedure.ES10b_AuthenticateServer();
35
36 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
37 Profile_load_procedure.ES10b_PrepareDownload();
38
39 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
40 Profile_load_procedure.ES10b_GetEID();
41
42 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
43 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
44 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
45 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
46 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
47 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
48
49 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
50 Profile_load_procedure.ES10b_ListNotification("04F0");
51 try
52 {
53 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
54 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
55 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
56
57 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
58 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
59 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
60 }catch(e){
61 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
62 }
63
64 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
65 Profile_load_procedure.ES10b_ListNotification();
66 try
67 {
68 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
69 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
70 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
71
72 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
73 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
74 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
75 }catch(e){
76 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
77 }
78
79 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
80 Profile_load_procedure.ES10b_ListNotification("");
81 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
82
83 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
84 Profile_load_procedure.ES10b_ListNotification("0780");
85 try
86 {
87 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
88 curStrHandle.CheckData(Profile_load_procedure.serverAddress,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
91 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
92 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
93 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
94 }catch(e){
95 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
96 }
97
98 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
99 Profile_load_procedure.ES10b_ListNotification("0640");
100 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
101
102 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
103 Profile_load_procedure.ES10b_ListNotification("0520");
104 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
105
106 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
107 Profile_load_procedure.ES10b_ListNotification("0410");
108 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
109
110 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
111 Profile_load_procedure.ES10b_ListNotification("06C0");
112 try
113 {
114 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
115 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
116 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
117
118 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
119 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
120 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
121 }catch(e){
122 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
123 }
124
125 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
126 Profile_load_procedure.ES10b_ListNotification("0430");
127 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
128
129 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
130 Profile_load_procedure.ES10b_ListNotification("0560");
131 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
132
133 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
134 Profile_load_procedure.ES10b_ListNotification("05E0");
135 try
136 {
137 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
138 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
139 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
140
141 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
142 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
143 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
144 }catch(e){
145 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
146 }
147
148 RecoverCard();
149}
150
151function TC_eUICC_ES10b_ListNotification_02_Nominal_Enable_Notification()
152{
153
154 tracenamestr = "测试目的:列举激活profile通知";
155 curDis.TraceStart(sno++,tracenamestr);
156
157 curDis.TestStepStart2(stno++,"复位;");
158 ResetCard();
159
160 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
161 TS_TERMINAL_CAPABILITY_cmd();
162
163 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
164 TS_MANAGE_CHANNEL_OPEN();
165
166 curLogicChannel = 1;
167
168 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
169 TS_SELECT("Select ISD",ISD_R_AID,"9000");
170
171 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
172 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
173 Profile_load_procedure.ES10b_ListNotification();
174
175 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
176 for(var i=0;i<NotificationLen;i++)
177 {
178 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
179 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
180 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
181 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
182 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
183 }
184
185 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
186 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
187
188 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
189 Profile_load_procedure.ES10b_GetEUICCInfo1();
190
191 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
192 Profile_load_procedure.ES10b_GetEUICCChallenge();
193
194 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
195 Profile_load_procedure.ES10b_AuthenticateServer();
196
197 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
198 Profile_load_procedure.ES10b_PrepareDownload();
199
200 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
201 Profile_load_procedure.ES10b_GetEID();
202
203 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
204 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
205 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
206 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
207 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
208 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
209
210 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
211 Profile_load_procedure.ES10b_ListNotification();
212 try
213 {
214 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
215 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
216 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
217 }catch(e){
218 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
219 }
220
221 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
222 for(var i=0;i<NotificationLen;i++)
223 {
224 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
225 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
226 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
227 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
228 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
229 }
230
231 stno = 1;
232 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
233 TS_SELECT("Select ISD",ISD_R_AID,"9000");
234
235 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
236 var enableProRequest = new EnableProfileRequest();
237 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
238 enableProRequest.refreshFlag = "00";
239 enableProRequest.GenHexData();
240 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
241
242 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
243
244 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
245 var proInfoListRequest = new ProfileInfoListRequest();
246 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
247 proInfoListRequest.tagList = "5A4F9F70";
248 proInfoListRequest.GenHexData();
249 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
250
251 var proInfoListResponse = new ProfileInfoListResponse();
252 proInfoListResponse.checkCardResDataFormat(respData);
253
254 try
255 {
256 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
257 curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
258 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
259 }catch(e){
260 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
261 }
262
263 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
264 Profile_load_procedure.ES10b_ListNotification("04F0");
265 try
266 {
267 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
268 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
269 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
270 }catch(e){
271 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
272 }
273
274 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
275 Profile_load_procedure.ES10b_ListNotification();
276 try
277 {
278 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
279 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
280 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
281 }catch(e){
282 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
283 }
284
285 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
286 Profile_load_procedure.ES10b_ListNotification("");
287 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
288
289 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
290 Profile_load_procedure.ES10b_ListNotification("0780");
291 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
292
293 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
294 Profile_load_procedure.ES10b_ListNotification("0640");
295 try
296 {
297 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
298 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
299 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
300 }catch(e){
301 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
302 }
303
304 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
305 Profile_load_procedure.ES10b_ListNotification("0520");
306 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
307
308 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
309 Profile_load_procedure.ES10b_ListNotification("0410");
310 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
311
312 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
313 Profile_load_procedure.ES10b_ListNotification("06C0");
314 try
315 {
316 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
317 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
318 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
319 }catch(e){
320 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
321 }
322
323 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
324 Profile_load_procedure.ES10b_ListNotification("0430");
325 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
326
327 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
328 Profile_load_procedure.ES10b_ListNotification("0560");
329 try
330 {
331 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
332 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
333 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
334 }catch(e){
335 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
336 }
337
338 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
339 Profile_load_procedure.ES10b_ListNotification("05E0");
340 try
341 {
342 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
343 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
344 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
345 }catch(e){
346 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
347 }
348
349 RecoverCard();
350}
351
352function TC_eUICC_ES10b_ListNotification_03_Nominal_Disable_Notification()
353{
354
355 tracenamestr = "测试目的:列举去激活profile通知";
356 curDis.TraceStart(sno++,tracenamestr);
357
358 curDis.TestStepStart2(stno++,"复位;");
359 ResetCard();
360
361 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
362 TS_TERMINAL_CAPABILITY_cmd();
363
364 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
365 TS_MANAGE_CHANNEL_OPEN();
366
367 curLogicChannel = 1;
368
369 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
370 TS_SELECT("Select ISD",ISD_R_AID,"9000");
371
372 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
373
374 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
375 Profile_load_procedure.ES10b_ListNotification();
376
377 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
378 for(var i=0;i<NotificationLen;i++)
379 {
380 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
381 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
382 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
383 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
384 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
385 }
386
387 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
388 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
389
390 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
391 Profile_load_procedure.ES10b_GetEUICCInfo1();
392
393 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
394 Profile_load_procedure.ES10b_GetEUICCChallenge();
395
396 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
397 Profile_load_procedure.ES10b_AuthenticateServer();
398
399 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
400 Profile_load_procedure.ES10b_PrepareDownload();
401
402 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
403 Profile_load_procedure.ES10b_GetEID();
404
405 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
406 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
407 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
408 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
409 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
410 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
411
412 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
413
414 Profile_load_procedure.ES10b_ListNotification();
415 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
416 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
417 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
418
419 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
420 for(var i=0;i<NotificationLen;i++)
421 {
422 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
423 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
424 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
425 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
426 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
427 }
428
429 stno = 1;
430 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
431 TS_SELECT("Select ISD",ISD_R_AID,"9000");
432
433 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
434 var enableProRequest = new EnableProfileRequest();
435 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
436 enableProRequest.refreshFlag = "00";
437 enableProRequest.GenHexData();
438 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
439
440 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
441
442 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
443 var proInfoListRequest = new ProfileInfoListRequest();
444 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
445 proInfoListRequest.tagList = "5A4F9F70";
446 proInfoListRequest.GenHexData();
447 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
448
449
450 var proInfoListResponse = new ProfileInfoListResponse();
451 proInfoListResponse.checkCardResDataFormat(respData);
452
453 try
454 {
455 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
456 curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
457 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
458 }catch(e){
459 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
460 }
461
462 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
463 Profile_load_procedure.ES10b_ListNotification("04F0");
464 try
465 {
466 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
467 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
468 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
469 }catch(e){
470 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
471 }
472
473 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
474 Profile_load_procedure.ES10b_ListNotification();
475 try
476 {
477 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
478 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
479 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
480 }catch(e){
481 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
482 }
483
484 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
485 for(var i=0;i<NotificationLen;i++)
486 {
487 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
488 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
489 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
490 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
491 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
492 }
493
494 RecoverCard();
495
496}
497
498function TC_eUICC_ES10b_ListNotification_04_Nominal_Delete_Notification()
499{
500
501 tracenamestr = "测试目的:列举删除profile通知";
502 curDis.TraceStart(sno++,tracenamestr);
503
504 curDis.TestStepStart2(stno++,"复位;");
505 ResetCard();
506
507 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
508 TS_TERMINAL_CAPABILITY_cmd();
509
510 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
511 TS_MANAGE_CHANNEL_OPEN();
512
513 curLogicChannel = 1;
514
515 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
516 TS_SELECT("Select ISD",ISD_R_AID,"9000");
517
518 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
519
520 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
521 Profile_load_procedure.ES10b_ListNotification();
522
523 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
524 for(var i=0;i<NotificationLen;i++)
525 {
526 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
527 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
528 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
529 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
530 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
531 }
532
533 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
534 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
535
536 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
537 Profile_load_procedure.ES10b_GetEUICCInfo1();
538
539 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
540 Profile_load_procedure.ES10b_GetEUICCChallenge();
541
542 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
543 Profile_load_procedure.ES10b_AuthenticateServer();
544
545 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
546 Profile_load_procedure.ES10b_PrepareDownload();
547
548 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
549 Profile_load_procedure.ES10b_GetEID();
550
551 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
552 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
553 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
554 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
555 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
556 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
557
558 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
559 Profile_load_procedure.ES10b_ListNotification();
560 try
561 {
562 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
563 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
564 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
565 }catch(e){
566 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
567 }
568
569 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
570 for(var i=0;i<NotificationLen;i++)
571 {
572 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
573 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
574 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
575 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
576 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
577 }
578
579 stno = 1;
580 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
581 TS_SELECT("Select ISD",ISD_R_AID,"9000");
582
583 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
584 var enableProRequest = new EnableProfileRequest();
585 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
586 enableProRequest.refreshFlag = "00";
587 enableProRequest.GenHexData();
588 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
589
590 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
591
592 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
593 var proInfoListRequest = new ProfileInfoListRequest();
594 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
595 proInfoListRequest.tagList = "5A4F9F70";
596 proInfoListRequest.GenHexData();
597 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
598
599 var proInfoListResponse = new ProfileInfoListResponse();
600 proInfoListResponse.checkCardResDataFormat(respData);
601
602 try
603 {
604 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
605 curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
606 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
607 }catch(e){
608 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
609 }
610
611 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
612 Profile_load_procedure.ES10b_ListNotification("04F0");
613 try
614 {
615 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
616 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
617 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
618 }catch(e){
619 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
620 }
621
622 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
623 Profile_load_procedure.ES10b_ListNotification();
624 try
625 {
626 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
627 curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
628 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
629 }catch(e){
630 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
631 }
632
633 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
634 for(var i=0;i<NotificationLen;i++)
635 {
636 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
637 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
638 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
639 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
640 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
641 }
642
643 RecoverCard();
644}
645
646function TC_eUICC_ES10b_ListNotification_05_Nominal_Two_Install_Notifications_PIR_with_different_Notification_Address()
647{
648 if(!Card_Have_ECC_Cert)
649 return;
650
651 //测试入口条件
652 if(!check_Applicability_of_tests_RSP_SGP23_test("C025"))
653 return;
654
655 tracenamestr = "Remove Notification";
656 curDis.TraceStart(sno++,tracenamestr);
657
658 curDis.TestStepStart2(stno++,"复位;");
659 ResetCard();
660
661 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
662 TS_TERMINAL_CAPABILITY_cmd();
663
664 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
665 TS_MANAGE_CHANNEL_OPEN();
666
667 curLogicChannel = 1;
668
669 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
670 TS_SELECT("Select ISD",ISD_R_AID,"9000");
671
672 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
673 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
674 Profile_load_procedure.ES10b_ListNotification();
675
676 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
677 for(var i=0;i<NotificationLen;i++)
678 {
679 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
680 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
681 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
682 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
683 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
684 }
685
686 tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. Do not remove the Notification";
687 curDis.TraceStart(sno++,tracenamestr);
688
689 curLogicChannel = 0;
690
691 curDis.TestStepStart("复位;");
692 ResetCard();
693
694 curDis.TestStepStart("读卡器向卡片发送Terminal Capability命令;");
695 TS_TERMINAL_CAPABILITY_cmd();
696
697 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
698 TS_MANAGE_CHANNEL_OPEN();
699
700 curLogicChannel = 1;
701
702 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
703 TS_SELECT("Select ISD",ISD_R_AID,"9000");
704
705 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
706 pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
707 pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
708
709 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
710 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
711 Profile_load_procedure.ES10b_GetEUICCInfo1();
712
713 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
714 Profile_load_procedure.ES10b_GetEUICCChallenge();
715
716 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
717 Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
718 Profile_load_procedure.ES10b_AuthenticateServer();
719
720 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
721 Profile_load_procedure.ES10b_PrepareDownload();
722
723 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
724 Profile_load_procedure.ES10b_GetEID();
725
726 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
727 Profile_load_procedure.serviceProviderName = SP_NAME1;
728 Profile_load_procedure.profileName = NAME_OP_PROF1;
729 Profile_load_procedure.iconType = "01";
730 Profile_load_procedure.icon = ICON_OP_PROF1;
731 Profile_load_procedure.profileClass = "02";
732 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
733 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
734 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
735 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
736 Profile_load_procedure.mccMnc = MCC_MNC1;
737
738 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
739
740 tracenamestr = "Install PROFILE_OPERATIONAL2 with #METADATA_OP_PROF2_NO_INSTALL.Do not remove the Notification";
741 curDis.TraceStart(sno++,tracenamestr);
742
743 curLogicChannel = 0;
744
745 curDis.TestStepStart("eUICC卡片初始化;");
746 Ini_powerOn_eUICC_LPAe_not_activate();
747
748 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
749 TS_MANAGE_CHANNEL_OPEN();
750
751 curLogicChannel = 1;
752
753 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
754 TS_SELECT("Select ISD",ISD_R_AID,"9000");
755
756 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
757 pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
758 pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
759
760 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL2_DATA);
761 Profile_load_procedure.ICCID = ICCID_OP_PROF2;
762 Profile_load_procedure.ES10b_GetEUICCInfo1();
763
764 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
765 Profile_load_procedure.ES10b_GetEUICCChallenge();
766
767 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
768 Profile_load_procedure.serverAddress = TEST_DP_ADDRESS2;
769 Profile_load_procedure.DPauthInforObj.D_key = SK_S_SM_DP2auth_ECDSA_NIST;
770 Profile_load_procedure.DPauthInforObj.Cert = CERT_S_SM_DP2auth_ECDSA_NIST;
771 Profile_load_procedure.ES10b_AuthenticateServer();
772
773 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
774 Profile_load_procedure.DPbpInforObj.D_key = SK_S_SM_DP2pb_ECDSA_NIST;
775 Profile_load_procedure.DPbpInforObj.Cert = CERT_S_SM_DP2pb_ECDSA_NIST;
776 Profile_load_procedure.DPbpInforObj.registeredID = DP2pb_prime256v1_OID;
777 Profile_load_procedure.ES10b_PrepareDownload();
778
779 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
780 Profile_load_procedure.ES10b_GetEID();
781
782 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
783 Profile_load_procedure.serviceProviderName = SP_NAME2;
784 Profile_load_procedure.profileName = NAME_OP_PROF2;
785 Profile_load_procedure.iconType = "01";
786 Profile_load_procedure.icon = ICON_OP_PROF2;
787 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
788 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
789 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
790 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS2;
791 Profile_load_procedure.profileClass = "02";
792 Profile_load_procedure.mccMnc = MCC_MNC2;
793 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
794
795
796 tracenamestr = "Install Notification";
797 curDis.TraceStart(sno++,tracenamestr);
798
799 curLogicChannel = 0;
800
801 curDis.TestStepStart2(stno++,"复位;");
802 ResetCard();
803
804 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
805 TS_TERMINAL_CAPABILITY_cmd();
806
807 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
808 TS_MANAGE_CHANNEL_OPEN();
809
810 curLogicChannel = 1;
811
812 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
813 TS_SELECT("Select ISD",ISD_R_AID,"9000");
814
815 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
816 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
817 Profile_load_procedure.ES10b_ListNotification("04F0");
818 try
819 {
820 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
821 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
822 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
823
824 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
825 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
826 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
827 }catch(e){
828 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
829 }
830
831 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
832 Profile_load_procedure.ES10b_ListNotification();
833 try
834 {
835 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
836 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
837 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
838
839 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
840 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
841 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
842 }catch(e){
843 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
844 }
845
846 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
847 Profile_load_procedure.ES10b_ListNotification("");
848 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
849
850 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
851 Profile_load_procedure.ES10b_ListNotification("0780");
852 try
853 {
854 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
855 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
856 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
857
858 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
859 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
860 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
861 }catch(e){
862 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
863 }
864
865 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
866 Profile_load_procedure.ES10b_ListNotification("0640");
867 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
868
869 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
870 Profile_load_procedure.ES10b_ListNotification("0520");
871 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
872
873 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
874 Profile_load_procedure.ES10b_ListNotification("0410");
875 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
876
877 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
878 Profile_load_procedure.ES10b_ListNotification("06C0");
879 try
880 {
881 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
882 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
883 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
884
885 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
886 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
887 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
888 }catch(e){
889 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
890 }
891
892 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
893 Profile_load_procedure.ES10b_ListNotification("0430");
894 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
895
896 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
897 Profile_load_procedure.ES10b_ListNotification("0560");
898 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
899
900 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
901 Profile_load_procedure.ES10b_ListNotification("05E0");
902 try
903 {
904 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
905 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
906 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
907
908 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
909 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
910 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
911 }catch(e){
912 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
913 }
914
915
916 tracenamestr = "DELETE PROFILE_OPERATIONAL1 , PROFILE_OPERATIONAL2";
917 curDis.TraceStart(sno++,tracenamestr);
918
919 curLogicChannel = 0;
920
921 curDis.TestStepStart2(stno++,"复位;");
922 ResetCard();
923
924 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
925 TS_TERMINAL_CAPABILITY_cmd();
926
927 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
928 TS_MANAGE_CHANNEL_OPEN();
929
930 curLogicChannel = 1;
931 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
932 TS_SELECT("Select ISD",ISD_R_AID,"9000");
933
934 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
935 var deleProfileRequest = new DeleteProfileRequest();
936 deleProfileRequest.iccid = ICCID_OP_PROF1;
937 deleProfileRequest.GenHexData();
938 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
939
940 curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
941
942 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
943 var proInfoListRequest = new ProfileInfoListRequest();
944 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
945 proInfoListRequest.tagList = "5A4F9F70";
946 proInfoListRequest.GenHexData();
947 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
948
949 var proInfoListResponse = new ProfileInfoListResponse();
950 proInfoListResponse.checkCardResDataFormat(respData);
951
952 try
953 {
954 curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
955 }catch(e){
956 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
957 }
958
959 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
960 var deleProfileRequest = new DeleteProfileRequest();
961 deleProfileRequest.iccid = ICCID_OP_PROF2;
962 deleProfileRequest.GenHexData();
963 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
964
965 curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
966
967 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
968 var proInfoListRequest = new ProfileInfoListRequest();
969 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF2);
970 proInfoListRequest.tagList = "5A4F9F70";
971 proInfoListRequest.GenHexData();
972 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
973
974 var proInfoListResponse = new ProfileInfoListResponse();
975 proInfoListResponse.checkCardResDataFormat(respData);
976
977 try
978 {
979 curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
980 }catch(e){
981 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
982 }
983
984 RecoverCard();
985}
986
987function TC_eUICC_ES10b_ListNotification_06_Nominal_Install_Notification_PIR_and_Enable_Notification()
988{
989 tracenamestr = "Remove Notification";
990 curDis.TraceStart(sno++,tracenamestr);
991
992 curDis.TestStepStart2(stno++,"复位;");
993 ResetCard();
994
995 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
996 TS_TERMINAL_CAPABILITY_cmd();
997
998 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
999 TS_MANAGE_CHANNEL_OPEN();
1000
1001 curLogicChannel = 1;
1002
1003 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1004 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1005
1006 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1007 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1008 Profile_load_procedure.ES10b_ListNotification();
1009
1010 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
1011 for(var i=0;i<NotificationLen;i++)
1012 {
1013 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1014 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
1015 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1016 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1017 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1018 }
1019
1020
1021 tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. ";
1022 curDis.TraceStart(sno++,tracenamestr);
1023
1024 curLogicChannel = 0;
1025
1026 curDis.TestStepStart("eUICC卡片初始化;");
1027 Ini_powerOn_eUICC_LPAe_not_activate();
1028
1029 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1030 TS_MANAGE_CHANNEL_OPEN();
1031
1032 curLogicChannel = 1;
1033
1034 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1035 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1036
1037 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
1038
1039 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1040 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
1041 Profile_load_procedure.ES10b_GetEUICCInfo1();
1042
1043 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
1044 Profile_load_procedure.ES10b_GetEUICCChallenge();
1045
1046 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
1047 Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
1048 Profile_load_procedure.ES10b_AuthenticateServer();
1049
1050 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
1051 Profile_load_procedure.ES10b_PrepareDownload();
1052
1053 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
1054 Profile_load_procedure.ES10b_GetEID();
1055
1056 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
1057
1058 Profile_load_procedure.serviceProviderName = SP_NAME1;
1059 Profile_load_procedure.profileName = NAME_OP_PROF1;
1060 Profile_load_procedure.iconType = "01";
1061 Profile_load_procedure.icon = ICON_OP_PROF1;
1062 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
1063 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
1064 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
1065 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
1066 Profile_load_procedure.profileClass = "02";
1067 Profile_load_procedure.mccMnc = MCC_MNC1;
1068
1069 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
1070
1071 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1072 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1073
1074 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
1075 var enableProRequest = new EnableProfileRequest();
1076 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
1077 enableProRequest.refreshFlag = "00";
1078 enableProRequest.GenHexData();
1079 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
1080
1081 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
1082
1083 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1084 var proInfoListRequest = new ProfileInfoListRequest();
1085 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1086 proInfoListRequest.tagList = "5A4F9F70";
1087 proInfoListRequest.GenHexData();
1088 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1089
1090 var proInfoListResponse = new ProfileInfoListResponse();
1091 proInfoListResponse.checkCardResDataFormat(respData);
1092
1093 try
1094 {
1095 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
1096 curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
1097 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
1098 }catch(e){
1099 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1100 }
1101
1102
1103 tracenamestr = "Install Notification (PIR) and Enable Notification ";
1104 curDis.TraceStart(sno++,tracenamestr);
1105
1106 curLogicChannel = 0;
1107
1108 curDis.TestStepStart2(stno++,"复位;");
1109 ResetCard();
1110
1111 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1112 TS_TERMINAL_CAPABILITY_cmd();
1113
1114 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1115 TS_MANAGE_CHANNEL_OPEN();
1116
1117 curLogicChannel = 1;
1118
1119 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1120 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1121
1122 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1123 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1124 Profile_load_procedure.ES10b_ListNotification("04F0");
1125
1126 try
1127 {
1128 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1129 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1130 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1131
1132 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1133 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1134 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1135 }catch(e){
1136 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1137 }
1138
1139 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1140 Profile_load_procedure.ES10b_ListNotification();
1141
1142 try
1143 {
1144 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1145 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1146 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1147
1148 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1149 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1150 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1151 }catch(e){
1152 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1153 }
1154
1155 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1156 Profile_load_procedure.ES10b_ListNotification("");
1157 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1158
1159 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1160 Profile_load_procedure.ES10b_ListNotification("0780");
1161
1162 try
1163 {
1164 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1165 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1166 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1167 }catch(e){
1168 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1169 }
1170
1171 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1172 Profile_load_procedure.ES10b_ListNotification("0640");
1173
1174 try
1175 {
1176 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1177 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1178 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1179 }catch(e){
1180 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1181 }
1182
1183 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1184 Profile_load_procedure.ES10b_ListNotification("0520");
1185 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1186
1187 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1188 Profile_load_procedure.ES10b_ListNotification("0410");
1189 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1190
1191 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1192 Profile_load_procedure.ES10b_ListNotification("06C0");
1193
1194 try
1195 {
1196 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1197 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1198 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1199
1200 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1201 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1202 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1203 }catch(e){
1204 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1205 }
1206
1207 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1208 Profile_load_procedure.ES10b_ListNotification("0430");
1209 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1210
1211 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1212 Profile_load_procedure.ES10b_ListNotification("0560");
1213
1214 try
1215 {
1216 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1217 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1218 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1219 }catch(e){
1220 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1221 }
1222
1223 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1224 Profile_load_procedure.ES10b_ListNotification("05E0");
1225
1226 try
1227 {
1228 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1229 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1230 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1231
1232 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1233 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1234 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1235 }catch(e){
1236 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1237 }
1238
1239 RecoverCard();
1240}
1241
1242function TC_eUICC_ES10b_ListNotification_07_Nominal_Disable_and_Delete_Notifications()
1243{
1244 tracenamestr = "Remove Notification";
1245 curDis.TraceStart(sno++,tracenamestr);
1246
1247 curDis.TestStepStart2(stno++,"复位;");
1248 ResetCard();
1249
1250 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1251 TS_TERMINAL_CAPABILITY_cmd();
1252
1253 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1254 TS_MANAGE_CHANNEL_OPEN();
1255
1256 curLogicChannel = 1;
1257
1258 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1259 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1260
1261 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1262 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1263 Profile_load_procedure.ES10b_ListNotification();
1264
1265 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
1266 for(var i=0;i<NotificationLen;i++)
1267 {
1268 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1269 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
1270 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1271 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1272 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1273 }
1274
1275
1276 tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. ";
1277 curDis.TraceStart(sno++,tracenamestr);
1278
1279 curLogicChannel = 0;
1280
1281 curDis.TestStepStart("eUICC卡片初始化;");
1282 Ini_powerOn_eUICC_LPAe_not_activate();
1283
1284 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1285 TS_MANAGE_CHANNEL_OPEN();
1286
1287 curLogicChannel = 1;
1288
1289 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1290 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1291
1292 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
1293
1294 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1295 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
1296 Profile_load_procedure.ES10b_GetEUICCInfo1();
1297
1298 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
1299 Profile_load_procedure.ES10b_GetEUICCChallenge();
1300
1301 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
1302 Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
1303 Profile_load_procedure.ES10b_AuthenticateServer();
1304
1305 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
1306 Profile_load_procedure.ES10b_PrepareDownload();
1307
1308 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
1309 Profile_load_procedure.ES10b_GetEID();
1310
1311 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
1312 Profile_load_procedure.serviceProviderName = SP_NAME1;
1313 Profile_load_procedure.profileName = NAME_OP_PROF1;
1314 Profile_load_procedure.iconType = "01";
1315 Profile_load_procedure.icon = ICON_OP_PROF1;
1316 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
1317 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
1318 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
1319 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
1320 Profile_load_procedure.profileClass = "02";
1321 Profile_load_procedure.mccMnc = MCC_MNC1;
1322
1323 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
1324
1325 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1326 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1327
1328 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
1329 var enableProRequest = new EnableProfileRequest();
1330 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
1331 enableProRequest.refreshFlag = "00";
1332 enableProRequest.GenHexData();
1333 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
1334
1335 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
1336
1337 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1338 var proInfoListRequest = new ProfileInfoListRequest();
1339 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1340 proInfoListRequest.tagList = "5A4F9F70";
1341 proInfoListRequest.GenHexData();
1342 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1343
1344 var proInfoListResponse = new ProfileInfoListResponse();
1345 proInfoListResponse.checkCardResDataFormat(respData);
1346
1347 try
1348 {
1349 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
1350 curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
1351 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
1352 }catch(e){
1353 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1354 }
1355
1356
1357 tracenamestr = "Remove Notification";
1358 curDis.TraceStart(sno++,tracenamestr);
1359
1360 curLogicChannel = 0;
1361
1362 curDis.TestStepStart2(stno++,"复位;");
1363 ResetCard();
1364
1365 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1366 TS_TERMINAL_CAPABILITY_cmd();
1367
1368 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1369 TS_MANAGE_CHANNEL_OPEN();
1370
1371 curLogicChannel = 1;
1372
1373 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1374 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1375
1376 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1377 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1378 Profile_load_procedure.ES10b_ListNotification();
1379
1380 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
1381 for(var i=0;i<NotificationLen;i++)
1382 {
1383 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1384 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
1385 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1386 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1387 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1388 }
1389
1390
1391 tracenamestr = "还原卡片删除Enabled状态的PROFILE_OPERATIONAL1";
1392 curDis.TraceStart(sno++,tracenamestr);
1393
1394 curLogicChannel = 0;
1395 curDis.TestStepStart("eUICC卡片初始化;");
1396 Ini_powerOn_eUICC_LPAe_not_activate();
1397
1398 curDis.TestStepStart("读卡器向卡片发送 Terminal Profile命令,进行主动式命令交互;");
1399 IniCard_SetUpMenu("",1);
1400
1401 counterC = 2000;
1402
1403 curDis.TestStepStart("读卡器向卡片发送 Envelope命令,执行策略更新命令;");
1404 sSendType = SendTypeByOTA.SMS;
1405
1406 KIC = MNO_SCP80_ENC_KEY;
1407 KID = MNO_SCP80_AUTH_KEY;
1408 KIK = MNO_SCP80_DATA_ENC_KEY;
1409 if (UpdatePPRformat == Remote_APDU_format.Compact)
1410 {
1411 //简单格式更新策略
1412
1413 InstallForPerson = new InstallForPersonalizationPara(RESERVED_ISD_P_AID);
1414
1415 var sdatain = "BF2A0499020500";
1416 var storedatapara =new StoreDataPara("90","00",sdatain,"9000");
1417
1418 sAPDU1 = GetParaAPDU(InstallForPerson);
1419 sAPDU2 = GetParaAPDU(storedatapara);
1420 sAPDU = sAPDU1 + sAPDU2;
1421
1422 SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210515",sAPDU);
1423 CardSendMessageToServer(sSendType,1,"029000","00");
1424
1425
1426 TerminalResponse("00","9000");
1427 }
1428 else
1429 {
1430
1431 numOfCmdTlvs = 0;
1432 arrExpandedRemoteCmdObj = new Array();
1433
1434 InstallForPerson = new InstallForPersonalizationPara(RESERVED_ISD_P_AID);
1435 InstallForPerson.SetAPDU();
1436 arrExpandedRemoteCmdObj[numOfCmdTlvs] = new ExpandedRemoteCommandObject();
1437 arrExpandedRemoteCmdObj[numOfCmdTlvs].crtExpandedRemoteApduObj(InstallForPerson.apdu);
1438 numOfCmdTlvs ++;
1439
1440 var sdatain = "BF2A0499020500";
1441
1442 var storedatapara =new StoreDataPara("90","00",sdatain,"9000");
1443
1444 storedatapara.SetAPDU();
1445 arrExpandedRemoteCmdObj[numOfCmdTlvs] = new ExpandedRemoteCommandObject();
1446 arrExpandedRemoteCmdObj[numOfCmdTlvs].crtExpandedRemoteApduObj(storedatapara.apdu);
1447 numOfCmdTlvs ++;
1448
1449 sAPDU = GenExpandedRemoteCmd(arrExpandedRemoteCmdObj);
1450
1451 SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210515",sAPDU);
1452
1453 var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
1454 CardSendMessageToServerExpandedRemoteCmd(exResPara);
1455
1456 TerminalResponse("00","9000");
1457 }
1458
1459 curLogicChannel = 0;
1460
1461 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
1462 Ini_powerOn_eUICC_LPAe_not_activate();
1463
1464 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1465 TS_MANAGE_CHANNEL_OPEN();
1466
1467 curLogicChannel = 1;
1468 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1469 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1470
1471 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DisableProfileRequest;");
1472 var disableProRequest = new DisableProfileRequest();
1473 disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
1474 disableProRequest.refreshFlag = "00";
1475 disableProRequest.GenHexData();
1476 var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData);
1477
1478 curStrHandle.CheckData("BF3203800100", respData, "DisableProfileResponse");
1479
1480 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1481 var proInfoListRequest = new ProfileInfoListRequest();
1482 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1483 proInfoListRequest.tagList = "5A4F9F70";
1484 proInfoListRequest.GenHexData();
1485 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1486
1487 if (debug)
1488 respData = "BF2D1CA01AE3185A0A890199900012345678934F060505050505059F70011F";
1489 var proInfoListResponse = new ProfileInfoListResponse();
1490 proInfoListResponse.checkCardResDataFormat(respData);
1491
1492 try
1493 {
1494 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
1495 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
1496 }catch(e){
1497 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1498 }
1499
1500 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
1501 var deleProfileRequest = new DeleteProfileRequest();
1502 deleProfileRequest.iccid = ICCID_OP_PROF1;
1503 deleProfileRequest.GenHexData();
1504 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
1505
1506 curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
1507
1508 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1509 var proInfoListRequest = new ProfileInfoListRequest();
1510 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1511 proInfoListRequest.tagList = "5A4F9F70";
1512 proInfoListRequest.GenHexData();
1513 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1514
1515 if (debug)
1516 respData = "BF2D02A000";
1517 var proInfoListResponse = new ProfileInfoListResponse();
1518 proInfoListResponse.checkCardResDataFormat(respData);
1519
1520 try
1521 {
1522 curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
1523 }catch(e){
1524 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1525 }
1526
1527 tracenamestr = "Disable and Delete Notifications ";
1528 curDis.TraceStart(sno++,tracenamestr);
1529
1530 curLogicChannel = 0;
1531
1532 curDis.TestStepStart2(stno++,"复位;");
1533 ResetCard();
1534
1535 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1536 TS_TERMINAL_CAPABILITY_cmd();
1537
1538 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1539 TS_MANAGE_CHANNEL_OPEN();
1540
1541 curLogicChannel = 1;
1542
1543 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1544 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1545
1546 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1547 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1548 Profile_load_procedure.ES10b_ListNotification("04F0");
1549
1550 try
1551 {
1552 curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1553 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1554 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1555
1556 curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1557 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1558 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1559 }catch(e){
1560 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1561 }
1562
1563 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1564 Profile_load_procedure.ES10b_ListNotification();
1565
1566 try
1567 {
1568 curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1569 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1570 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1571
1572 curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1573 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1574 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1575 }catch(e){
1576 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1577 }
1578
1579 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1580 Profile_load_procedure.ES10b_ListNotification("");
1581 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1582
1583 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1584 Profile_load_procedure.ES10b_ListNotification("0780");
1585 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1586
1587 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1588 Profile_load_procedure.ES10b_ListNotification("0640");
1589 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1590
1591 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1592 Profile_load_procedure.ES10b_ListNotification("0520");
1593
1594 try
1595 {
1596 curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1597 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1598 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1599 }catch(e){
1600 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1601 }
1602
1603 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1604 Profile_load_procedure.ES10b_ListNotification("0410");
1605
1606 try
1607 {
1608 curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1609 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1610 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1611 }catch(e){
1612 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1613 }
1614
1615 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1616 Profile_load_procedure.ES10b_ListNotification("06C0");
1617 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1618
1619 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1620 Profile_load_procedure.ES10b_ListNotification("0430");
1621
1622 try
1623 {
1624 curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1625 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1626 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1627
1628 curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1629 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1630 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1631 }catch(e){
1632 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1633 }
1634
1635 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1636 Profile_load_procedure.ES10b_ListNotification("05E0");
1637
1638 try
1639 {
1640 curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1641 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1642 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1643 }catch(e){
1644 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1645 }
1646
1647 RecoverCard();
1648}
1649
1650function TC_eUICC_ES10b_ListNotification_08_Nominal_Install_OtherSignedNotification_and_Enable_Notification()
1651{
1652 tracenamestr = "Remove Notification";
1653 curDis.TraceStart(sno++,tracenamestr);
1654
1655 curDis.TestStepStart2(stno++,"复位;");
1656 ResetCard();
1657
1658 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1659 TS_TERMINAL_CAPABILITY_cmd();
1660
1661 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1662 TS_MANAGE_CHANNEL_OPEN();
1663
1664 curLogicChannel = 1;
1665
1666 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1667 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1668
1669 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1670 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1671 Profile_load_procedure.ES10b_ListNotification();
1672
1673 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
1674 for(var i=0;i<NotificationLen;i++)
1675 {
1676 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1677 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
1678 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1679 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1680 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1681 }
1682
1683
1684 tracenamestr = "Install PROFILE_OPERATIONAL1. Remove the PIR notification, but do not remove the OtherSignedNotification. ";
1685 curDis.TraceStart(sno++,tracenamestr);
1686
1687 curLogicChannel = 0;
1688
1689 curDis.TestStepStart("eUICC卡片初始化;");
1690 Ini_powerOn_eUICC_LPAe_not_activate();
1691
1692 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1693 TS_MANAGE_CHANNEL_OPEN();
1694
1695 curLogicChannel = 1;
1696
1697 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1698 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1699
1700 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
1701
1702 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1703 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
1704 Profile_load_procedure.ES10b_GetEUICCInfo1();
1705
1706 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
1707 Profile_load_procedure.ES10b_GetEUICCChallenge();
1708
1709 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
1710 Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
1711 Profile_load_procedure.ES10b_AuthenticateServer();
1712
1713 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
1714 Profile_load_procedure.ES10b_PrepareDownload();
1715
1716 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
1717 Profile_load_procedure.ES10b_GetEID();
1718
1719 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
1720 Profile_load_procedure.serviceProviderName = SP_NAME1;
1721 Profile_load_procedure.profileName = NAME_OP_PROF1;
1722 Profile_load_procedure.iconType = "01";
1723 Profile_load_procedure.icon = ICON_OP_PROF1;
1724 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
1725 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
1726 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
1727 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
1728 Profile_load_procedure.profileClass = "02";
1729 Profile_load_procedure.mccMnc = MCC_MNC1;
1730
1731 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
1732
1733 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1734 Profile_load_procedure.ES10b_ListNotification();
1735
1736 try
1737 {
1738 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1739 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1740 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1741
1742 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1743 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1744 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1745 }catch(e){
1746 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1747 }
1748
1749 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1750 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
1751 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1752 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1753 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1754
1755 tracenamestr = "Enable PROFILE_OPERATIONAL1. Do not remove the Notification. ";
1756 curDis.TraceStart(sno++,tracenamestr);
1757
1758 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
1759 var enableProRequest = new EnableProfileRequest();
1760 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
1761 enableProRequest.refreshFlag = "00";
1762 enableProRequest.GenHexData();
1763 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
1764
1765 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
1766
1767 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1768 var proInfoListRequest = new ProfileInfoListRequest();
1769 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1770 proInfoListRequest.tagList = "5A4F9F70";
1771 proInfoListRequest.GenHexData();
1772 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1773
1774 var proInfoListResponse = new ProfileInfoListResponse();
1775 proInfoListResponse.checkCardResDataFormat(respData);
1776
1777 try
1778 {
1779 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
1780 curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
1781 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
1782 }catch(e){
1783 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1784 }
1785
1786
1787 tracenamestr = "Install (OtherSignedNotification) and Enable Notification ";
1788 curDis.TraceStart(sno++,tracenamestr);
1789
1790 curLogicChannel = 0;
1791
1792 curDis.TestStepStart2(stno++,"复位;");
1793 ResetCard();
1794
1795 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1796 TS_TERMINAL_CAPABILITY_cmd();
1797
1798 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1799 TS_MANAGE_CHANNEL_OPEN();
1800
1801 curLogicChannel = 1;
1802
1803 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1804 TS_SELECT("Select ISD",ISD_R_AID,"9000");
1805
1806 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1807 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1808 Profile_load_procedure.ES10b_ListNotification("04F0");
1809 Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
1810
1811 try
1812 { var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
1813 if(Max_seqNumber_Of_Notification == seqNumber)
1814 {
1815 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
1816 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1817 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1818 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1819
1820 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
1821 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1822 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1823 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1824 }
1825 else
1826 {
1827 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
1828 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1829 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1830 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1831
1832 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
1833 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1834 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1835 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1836 }
1837 }catch(e){
1838 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1839 }
1840
1841 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1842 Profile_load_procedure.ES10b_ListNotification();
1843 Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
1844
1845 try
1846 {
1847 var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
1848 if(Max_seqNumber_Of_Notification == seqNumber)
1849 {
1850 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
1851 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1852 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1853 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1854
1855 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
1856 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1857 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1858 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1859 }
1860 else
1861 {
1862 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
1863 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1864 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1865 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1866
1867 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
1868 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1869 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1870 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1871 }
1872 }catch(e){
1873 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1874 }
1875
1876 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1877 Profile_load_procedure.ES10b_ListNotification("");
1878 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1879
1880 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1881 Profile_load_procedure.ES10b_ListNotification("0780");
1882
1883 try
1884 {
1885 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1886 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1887 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1888 }catch(e){
1889 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1890 }
1891
1892 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1893 Profile_load_procedure.ES10b_ListNotification("0640");
1894
1895 try
1896 {
1897 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1898 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1899 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1900 }catch(e){
1901 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1902 }
1903
1904 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1905 Profile_load_procedure.ES10b_ListNotification("0520");
1906 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1907
1908 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1909 Profile_load_procedure.ES10b_ListNotification("0410");
1910 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1911
1912 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1913 Profile_load_procedure.ES10b_ListNotification("06C0");
1914 Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
1915
1916 try
1917 {
1918 var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
1919 if(Max_seqNumber_Of_Notification == seqNumber)
1920 {
1921 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
1922 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1923 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1924 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1925
1926 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
1927 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1928 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1929 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1930 }
1931 else
1932 {
1933 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
1934 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1935 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1936 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1937
1938 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
1939 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1940 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1941 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1942 }
1943 }catch(e){
1944 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1945 }
1946
1947 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1948 Profile_load_procedure.ES10b_ListNotification("0430");
1949 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1950
1951 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1952 Profile_load_procedure.ES10b_ListNotification("0560");
1953
1954 try
1955 {
1956 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1957 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1958 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1959 }catch(e){
1960 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1961 }
1962
1963 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1964 Profile_load_procedure.ES10b_ListNotification("05E0");
1965 Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
1966
1967 try
1968 {
1969 var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
1970 if(Max_seqNumber_Of_Notification == seqNumber)
1971 {
1972 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
1973 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1974 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1975 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1976
1977 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
1978 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1979 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1980 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1981 }
1982 else
1983 {
1984 curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");
1985 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1986 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1987 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1988
1989 curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");
1990 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1991 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1992 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1993 }
1994 }catch(e){
1995 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1996 }
1997
1998 RecoverCard();
1999}
2000
2001function TC_eUICC_ES10b_ListNotification_09_Nominal_Enable_and_Install_PIR_Notifications()
2002{
2003 if(!Card_Have_ECC_Cert)
2004 return;
2005
2006 tracenamestr = "Remove Notification";
2007 curDis.TraceStart(sno++,tracenamestr);
2008
2009 curDis.TestStepStart2(stno++,"复位;");
2010 ResetCard();
2011
2012 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2013 TS_TERMINAL_CAPABILITY_cmd();
2014
2015 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2016 TS_MANAGE_CHANNEL_OPEN();
2017
2018 curLogicChannel = 1;
2019
2020 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
2021 TS_SELECT("Select ISD",ISD_R_AID,"9000");
2022
2023 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
2024 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2025 Profile_load_procedure.ES10b_ListNotification();
2026
2027 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
2028 for(var i=0;i<NotificationLen;i++)
2029 {
2030 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
2031 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
2032 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
2033 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
2034 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
2035 }
2036
2037 tracenamestr = "Install PROFILE_OPERATIONAL1. Remove both notifications. ";
2038 curDis.TraceStart(sno++,tracenamestr);
2039
2040 curLogicChannel = 0;
2041
2042 curDis.TestStepStart("eUICC卡片初始化;");
2043 Ini_powerOn_eUICC_LPAe_not_activate();
2044
2045 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2046 TS_MANAGE_CHANNEL_OPEN();
2047
2048 curLogicChannel = 1;
2049
2050 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
2051 TS_SELECT("Select ISD",ISD_R_AID,"9000");
2052
2053 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
2054
2055 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
2056 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
2057 Profile_load_procedure.ES10b_GetEUICCInfo1();
2058
2059 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
2060 Profile_load_procedure.ES10b_GetEUICCChallenge();
2061
2062 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
2063 Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
2064 Profile_load_procedure.ES10b_AuthenticateServer();
2065
2066 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
2067 Profile_load_procedure.ES10b_PrepareDownload();
2068
2069 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
2070 Profile_load_procedure.ES10b_GetEID();
2071
2072 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
2073 Profile_load_procedure.serviceProviderName = SP_NAME1;
2074 Profile_load_procedure.profileName = NAME_OP_PROF1;
2075 Profile_load_procedure.iconType = "01";
2076 Profile_load_procedure.icon = ICON_OP_PROF1;
2077 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
2078 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
2079 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
2080 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
2081 Profile_load_procedure.profileClass = "02";
2082 Profile_load_procedure.mccMnc = MCC_MNC1;
2083
2084 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
2085
2086 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2087 Profile_load_procedure.ES10b_ListNotification();
2088
2089 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
2090 for(var i=0;i<NotificationLen;i++)
2091 {
2092 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
2093 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
2094 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
2095 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
2096 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
2097 }
2098
2099 tracenamestr = "Enable PROFILE_OPERATIONAL1. Do not remove the Notification. ";
2100 curDis.TraceStart(sno++,tracenamestr);
2101
2102 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
2103 var enableProRequest = new EnableProfileRequest();
2104 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
2105 enableProRequest.refreshFlag = "00";
2106 enableProRequest.GenHexData();
2107 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
2108
2109 curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
2110
2111 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
2112 var proInfoListRequest = new ProfileInfoListRequest();
2113 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
2114 proInfoListRequest.tagList = "5A4F9F70";
2115 proInfoListRequest.GenHexData();
2116 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
2117
2118 var proInfoListResponse = new ProfileInfoListResponse();
2119 proInfoListResponse.checkCardResDataFormat(respData);
2120
2121 try
2122 {
2123 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
2124 curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
2125 curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
2126 }catch(e){
2127 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
2128 }
2129
2130 tracenamestr = "Install PROFILE_OPERATIONAL2 with #METADATA_OP_PROF2_NO_INSTALL. ";
2131 curDis.TraceStart(sno++,tracenamestr);
2132
2133
2134 curLogicChannel = 0;
2135
2136 curDis.TestStepStart("eUICC卡片初始化;");
2137 Ini_powerOn_eUICC_LPAe_not_activate();
2138
2139 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2140 TS_MANAGE_CHANNEL_OPEN();
2141
2142 curLogicChannel = 1;
2143
2144 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
2145 TS_SELECT("Select ISD",ISD_R_AID,"9000");
2146
2147 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
2148 pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
2149 pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
2150
2151 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL2_DATA);
2152 Profile_load_procedure.ICCID = ICCID_OP_PROF2;
2153 Profile_load_procedure.ES10b_GetEUICCInfo1();
2154
2155 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
2156 Profile_load_procedure.ES10b_GetEUICCChallenge();
2157
2158 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
2159 Profile_load_procedure.serverAddress = TEST_DP_ADDRESS2;
2160 Profile_load_procedure.DPauthInforObj.D_key = SK_S_SM_DP2auth_ECDSA_NIST;
2161 Profile_load_procedure.DPauthInforObj.Cert = CERT_S_SM_DP2auth_ECDSA_NIST;
2162 Profile_load_procedure.ES10b_AuthenticateServer();
2163
2164 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
2165 Profile_load_procedure.DPbpInforObj.D_key = SK_S_SM_DP2pb_ECDSA_NIST;
2166 Profile_load_procedure.DPbpInforObj.Cert = CERT_S_SM_DP2pb_ECDSA_NIST;
2167 Profile_load_procedure.DPbpInforObj.registeredID = DP2pb_prime256v1_OID;
2168 Profile_load_procedure.ES10b_PrepareDownload();
2169
2170 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
2171 Profile_load_procedure.ES10b_GetEID();
2172
2173 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
2174 Profile_load_procedure.serviceProviderName = SP_NAME2;
2175 Profile_load_procedure.profileName = NAME_OP_PROF2;
2176 Profile_load_procedure.iconType = "01";
2177 Profile_load_procedure.icon = ICON_OP_PROF2;
2178 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
2179 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
2180 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
2181 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS2;
2182 Profile_load_procedure.profileClass = "02";
2183 Profile_load_procedure.mccMnc = MCC_MNC2;
2184 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
2185
2186 tracenamestr = "Enable and Install (PIR) Notifications ";
2187 curDis.TraceStart(sno++,tracenamestr);
2188
2189 curLogicChannel = 0;
2190
2191 curDis.TestStepStart2(stno++,"复位;");
2192 ResetCard();
2193
2194 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2195 TS_TERMINAL_CAPABILITY_cmd();
2196
2197 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2198 TS_MANAGE_CHANNEL_OPEN();
2199
2200 curLogicChannel = 1;
2201
2202 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
2203 TS_SELECT("Select ISD",ISD_R_AID,"9000");
2204
2205 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
2206 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2207 Profile_load_procedure.ES10b_ListNotification("04F0");
2208
2209 try
2210 {
2211 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2212 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2213 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2214
2215 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
2216 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
2217 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
2218 }catch(e){
2219 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2220 }
2221
2222 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2223 Profile_load_procedure.ES10b_ListNotification();
2224
2225 try
2226 {
2227 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2228 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2229 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2230
2231 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
2232 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
2233 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
2234 }catch(e){
2235 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2236 }
2237
2238 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2239 Profile_load_procedure.ES10b_ListNotification("");
2240 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2241
2242 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2243 Profile_load_procedure.ES10b_ListNotification("0780");
2244
2245 try
2246 {
2247 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2248 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2249 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2250 }catch(e){
2251 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2252 }
2253
2254 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2255 Profile_load_procedure.ES10b_ListNotification("0640");
2256
2257 try
2258 {
2259 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2260 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2261 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2262 }catch(e){
2263 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2264 }
2265
2266 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2267 Profile_load_procedure.ES10b_ListNotification("0520");
2268 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2269
2270 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2271 Profile_load_procedure.ES10b_ListNotification("0410");
2272 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2273
2274 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2275 Profile_load_procedure.ES10b_ListNotification("06C0");
2276
2277 try
2278 {
2279 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2280 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2281 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2282
2283 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
2284 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
2285 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
2286 }catch(e){
2287 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2288 }
2289
2290 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2291 Profile_load_procedure.ES10b_ListNotification("0430");
2292 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2293
2294 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2295 Profile_load_procedure.ES10b_ListNotification("0560");
2296
2297 try
2298 {
2299 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2300 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2301 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2302 }catch(e){
2303 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2304 }
2305
2306 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2307 Profile_load_procedure.ES10b_ListNotification("05E0");
2308
2309 try
2310 {
2311 curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2312 curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2313 curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2314
2315 curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
2316 curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
2317 curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
2318 }catch(e){
2319 obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2320 }
2321
2322
2323 Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
2324
2325 tracenamestr = "DELETE PROFILE_OPERATIONAL1 , PROFILE_OPERATIONAL2";
2326 curDis.TraceStart(sno++,tracenamestr);
2327
2328 curLogicChannel = 0;
2329
2330 curDis.TestStepStart2(stno++,"复位;");
2331 ResetCard();
2332
2333 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2334 TS_TERMINAL_CAPABILITY_cmd();
2335
2336 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2337 TS_MANAGE_CHANNEL_OPEN();
2338
2339 curLogicChannel = 1;
2340 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
2341 TS_SELECT("Select ISD",ISD_R_AID,"9000");
2342
2343 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
2344 var deleProfileRequest = new DeleteProfileRequest();
2345 deleProfileRequest.iccid = ICCID_OP_PROF1;
2346 deleProfileRequest.GenHexData();
2347 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
2348
2349 curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
2350
2351 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
2352 var proInfoListRequest = new ProfileInfoListRequest();
2353 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
2354 proInfoListRequest.tagList = "5A4F9F70";
2355 proInfoListRequest.GenHexData();
2356 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
2357
2358 var proInfoListResponse = new ProfileInfoListResponse();
2359 proInfoListResponse.checkCardResDataFormat(respData);
2360
2361 try
2362 {
2363 curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
2364 }catch(e){
2365 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
2366 }
2367
2368 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
2369 var deleProfileRequest = new DeleteProfileRequest();
2370 deleProfileRequest.iccid = ICCID_OP_PROF2;
2371 deleProfileRequest.GenHexData();
2372 var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
2373
2374 curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
2375
2376 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
2377 var proInfoListRequest = new ProfileInfoListRequest();
2378 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF2);
2379 proInfoListRequest.tagList = "5A4F9F70";
2380 proInfoListRequest.GenHexData();
2381 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
2382
2383 var proInfoListResponse = new ProfileInfoListResponse();
2384 proInfoListResponse.checkCardResDataFormat(respData);
2385
2386 try
2387 {
2388 curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
2389 }catch(e){
2390 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
2391 }
2392 RecoverCard();
2393
2394
2395}
2396
2397function TC_eUICC_ES10b_ListNotification_10_Nominal_No_Notifications_available()
2398{
2399 tracenamestr = "Remove Notification";
2400 curDis.TraceStart(sno++,tracenamestr);
2401
2402 curDis.TestStepStart2(stno++,"复位;");
2403 ResetCard();
2404
2405 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2406 TS_TERMINAL_CAPABILITY_cmd();
2407
2408 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2409 TS_MANAGE_CHANNEL_OPEN();
2410
2411 curLogicChannel = 1;
2412
2413 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
2414 TS_SELECT("Select ISD",ISD_R_AID,"9000");
2415
2416 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
2417 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2418 Profile_load_procedure.ES10b_ListNotification();
2419
2420 var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
2421 for(var i=0;i<NotificationLen;i++)
2422 {
2423 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
2424 var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
2425 Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
2426 var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
2427 curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
2428 }
2429
2430 tracenamestr = "No Notifications available";
2431 curDis.TraceStart(sno++,tracenamestr);
2432
2433 curLogicChannel = 0;
2434
2435 curDis.TestStepStart2(stno++,"复位;");
2436 ResetCard();
2437
2438 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2439 TS_TERMINAL_CAPABILITY_cmd();
2440
2441 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2442 TS_MANAGE_CHANNEL_OPEN();
2443
2444 curLogicChannel = 1;
2445
2446 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
2447 TS_SELECT("Select ISD",ISD_R_AID,"9000");
2448
2449 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
2450 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2451 Profile_load_procedure.ES10b_ListNotification("04F0");
2452 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2453
2454 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2455 Profile_load_procedure.ES10b_ListNotification();
2456 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2457
2458 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2459 Profile_load_procedure.ES10b_ListNotification("");
2460 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2461
2462 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2463 Profile_load_procedure.ES10b_ListNotification("0780");
2464 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2465
2466 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2467 Profile_load_procedure.ES10b_ListNotification("0640");
2468 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2469
2470 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2471 Profile_load_procedure.ES10b_ListNotification("0520");
2472 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2473
2474 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2475 Profile_load_procedure.ES10b_ListNotification("0410");
2476 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2477
2478 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2479 Profile_load_procedure.ES10b_ListNotification("06C0");
2480 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2481
2482 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2483 Profile_load_procedure.ES10b_ListNotification("0430");
2484 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2485
2486 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2487 Profile_load_procedure.ES10b_ListNotification("0560");
2488 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2489
2490 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2491 Profile_load_procedure.ES10b_ListNotification("05E0");
2492 curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2493
2494 RecoverCard();
2495}
2496
-cas 盲生成TC_eUICC_ES10b_ListNotification/Import/TC_eUICC_ES10b_ListNotification.js2830 行 / 231323 字符 / gb18030入口函数 @L175
1// Author: 卡思Cas智能体
2// Date: 20260929-120236
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10b.ListNotification,Test Sequence #01-#10 Nominal(E_tc_4214 含 10 个 Test Sequence,全部纳入;schema 单值字段如实合并登记),适用性 M。
4// Test points: ICH-IC1-K1-C1 ATR_present;ICH-IC1-K2-C2 FCP_Template;ICH-IC1-K2-C4 SW
5// ICH-IC1-K3-C4 SW;ICH-IC1-K4-C4 final SW;ICH-IC2-K1-C4 SW;ICH-IC2-K1-C3 CHANNEL_NUMBER extracted
6// ICH-IC2-K2-C4 SW;S1-C1 SW
7// S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN branch/count
8// S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN element fields;S2-C1 SW
9// S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
10// S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S3-C1 SW
11// S3-C2 R-APDU 二选一 branch/count;S4-C1 SW
12// S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
13// S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S5-C1 SW
14// S5-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S6-C1 SW
15// S6-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S7-C1 SW
16// S7-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S8-C1 SW
17// S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
18// S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S9-C1 SW
19// S9-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S10-C1 SW
20// S10-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S11-C1 SW
21// S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
22// S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S12-C1 SW
23// S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT branch/count
24// S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT element fields;S13-C1 SW
25// S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
26// S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S14-C1 SW
27// S14-C2 R-APDU 二选一 branch/count;S15-C1 SW
28// S15-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S16-C1 SW
29// S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
30// S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S17-C1 SW
31// S17-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S18-C1 SW
32// S18-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S19-C1 SW
33// S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
34// S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S20-C1 SW
35// S20-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S21-C1 SW
36// S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
37// S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S22-C1 SW
38// S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
39// S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S23-C1 SW
40// S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT branch/count
41// S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT element fields;S24-C1 SW
42// S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
43// S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S25-C1 SW
44// S25-C2 R-APDU 二选一 branch/count;S26-C1 SW
45// S26-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S27-C1 SW
46// S27-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S28-C1 SW
47// S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
48// S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S29-C1 SW
49// S29-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S30-C1 SW
50// S30-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S31-C1 SW
51// S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
52// S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S32-C1 SW
53// S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
54// S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S33-C1 SW
55// S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
56// S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S34-C1 SW
57// S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT branch/count
58// S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT element fields;S35-C1 SW
59// S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
60// S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S36-C1 SW
61// S36-C2 R-APDU 二选一 branch/count;S37-C1 SW
62// S37-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S38-C1 SW
63// S38-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S39-C1 SW
64// S39-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S40-C1 SW
65// S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
66// S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S41-C1 SW
67// S41-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S42-C1 SW
68// S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
69// S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S43-C1 SW
70// S43-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S44-C1 SW
71// S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
72// S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S45-C1 SW
73// S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata branch/count
74// S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata element fields;S46-C1 SW
75// S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
76// S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S47-C1 SW
77// S47-C2 R-APDU 二选一 branch/count;S48-C1 SW
78// S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
79// S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S49-C1 SW
80// S49-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S50-C1 SW
81// S50-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S51-C1 SW
82// S51-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S52-C1 SW
83// S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
84// S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S53-C1 SW
85// S53-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S54-C1 SW
86// S54-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S55-C1 SW
87// S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
88// S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S56-C1 SW
89// S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList branch/count
90// S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList element fields;S57-C1 SW
91// S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
92// S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S58-C1 SW
93// S58-C2 R-APDU 二选一 branch/count;S59-C1 SW
94// S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含 branch/count
95// S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含 element fields;S60-C1 SW
96// S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
97// S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S61-C1 SW
98// S61-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S62-C1 SW
99// S62-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S63-C1 SW
100// S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
101// S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S64-C1 SW
102// S64-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S65-C1 SW
103// S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
104// S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S66-C1 SW
105// S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
106// S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S67-C1 SW
107// S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含 branch/count
108// S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含 element fields;S68-C1 SW
109// S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
110// S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S69-C1 SW
111// S69-C2 R-APDU 二选一 branch/count;S70-C1 SW
112// S70-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S71-C1 SW
113// S71-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S72-C1 SW
114// S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
115// S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S73-C1 SW
116// S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
117// S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S74-C1 SW
118// S74-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S75-C1 SW
119// S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
120// S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S76-C1 SW
121// S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
122// S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S77-C1 SW
123// S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
124// S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S78-C1 SW
125// S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含 branch/count
126// S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含 element fields;S79-C1 SW
127// S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 branch/count
128// S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 element fields;S80-C1 SW
129// S80-C2 R-APDU 二选一 branch/count;S81-C1 SW
130// S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT branch/count
131// S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT element fields;S82-C1 SW
132// S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
133// S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S83-C1 SW
134// S83-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S84-C1 SW
135// S84-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S85-C1 SW
136// S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 branch/count
137// S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 element fields;S86-C1 SW
138// S86-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S87-C1 SW
139// S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
140// S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S88-C1 SW
141// S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 branch/count
142// S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 element fields;S89-C1 SW
143// S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList branch/count
144// S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList element fields;S90-C1 SW
145// S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
146// S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S91-C1 SW
147// S91-C2 R-APDU 二选一 branch/count;S92-C1 SW
148// S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含 branch/count
149// S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含 element fields;S93-C1 SW
150// S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
151// S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S94-C1 SW
152// S94-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S95-C1 SW
153// S95-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S96-C1 SW
154// S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
155// S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S97-C1 SW
156// S97-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S98-C1 SW
157// S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
158// S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S99-C1 SW
159// S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
160// S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S100-C1 SW
161// S100-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S101-C1 SW
162// S101-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S102-C1 SW
163// S102-C2 R-APDU 二选一 branch/count;S103-C1 SW
164// S103-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S104-C1 SW
165// S104-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S105-C1 SW
166// S105-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S106-C1 SW
167// S106-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S107-C1 SW
168// S107-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S108-C1 SW
169// S108-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S109-C1 SW
170// S109-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S110-C1 SW
171// S110-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count
172// 本函数由 CaseIR 4.2.14.2.1 编译生成(Q3W0-EXPAND-20260929-R4,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
173// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
174// 适用性 M:编译期门,运行时由 harness 环境前置承担。
175function TC_eUICC_ES10b_ListNotification_01_10_Nominal_E_tc_4214_10_Test_Sequence_schema() {
176 var bind = curBind;
177
178 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
179 var s111 = bind.resetAndAtr();
180 bind.checkData("ICH-IC1-K1-C1 ATR_present", "1", s111.atr_hex !== "" ? "1" : "0");
181
182 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
183 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
184 var s112 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
185 bind.checkData("ICH-IC1-K2-C2 FCP_Template", "1", s112.resp.length > 0 ? "1" : "0");
186 bind.checkData("ICH-IC1-K2-C4 SW", "9000", s112.sw);
187
188 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
189 var s113 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
190 bind.checkData("ICH-IC1-K3-C4 SW", "9000", s113.sw);
191
192 // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
193 var steady114 = bind.runToSteadyState(function () {
194 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
195 });
196 bind.checkData("ICH-IC1-K4-C4 final SW", "9000", steady114.final.sw);
197
198 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
199 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
200 var s115 = bind.manageChannelOpen("9000");
201 bind.checkData("ICH-IC2-K1-C4 SW", "9000", s115.sw);
202 bind.checkData("ICH-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s115.chan !== null ? "1" : "0");
203
204 // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
205 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
206 var s116 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
207 // 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.
208 bind.checkData("ICH-IC2-K2-C4 SW", "9000", s116.sw);
209
210 // 步骤 1:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
211 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
212 var sdCla1 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
213 var s1 = bind.sendApdu(sdCla1, "E2", "91", "00", "BF2804810204F0", "00", "9000");
214 bind.checkData("S1-C1 SW", "9000", s1.sw);
215 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
216 var lw1T = BindEs10xSingleRequest.parseBerTlv(s1.resp);
217 var lw1Ok0 = lw1T.length === 1 && lw1T[0].tag === "BF28";
218 var lw1_br = lw1Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw1T[0].value) : [];
219 var lw1_brtag = lw1_br.length === 1 ? lw1_br[0].tag : "";
220 var lw1_els = lw1_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw1_br[0].value) : [];
221 bind.checkData("S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN branch/count", "1", (lw1_brtag === "A0" && lw1_els.length === 2) ? "1" : "0");
222 var lw1_fok = lw1_brtag === "A0" && lw1_els.length > 0;
223 for (var lw1i = 0; lw1i < lw1_els.length; lw1i++) {
224 if (lw1_els[lw1i].tag !== "BF2F") { lw1_fok = false; continue; }
225 var lw1M = BindEs10xSingleRequest.parseBerTlv(lw1_els[lw1i].value);
226 var lw1_f = {};
227 for (var lw1j = 0; lw1j < lw1M.length; lw1j++) {
228 if (lw1_f[lw1M[lw1j].tag] === undefined) { lw1_f[lw1M[lw1j].tag] = lw1M[lw1j].value; }
229 }
230 if (lw1_f["80"] === undefined) { lw1_fok = false; }
231 var lw1AddrHex = lw1_f["0C"];
232 var lw1AddrStr = "";
233 if (typeof lw1AddrHex === "string" && lw1AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw1AddrHex)) {
234 for (var lw1AddrI = 0; lw1AddrI < lw1AddrHex.length; lw1AddrI += 2) {
235 lw1AddrStr += String.fromCharCode(parseInt(lw1AddrHex.substr(lw1AddrI, 2), 16));
236 }
237 }
238 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw1AddrStr)) { lw1_fok = false; }
239 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
240 if (lw1_f["81"] !== "0780") { lw1_fok = false; } // operation
241 if (lw1_f["5A"] !== "989209012143658709F5") { lw1_fok = false; } // iccid
242 }
243 bind.checkData("S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN element fields", "1", lw1_fok ? "1" : "0");
244
245 // 步骤 2:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
246 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
247 var sdCla2 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
248 var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", "BF2800", "00", "9000");
249 bind.checkData("S2-C1 SW", "9000", s2.sw);
250 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
251 var lw2T = BindEs10xSingleRequest.parseBerTlv(s2.resp);
252 var lw2Ok0 = lw2T.length === 1 && lw2T[0].tag === "BF28";
253 var lw2_br = lw2Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw2T[0].value) : [];
254 var lw2_brtag = lw2_br.length === 1 ? lw2_br[0].tag : "";
255 var lw2_els = lw2_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw2_br[0].value) : [];
256 bind.checkData("S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw2_brtag === "A0" && lw2_els.length === 2) ? "1" : "0");
257 var lw2_fok = lw2_brtag === "A0" && lw2_els.length > 0;
258 for (var lw2i = 0; lw2i < lw2_els.length; lw2i++) {
259 if (lw2_els[lw2i].tag !== "BF2F") { lw2_fok = false; continue; }
260 var lw2M = BindEs10xSingleRequest.parseBerTlv(lw2_els[lw2i].value);
261 var lw2_f = {};
262 for (var lw2j = 0; lw2j < lw2M.length; lw2j++) {
263 if (lw2_f[lw2M[lw2j].tag] === undefined) { lw2_f[lw2M[lw2j].tag] = lw2M[lw2j].value; }
264 }
265 if (lw2_f["80"] === undefined) { lw2_fok = false; }
266 var lw2AddrHex = lw2_f["0C"];
267 var lw2AddrStr = "";
268 if (typeof lw2AddrHex === "string" && lw2AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw2AddrHex)) {
269 for (var lw2AddrI = 0; lw2AddrI < lw2AddrHex.length; lw2AddrI += 2) {
270 lw2AddrStr += String.fromCharCode(parseInt(lw2AddrHex.substr(lw2AddrI, 2), 16));
271 }
272 }
273 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw2AddrStr)) { lw2_fok = false; }
274 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
275 if (lw2_f["81"] !== "0780") { lw2_fok = false; } // operation
276 if (lw2_f["5A"] !== "989209012143658709F5") { lw2_fok = false; } // iccid
277 }
278 bind.checkData("S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw2_fok ? "1" : "0");
279
280 // 步骤 3:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
281 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
282 var sdCla3 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
283 var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2803810100", "00", "9000");
284 bind.checkData("S3-C1 SW", "9000", s3.sw);
285 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
286 var lw3T = BindEs10xSingleRequest.parseBerTlv(s3.resp);
287 var lw3Ok0 = lw3T.length === 1 && lw3T[0].tag === "BF28";
288 var lw3_br = lw3Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw3T[0].value) : [];
289 var lw3_brtag = lw3_br.length === 1 ? lw3_br[0].tag : "";
290 var lw3_els = lw3_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw3_br[0].value) : [];
291 bind.checkData("S3-C2 R-APDU 二选一 branch/count", "1", (lw3_brtag === "A0" && lw3_els.length === 0) || (lw3_brtag === "81" && lw3_br.length === 1 && lw3_br[0].value === "7F") ? "1" : "0");
292
293 // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
294 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
295 var sdCla4 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
296 var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF280481020780", "00", "9000");
297 bind.checkData("S4-C1 SW", "9000", s4.sw);
298 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
299 var lw4T = BindEs10xSingleRequest.parseBerTlv(s4.resp);
300 var lw4Ok0 = lw4T.length === 1 && lw4T[0].tag === "BF28";
301 var lw4_br = lw4Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw4T[0].value) : [];
302 var lw4_brtag = lw4_br.length === 1 ? lw4_br[0].tag : "";
303 var lw4_els = lw4_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw4_br[0].value) : [];
304 bind.checkData("S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw4_brtag === "A0" && lw4_els.length === 2) ? "1" : "0");
305 var lw4_fok = lw4_brtag === "A0" && lw4_els.length > 0;
306 for (var lw4i = 0; lw4i < lw4_els.length; lw4i++) {
307 if (lw4_els[lw4i].tag !== "BF2F") { lw4_fok = false; continue; }
308 var lw4M = BindEs10xSingleRequest.parseBerTlv(lw4_els[lw4i].value);
309 var lw4_f = {};
310 for (var lw4j = 0; lw4j < lw4M.length; lw4j++) {
311 if (lw4_f[lw4M[lw4j].tag] === undefined) { lw4_f[lw4M[lw4j].tag] = lw4M[lw4j].value; }
312 }
313 if (lw4_f["80"] === undefined) { lw4_fok = false; }
314 var lw4AddrHex = lw4_f["0C"];
315 var lw4AddrStr = "";
316 if (typeof lw4AddrHex === "string" && lw4AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw4AddrHex)) {
317 for (var lw4AddrI = 0; lw4AddrI < lw4AddrHex.length; lw4AddrI += 2) {
318 lw4AddrStr += String.fromCharCode(parseInt(lw4AddrHex.substr(lw4AddrI, 2), 16));
319 }
320 }
321 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw4AddrStr)) { lw4_fok = false; }
322 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
323 if (lw4_f["81"] !== "0780") { lw4_fok = false; } // operation
324 if (lw4_f["5A"] !== "989209012143658709F5") { lw4_fok = false; } // iccid
325 }
326 bind.checkData("S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw4_fok ? "1" : "0");
327
328 // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
329 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
330 var sdCla5 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
331 var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF280481020640", "00", "9000");
332 bind.checkData("S5-C1 SW", "9000", s5.sw);
333 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
334 var lw5T = BindEs10xSingleRequest.parseBerTlv(s5.resp);
335 var lw5Ok0 = lw5T.length === 1 && lw5T[0].tag === "BF28";
336 var lw5_br = lw5Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw5T[0].value) : [];
337 var lw5_brtag = lw5_br.length === 1 ? lw5_br[0].tag : "";
338 var lw5_els = lw5_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw5_br[0].value) : [];
339 bind.checkData("S5-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw5_brtag === "A0" && lw5_els.length === 0) ? "1" : "0");
340
341 // 步骤 6:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
342 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
343 var sdCla6 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
344 var s6 = bind.sendApdu(sdCla6, "E2", "91", "00", "BF280481020520", "00", "9000");
345 bind.checkData("S6-C1 SW", "9000", s6.sw);
346 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
347 var lw6T = BindEs10xSingleRequest.parseBerTlv(s6.resp);
348 var lw6Ok0 = lw6T.length === 1 && lw6T[0].tag === "BF28";
349 var lw6_br = lw6Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw6T[0].value) : [];
350 var lw6_brtag = lw6_br.length === 1 ? lw6_br[0].tag : "";
351 var lw6_els = lw6_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw6_br[0].value) : [];
352 bind.checkData("S6-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw6_brtag === "A0" && lw6_els.length === 0) ? "1" : "0");
353
354 // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
355 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
356 var sdCla7 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
357 var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF280481020410", "00", "9000");
358 bind.checkData("S7-C1 SW", "9000", s7.sw);
359 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
360 var lw7T = BindEs10xSingleRequest.parseBerTlv(s7.resp);
361 var lw7Ok0 = lw7T.length === 1 && lw7T[0].tag === "BF28";
362 var lw7_br = lw7Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw7T[0].value) : [];
363 var lw7_brtag = lw7_br.length === 1 ? lw7_br[0].tag : "";
364 var lw7_els = lw7_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw7_br[0].value) : [];
365 bind.checkData("S7-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw7_brtag === "A0" && lw7_els.length === 0) ? "1" : "0");
366
367 // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
368 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
369 var sdCla8 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
370 var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2804810206C0", "00", "9000");
371 bind.checkData("S8-C1 SW", "9000", s8.sw);
372 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
373 var lw8T = BindEs10xSingleRequest.parseBerTlv(s8.resp);
374 var lw8Ok0 = lw8T.length === 1 && lw8T[0].tag === "BF28";
375 var lw8_br = lw8Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw8T[0].value) : [];
376 var lw8_brtag = lw8_br.length === 1 ? lw8_br[0].tag : "";
377 var lw8_els = lw8_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw8_br[0].value) : [];
378 bind.checkData("S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw8_brtag === "A0" && lw8_els.length === 2) ? "1" : "0");
379 var lw8_fok = lw8_brtag === "A0" && lw8_els.length > 0;
380 for (var lw8i = 0; lw8i < lw8_els.length; lw8i++) {
381 if (lw8_els[lw8i].tag !== "BF2F") { lw8_fok = false; continue; }
382 var lw8M = BindEs10xSingleRequest.parseBerTlv(lw8_els[lw8i].value);
383 var lw8_f = {};
384 for (var lw8j = 0; lw8j < lw8M.length; lw8j++) {
385 if (lw8_f[lw8M[lw8j].tag] === undefined) { lw8_f[lw8M[lw8j].tag] = lw8M[lw8j].value; }
386 }
387 if (lw8_f["80"] === undefined) { lw8_fok = false; }
388 var lw8AddrHex = lw8_f["0C"];
389 var lw8AddrStr = "";
390 if (typeof lw8AddrHex === "string" && lw8AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw8AddrHex)) {
391 for (var lw8AddrI = 0; lw8AddrI < lw8AddrHex.length; lw8AddrI += 2) {
392 lw8AddrStr += String.fromCharCode(parseInt(lw8AddrHex.substr(lw8AddrI, 2), 16));
393 }
394 }
395 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw8AddrStr)) { lw8_fok = false; }
396 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
397 if (lw8_f["81"] !== "0780") { lw8_fok = false; } // operation
398 if (lw8_f["5A"] !== "989209012143658709F5") { lw8_fok = false; } // iccid
399 }
400 bind.checkData("S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw8_fok ? "1" : "0");
401
402 // 步骤 9:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
403 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
404 var sdCla9 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
405 var s9 = bind.sendApdu(sdCla9, "E2", "91", "00", "BF280481020430", "00", "9000");
406 bind.checkData("S9-C1 SW", "9000", s9.sw);
407 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
408 var lw9T = BindEs10xSingleRequest.parseBerTlv(s9.resp);
409 var lw9Ok0 = lw9T.length === 1 && lw9T[0].tag === "BF28";
410 var lw9_br = lw9Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw9T[0].value) : [];
411 var lw9_brtag = lw9_br.length === 1 ? lw9_br[0].tag : "";
412 var lw9_els = lw9_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw9_br[0].value) : [];
413 bind.checkData("S9-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw9_brtag === "A0" && lw9_els.length === 0) ? "1" : "0");
414
415 // 步骤 10:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
416 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
417 var sdCla10 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
418 var s10 = bind.sendApdu(sdCla10, "E2", "91", "00", "BF280481020560", "00", "9000");
419 bind.checkData("S10-C1 SW", "9000", s10.sw);
420 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
421 var lw10T = BindEs10xSingleRequest.parseBerTlv(s10.resp);
422 var lw10Ok0 = lw10T.length === 1 && lw10T[0].tag === "BF28";
423 var lw10_br = lw10Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw10T[0].value) : [];
424 var lw10_brtag = lw10_br.length === 1 ? lw10_br[0].tag : "";
425 var lw10_els = lw10_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw10_br[0].value) : [];
426 bind.checkData("S10-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw10_brtag === "A0" && lw10_els.length === 0) ? "1" : "0");
427
428 // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
429 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
430 var sdCla11 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
431 var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2804810205E0", "00", "9000");
432 bind.checkData("S11-C1 SW", "9000", s11.sw);
433 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
434 var lw11T = BindEs10xSingleRequest.parseBerTlv(s11.resp);
435 var lw11Ok0 = lw11T.length === 1 && lw11T[0].tag === "BF28";
436 var lw11_br = lw11Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw11T[0].value) : [];
437 var lw11_brtag = lw11_br.length === 1 ? lw11_br[0].tag : "";
438 var lw11_els = lw11_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw11_br[0].value) : [];
439 bind.checkData("S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw11_brtag === "A0" && lw11_els.length === 2) ? "1" : "0");
440 var lw11_fok = lw11_brtag === "A0" && lw11_els.length > 0;
441 for (var lw11i = 0; lw11i < lw11_els.length; lw11i++) {
442 if (lw11_els[lw11i].tag !== "BF2F") { lw11_fok = false; continue; }
443 var lw11M = BindEs10xSingleRequest.parseBerTlv(lw11_els[lw11i].value);
444 var lw11_f = {};
445 for (var lw11j = 0; lw11j < lw11M.length; lw11j++) {
446 if (lw11_f[lw11M[lw11j].tag] === undefined) { lw11_f[lw11M[lw11j].tag] = lw11M[lw11j].value; }
447 }
448 if (lw11_f["80"] === undefined) { lw11_fok = false; }
449 var lw11AddrHex = lw11_f["0C"];
450 var lw11AddrStr = "";
451 if (typeof lw11AddrHex === "string" && lw11AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw11AddrHex)) {
452 for (var lw11AddrI = 0; lw11AddrI < lw11AddrHex.length; lw11AddrI += 2) {
453 lw11AddrStr += String.fromCharCode(parseInt(lw11AddrHex.substr(lw11AddrI, 2), 16));
454 }
455 }
456 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw11AddrStr)) { lw11_fok = false; }
457 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
458 if (lw11_f["81"] !== "0780") { lw11_fok = false; } // operation
459 if (lw11_f["5A"] !== "989209012143658709F5") { lw11_fok = false; } // iccid
460 }
461 bind.checkData("S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw11_fok ? "1" : "0");
462
463 // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
464 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
465 var sdCla12 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
466 var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", "BF2804810204F0", "00", "9000");
467 bind.checkData("S12-C1 SW", "9000", s12.sw);
468 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
469 var lw12T = BindEs10xSingleRequest.parseBerTlv(s12.resp);
470 var lw12Ok0 = lw12T.length === 1 && lw12T[0].tag === "BF28";
471 var lw12_br = lw12Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw12T[0].value) : [];
472 var lw12_brtag = lw12_br.length === 1 ? lw12_br[0].tag : "";
473 var lw12_els = lw12_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw12_br[0].value) : [];
474 bind.checkData("S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw12_brtag === "A0" && lw12_els.length === 1) ? "1" : "0");
475 var lw12_fok = lw12_brtag === "A0" && lw12_els.length > 0;
476 for (var lw12i = 0; lw12i < lw12_els.length; lw12i++) {
477 if (lw12_els[lw12i].tag !== "BF2F") { lw12_fok = false; continue; }
478 var lw12M = BindEs10xSingleRequest.parseBerTlv(lw12_els[lw12i].value);
479 var lw12_f = {};
480 for (var lw12j = 0; lw12j < lw12M.length; lw12j++) {
481 if (lw12_f[lw12M[lw12j].tag] === undefined) { lw12_f[lw12M[lw12j].tag] = lw12M[lw12j].value; }
482 }
483 if (lw12_f["80"] === undefined) { lw12_fok = false; }
484 var lw12AddrHex = lw12_f["0C"];
485 var lw12AddrStr = "";
486 if (typeof lw12AddrHex === "string" && lw12AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw12AddrHex)) {
487 for (var lw12AddrI = 0; lw12AddrI < lw12AddrHex.length; lw12AddrI += 2) {
488 lw12AddrStr += String.fromCharCode(parseInt(lw12AddrHex.substr(lw12AddrI, 2), 16));
489 }
490 }
491 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw12AddrStr)) { lw12_fok = false; }
492 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
493 if (lw12_f["81"] !== "0640") { lw12_fok = false; } // operation
494 if (lw12_f["5A"] !== "989209012143658709F5") { lw12_fok = false; } // iccid
495 }
496 bind.checkData("S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT element fields", "1", lw12_fok ? "1" : "0");
497
498 // 步骤 13:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
499 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
500 var sdCla13 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
501 var s13 = bind.sendApdu(sdCla13, "E2", "91", "00", "BF2800", "00", "9000");
502 bind.checkData("S13-C1 SW", "9000", s13.sw);
503 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
504 var lw13T = BindEs10xSingleRequest.parseBerTlv(s13.resp);
505 var lw13Ok0 = lw13T.length === 1 && lw13T[0].tag === "BF28";
506 var lw13_br = lw13Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw13T[0].value) : [];
507 var lw13_brtag = lw13_br.length === 1 ? lw13_br[0].tag : "";
508 var lw13_els = lw13_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw13_br[0].value) : [];
509 bind.checkData("S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw13_brtag === "A0" && lw13_els.length === 1) ? "1" : "0");
510 var lw13_fok = lw13_brtag === "A0" && lw13_els.length > 0;
511 for (var lw13i = 0; lw13i < lw13_els.length; lw13i++) {
512 if (lw13_els[lw13i].tag !== "BF2F") { lw13_fok = false; continue; }
513 var lw13M = BindEs10xSingleRequest.parseBerTlv(lw13_els[lw13i].value);
514 var lw13_f = {};
515 for (var lw13j = 0; lw13j < lw13M.length; lw13j++) {
516 if (lw13_f[lw13M[lw13j].tag] === undefined) { lw13_f[lw13M[lw13j].tag] = lw13M[lw13j].value; }
517 }
518 if (lw13_f["80"] === undefined) { lw13_fok = false; }
519 var lw13AddrHex = lw13_f["0C"];
520 var lw13AddrStr = "";
521 if (typeof lw13AddrHex === "string" && lw13AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw13AddrHex)) {
522 for (var lw13AddrI = 0; lw13AddrI < lw13AddrHex.length; lw13AddrI += 2) {
523 lw13AddrStr += String.fromCharCode(parseInt(lw13AddrHex.substr(lw13AddrI, 2), 16));
524 }
525 }
526 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw13AddrStr)) { lw13_fok = false; }
527 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
528 if (lw13_f["81"] !== "0640") { lw13_fok = false; } // operation
529 if (lw13_f["5A"] !== "989209012143658709F5") { lw13_fok = false; } // iccid
530 }
531 bind.checkData("S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw13_fok ? "1" : "0");
532
533 // 步骤 14:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
534 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
535 var sdCla14 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
536 var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", "BF2803810100", "00", "9000");
537 bind.checkData("S14-C1 SW", "9000", s14.sw);
538 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
539 var lw14T = BindEs10xSingleRequest.parseBerTlv(s14.resp);
540 var lw14Ok0 = lw14T.length === 1 && lw14T[0].tag === "BF28";
541 var lw14_br = lw14Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw14T[0].value) : [];
542 var lw14_brtag = lw14_br.length === 1 ? lw14_br[0].tag : "";
543 var lw14_els = lw14_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw14_br[0].value) : [];
544 bind.checkData("S14-C2 R-APDU 二选一 branch/count", "1", (lw14_brtag === "A0" && lw14_els.length === 0) || (lw14_brtag === "81" && lw14_br.length === 1 && lw14_br[0].value === "7F") ? "1" : "0");
545
546 // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
547 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
548 var sdCla15 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
549 var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF280481020780", "00", "9000");
550 bind.checkData("S15-C1 SW", "9000", s15.sw);
551 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
552 var lw15T = BindEs10xSingleRequest.parseBerTlv(s15.resp);
553 var lw15Ok0 = lw15T.length === 1 && lw15T[0].tag === "BF28";
554 var lw15_br = lw15Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw15T[0].value) : [];
555 var lw15_brtag = lw15_br.length === 1 ? lw15_br[0].tag : "";
556 var lw15_els = lw15_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw15_br[0].value) : [];
557 bind.checkData("S15-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw15_brtag === "A0" && lw15_els.length === 0) ? "1" : "0");
558
559 // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
560 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
561 var sdCla16 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
562 var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF280481020640", "00", "9000");
563 bind.checkData("S16-C1 SW", "9000", s16.sw);
564 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
565 var lw16T = BindEs10xSingleRequest.parseBerTlv(s16.resp);
566 var lw16Ok0 = lw16T.length === 1 && lw16T[0].tag === "BF28";
567 var lw16_br = lw16Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw16T[0].value) : [];
568 var lw16_brtag = lw16_br.length === 1 ? lw16_br[0].tag : "";
569 var lw16_els = lw16_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw16_br[0].value) : [];
570 bind.checkData("S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw16_brtag === "A0" && lw16_els.length === 1) ? "1" : "0");
571 var lw16_fok = lw16_brtag === "A0" && lw16_els.length > 0;
572 for (var lw16i = 0; lw16i < lw16_els.length; lw16i++) {
573 if (lw16_els[lw16i].tag !== "BF2F") { lw16_fok = false; continue; }
574 var lw16M = BindEs10xSingleRequest.parseBerTlv(lw16_els[lw16i].value);
575 var lw16_f = {};
576 for (var lw16j = 0; lw16j < lw16M.length; lw16j++) {
577 if (lw16_f[lw16M[lw16j].tag] === undefined) { lw16_f[lw16M[lw16j].tag] = lw16M[lw16j].value; }
578 }
579 if (lw16_f["80"] === undefined) { lw16_fok = false; }
580 var lw16AddrHex = lw16_f["0C"];
581 var lw16AddrStr = "";
582 if (typeof lw16AddrHex === "string" && lw16AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw16AddrHex)) {
583 for (var lw16AddrI = 0; lw16AddrI < lw16AddrHex.length; lw16AddrI += 2) {
584 lw16AddrStr += String.fromCharCode(parseInt(lw16AddrHex.substr(lw16AddrI, 2), 16));
585 }
586 }
587 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw16AddrStr)) { lw16_fok = false; }
588 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
589 if (lw16_f["81"] !== "0640") { lw16_fok = false; } // operation
590 if (lw16_f["5A"] !== "989209012143658709F5") { lw16_fok = false; } // iccid
591 }
592 bind.checkData("S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw16_fok ? "1" : "0");
593
594 // 步骤 17:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
595 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
596 var sdCla17 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
597 var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", "BF280481020520", "00", "9000");
598 bind.checkData("S17-C1 SW", "9000", s17.sw);
599 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
600 var lw17T = BindEs10xSingleRequest.parseBerTlv(s17.resp);
601 var lw17Ok0 = lw17T.length === 1 && lw17T[0].tag === "BF28";
602 var lw17_br = lw17Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw17T[0].value) : [];
603 var lw17_brtag = lw17_br.length === 1 ? lw17_br[0].tag : "";
604 var lw17_els = lw17_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw17_br[0].value) : [];
605 bind.checkData("S17-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw17_brtag === "A0" && lw17_els.length === 0) ? "1" : "0");
606
607 // 步骤 18:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
608 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
609 var sdCla18 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
610 var s18 = bind.sendApdu(sdCla18, "E2", "91", "00", "BF280481020410", "00", "9000");
611 bind.checkData("S18-C1 SW", "9000", s18.sw);
612 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
613 var lw18T = BindEs10xSingleRequest.parseBerTlv(s18.resp);
614 var lw18Ok0 = lw18T.length === 1 && lw18T[0].tag === "BF28";
615 var lw18_br = lw18Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw18T[0].value) : [];
616 var lw18_brtag = lw18_br.length === 1 ? lw18_br[0].tag : "";
617 var lw18_els = lw18_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw18_br[0].value) : [];
618 bind.checkData("S18-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw18_brtag === "A0" && lw18_els.length === 0) ? "1" : "0");
619
620 // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
621 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
622 var sdCla19 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
623 var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF2804810206C0", "00", "9000");
624 bind.checkData("S19-C1 SW", "9000", s19.sw);
625 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
626 var lw19T = BindEs10xSingleRequest.parseBerTlv(s19.resp);
627 var lw19Ok0 = lw19T.length === 1 && lw19T[0].tag === "BF28";
628 var lw19_br = lw19Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw19T[0].value) : [];
629 var lw19_brtag = lw19_br.length === 1 ? lw19_br[0].tag : "";
630 var lw19_els = lw19_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw19_br[0].value) : [];
631 bind.checkData("S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw19_brtag === "A0" && lw19_els.length === 1) ? "1" : "0");
632 var lw19_fok = lw19_brtag === "A0" && lw19_els.length > 0;
633 for (var lw19i = 0; lw19i < lw19_els.length; lw19i++) {
634 if (lw19_els[lw19i].tag !== "BF2F") { lw19_fok = false; continue; }
635 var lw19M = BindEs10xSingleRequest.parseBerTlv(lw19_els[lw19i].value);
636 var lw19_f = {};
637 for (var lw19j = 0; lw19j < lw19M.length; lw19j++) {
638 if (lw19_f[lw19M[lw19j].tag] === undefined) { lw19_f[lw19M[lw19j].tag] = lw19M[lw19j].value; }
639 }
640 if (lw19_f["80"] === undefined) { lw19_fok = false; }
641 var lw19AddrHex = lw19_f["0C"];
642 var lw19AddrStr = "";
643 if (typeof lw19AddrHex === "string" && lw19AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw19AddrHex)) {
644 for (var lw19AddrI = 0; lw19AddrI < lw19AddrHex.length; lw19AddrI += 2) {
645 lw19AddrStr += String.fromCharCode(parseInt(lw19AddrHex.substr(lw19AddrI, 2), 16));
646 }
647 }
648 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw19AddrStr)) { lw19_fok = false; }
649 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
650 if (lw19_f["81"] !== "0640") { lw19_fok = false; } // operation
651 if (lw19_f["5A"] !== "989209012143658709F5") { lw19_fok = false; } // iccid
652 }
653 bind.checkData("S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw19_fok ? "1" : "0");
654
655 // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
656 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
657 var sdCla20 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
658 var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF280481020430", "00", "9000");
659 bind.checkData("S20-C1 SW", "9000", s20.sw);
660 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
661 var lw20T = BindEs10xSingleRequest.parseBerTlv(s20.resp);
662 var lw20Ok0 = lw20T.length === 1 && lw20T[0].tag === "BF28";
663 var lw20_br = lw20Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw20T[0].value) : [];
664 var lw20_brtag = lw20_br.length === 1 ? lw20_br[0].tag : "";
665 var lw20_els = lw20_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw20_br[0].value) : [];
666 bind.checkData("S20-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw20_brtag === "A0" && lw20_els.length === 0) ? "1" : "0");
667
668 // 步骤 21:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
669 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
670 var sdCla21 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
671 var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", "BF280481020560", "00", "9000");
672 bind.checkData("S21-C1 SW", "9000", s21.sw);
673 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
674 var lw21T = BindEs10xSingleRequest.parseBerTlv(s21.resp);
675 var lw21Ok0 = lw21T.length === 1 && lw21T[0].tag === "BF28";
676 var lw21_br = lw21Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw21T[0].value) : [];
677 var lw21_brtag = lw21_br.length === 1 ? lw21_br[0].tag : "";
678 var lw21_els = lw21_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw21_br[0].value) : [];
679 bind.checkData("S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw21_brtag === "A0" && lw21_els.length === 1) ? "1" : "0");
680 var lw21_fok = lw21_brtag === "A0" && lw21_els.length > 0;
681 for (var lw21i = 0; lw21i < lw21_els.length; lw21i++) {
682 if (lw21_els[lw21i].tag !== "BF2F") { lw21_fok = false; continue; }
683 var lw21M = BindEs10xSingleRequest.parseBerTlv(lw21_els[lw21i].value);
684 var lw21_f = {};
685 for (var lw21j = 0; lw21j < lw21M.length; lw21j++) {
686 if (lw21_f[lw21M[lw21j].tag] === undefined) { lw21_f[lw21M[lw21j].tag] = lw21M[lw21j].value; }
687 }
688 if (lw21_f["80"] === undefined) { lw21_fok = false; }
689 var lw21AddrHex = lw21_f["0C"];
690 var lw21AddrStr = "";
691 if (typeof lw21AddrHex === "string" && lw21AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw21AddrHex)) {
692 for (var lw21AddrI = 0; lw21AddrI < lw21AddrHex.length; lw21AddrI += 2) {
693 lw21AddrStr += String.fromCharCode(parseInt(lw21AddrHex.substr(lw21AddrI, 2), 16));
694 }
695 }
696 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw21AddrStr)) { lw21_fok = false; }
697 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
698 if (lw21_f["81"] !== "0640") { lw21_fok = false; } // operation
699 if (lw21_f["5A"] !== "989209012143658709F5") { lw21_fok = false; } // iccid
700 }
701 bind.checkData("S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw21_fok ? "1" : "0");
702
703 // 步骤 22:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
704 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
705 var sdCla22 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
706 var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF2804810205E0", "00", "9000");
707 bind.checkData("S22-C1 SW", "9000", s22.sw);
708 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
709 var lw22T = BindEs10xSingleRequest.parseBerTlv(s22.resp);
710 var lw22Ok0 = lw22T.length === 1 && lw22T[0].tag === "BF28";
711 var lw22_br = lw22Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw22T[0].value) : [];
712 var lw22_brtag = lw22_br.length === 1 ? lw22_br[0].tag : "";
713 var lw22_els = lw22_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw22_br[0].value) : [];
714 bind.checkData("S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw22_brtag === "A0" && lw22_els.length === 1) ? "1" : "0");
715 var lw22_fok = lw22_brtag === "A0" && lw22_els.length > 0;
716 for (var lw22i = 0; lw22i < lw22_els.length; lw22i++) {
717 if (lw22_els[lw22i].tag !== "BF2F") { lw22_fok = false; continue; }
718 var lw22M = BindEs10xSingleRequest.parseBerTlv(lw22_els[lw22i].value);
719 var lw22_f = {};
720 for (var lw22j = 0; lw22j < lw22M.length; lw22j++) {
721 if (lw22_f[lw22M[lw22j].tag] === undefined) { lw22_f[lw22M[lw22j].tag] = lw22M[lw22j].value; }
722 }
723 if (lw22_f["80"] === undefined) { lw22_fok = false; }
724 var lw22AddrHex = lw22_f["0C"];
725 var lw22AddrStr = "";
726 if (typeof lw22AddrHex === "string" && lw22AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw22AddrHex)) {
727 for (var lw22AddrI = 0; lw22AddrI < lw22AddrHex.length; lw22AddrI += 2) {
728 lw22AddrStr += String.fromCharCode(parseInt(lw22AddrHex.substr(lw22AddrI, 2), 16));
729 }
730 }
731 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw22AddrStr)) { lw22_fok = false; }
732 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
733 if (lw22_f["81"] !== "0640") { lw22_fok = false; } // operation
734 if (lw22_f["5A"] !== "989209012143658709F5") { lw22_fok = false; } // iccid
735 }
736 bind.checkData("S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw22_fok ? "1" : "0");
737
738 // 步骤 23:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
739 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
740 var sdCla23 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
741 var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF2804810204F0", "00", "9000");
742 bind.checkData("S23-C1 SW", "9000", s23.sw);
743 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
744 var lw23T = BindEs10xSingleRequest.parseBerTlv(s23.resp);
745 var lw23Ok0 = lw23T.length === 1 && lw23T[0].tag === "BF28";
746 var lw23_br = lw23Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw23T[0].value) : [];
747 var lw23_brtag = lw23_br.length === 1 ? lw23_br[0].tag : "";
748 var lw23_els = lw23_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw23_br[0].value) : [];
749 bind.checkData("S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw23_brtag === "A0" && lw23_els.length === 1) ? "1" : "0");
750 var lw23_fok = lw23_brtag === "A0" && lw23_els.length > 0;
751 for (var lw23i = 0; lw23i < lw23_els.length; lw23i++) {
752 if (lw23_els[lw23i].tag !== "BF2F") { lw23_fok = false; continue; }
753 var lw23M = BindEs10xSingleRequest.parseBerTlv(lw23_els[lw23i].value);
754 var lw23_f = {};
755 for (var lw23j = 0; lw23j < lw23M.length; lw23j++) {
756 if (lw23_f[lw23M[lw23j].tag] === undefined) { lw23_f[lw23M[lw23j].tag] = lw23M[lw23j].value; }
757 }
758 if (lw23_f["80"] === undefined) { lw23_fok = false; }
759 var lw23AddrHex = lw23_f["0C"];
760 var lw23AddrStr = "";
761 if (typeof lw23AddrHex === "string" && lw23AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw23AddrHex)) {
762 for (var lw23AddrI = 0; lw23AddrI < lw23AddrHex.length; lw23AddrI += 2) {
763 lw23AddrStr += String.fromCharCode(parseInt(lw23AddrHex.substr(lw23AddrI, 2), 16));
764 }
765 }
766 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw23AddrStr)) { lw23_fok = false; }
767 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
768 if (lw23_f["81"] !== "0520") { lw23_fok = false; } // operation
769 if (lw23_f["5A"] !== "989209012143658709F5") { lw23_fok = false; } // iccid
770 }
771 bind.checkData("S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT element fields", "1", lw23_fok ? "1" : "0");
772
773 // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
774 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
775 var sdCla24 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
776 var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2800", "00", "9000");
777 bind.checkData("S24-C1 SW", "9000", s24.sw);
778 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
779 var lw24T = BindEs10xSingleRequest.parseBerTlv(s24.resp);
780 var lw24Ok0 = lw24T.length === 1 && lw24T[0].tag === "BF28";
781 var lw24_br = lw24Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw24T[0].value) : [];
782 var lw24_brtag = lw24_br.length === 1 ? lw24_br[0].tag : "";
783 var lw24_els = lw24_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw24_br[0].value) : [];
784 bind.checkData("S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw24_brtag === "A0" && lw24_els.length === 1) ? "1" : "0");
785 var lw24_fok = lw24_brtag === "A0" && lw24_els.length > 0;
786 for (var lw24i = 0; lw24i < lw24_els.length; lw24i++) {
787 if (lw24_els[lw24i].tag !== "BF2F") { lw24_fok = false; continue; }
788 var lw24M = BindEs10xSingleRequest.parseBerTlv(lw24_els[lw24i].value);
789 var lw24_f = {};
790 for (var lw24j = 0; lw24j < lw24M.length; lw24j++) {
791 if (lw24_f[lw24M[lw24j].tag] === undefined) { lw24_f[lw24M[lw24j].tag] = lw24M[lw24j].value; }
792 }
793 if (lw24_f["80"] === undefined) { lw24_fok = false; }
794 var lw24AddrHex = lw24_f["0C"];
795 var lw24AddrStr = "";
796 if (typeof lw24AddrHex === "string" && lw24AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw24AddrHex)) {
797 for (var lw24AddrI = 0; lw24AddrI < lw24AddrHex.length; lw24AddrI += 2) {
798 lw24AddrStr += String.fromCharCode(parseInt(lw24AddrHex.substr(lw24AddrI, 2), 16));
799 }
800 }
801 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw24AddrStr)) { lw24_fok = false; }
802 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
803 if (lw24_f["81"] !== "0520") { lw24_fok = false; } // operation
804 if (lw24_f["5A"] !== "989209012143658709F5") { lw24_fok = false; } // iccid
805 }
806 bind.checkData("S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw24_fok ? "1" : "0");
807
808 // 步骤 25:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
809 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
810 var sdCla25 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
811 var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2803810100", "00", "9000");
812 bind.checkData("S25-C1 SW", "9000", s25.sw);
813 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
814 var lw25T = BindEs10xSingleRequest.parseBerTlv(s25.resp);
815 var lw25Ok0 = lw25T.length === 1 && lw25T[0].tag === "BF28";
816 var lw25_br = lw25Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw25T[0].value) : [];
817 var lw25_brtag = lw25_br.length === 1 ? lw25_br[0].tag : "";
818 var lw25_els = lw25_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw25_br[0].value) : [];
819 bind.checkData("S25-C2 R-APDU 二选一 branch/count", "1", (lw25_brtag === "A0" && lw25_els.length === 0) || (lw25_brtag === "81" && lw25_br.length === 1 && lw25_br[0].value === "7F") ? "1" : "0");
820
821 // 步骤 26:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
822 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
823 var sdCla26 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
824 var s26 = bind.sendApdu(sdCla26, "E2", "91", "00", "BF280481020780", "00", "9000");
825 bind.checkData("S26-C1 SW", "9000", s26.sw);
826 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
827 var lw26T = BindEs10xSingleRequest.parseBerTlv(s26.resp);
828 var lw26Ok0 = lw26T.length === 1 && lw26T[0].tag === "BF28";
829 var lw26_br = lw26Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw26T[0].value) : [];
830 var lw26_brtag = lw26_br.length === 1 ? lw26_br[0].tag : "";
831 var lw26_els = lw26_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw26_br[0].value) : [];
832 bind.checkData("S26-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw26_brtag === "A0" && lw26_els.length === 0) ? "1" : "0");
833
834 // 步骤 27:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
835 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
836 var sdCla27 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
837 var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF280481020640", "00", "9000");
838 bind.checkData("S27-C1 SW", "9000", s27.sw);
839 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
840 var lw27T = BindEs10xSingleRequest.parseBerTlv(s27.resp);
841 var lw27Ok0 = lw27T.length === 1 && lw27T[0].tag === "BF28";
842 var lw27_br = lw27Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw27T[0].value) : [];
843 var lw27_brtag = lw27_br.length === 1 ? lw27_br[0].tag : "";
844 var lw27_els = lw27_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw27_br[0].value) : [];
845 bind.checkData("S27-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw27_brtag === "A0" && lw27_els.length === 0) ? "1" : "0");
846
847 // 步骤 28:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
848 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
849 var sdCla28 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
850 var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", "BF280481020520", "00", "9000");
851 bind.checkData("S28-C1 SW", "9000", s28.sw);
852 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
853 var lw28T = BindEs10xSingleRequest.parseBerTlv(s28.resp);
854 var lw28Ok0 = lw28T.length === 1 && lw28T[0].tag === "BF28";
855 var lw28_br = lw28Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw28T[0].value) : [];
856 var lw28_brtag = lw28_br.length === 1 ? lw28_br[0].tag : "";
857 var lw28_els = lw28_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw28_br[0].value) : [];
858 bind.checkData("S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw28_brtag === "A0" && lw28_els.length === 1) ? "1" : "0");
859 var lw28_fok = lw28_brtag === "A0" && lw28_els.length > 0;
860 for (var lw28i = 0; lw28i < lw28_els.length; lw28i++) {
861 if (lw28_els[lw28i].tag !== "BF2F") { lw28_fok = false; continue; }
862 var lw28M = BindEs10xSingleRequest.parseBerTlv(lw28_els[lw28i].value);
863 var lw28_f = {};
864 for (var lw28j = 0; lw28j < lw28M.length; lw28j++) {
865 if (lw28_f[lw28M[lw28j].tag] === undefined) { lw28_f[lw28M[lw28j].tag] = lw28M[lw28j].value; }
866 }
867 if (lw28_f["80"] === undefined) { lw28_fok = false; }
868 var lw28AddrHex = lw28_f["0C"];
869 var lw28AddrStr = "";
870 if (typeof lw28AddrHex === "string" && lw28AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw28AddrHex)) {
871 for (var lw28AddrI = 0; lw28AddrI < lw28AddrHex.length; lw28AddrI += 2) {
872 lw28AddrStr += String.fromCharCode(parseInt(lw28AddrHex.substr(lw28AddrI, 2), 16));
873 }
874 }
875 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw28AddrStr)) { lw28_fok = false; }
876 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
877 if (lw28_f["81"] !== "0520") { lw28_fok = false; } // operation
878 if (lw28_f["5A"] !== "989209012143658709F5") { lw28_fok = false; } // iccid
879 }
880 bind.checkData("S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw28_fok ? "1" : "0");
881
882 // 步骤 29:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
883 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
884 var sdCla29 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
885 var s29 = bind.sendApdu(sdCla29, "E2", "91", "00", "BF280481020410", "00", "9000");
886 bind.checkData("S29-C1 SW", "9000", s29.sw);
887 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
888 var lw29T = BindEs10xSingleRequest.parseBerTlv(s29.resp);
889 var lw29Ok0 = lw29T.length === 1 && lw29T[0].tag === "BF28";
890 var lw29_br = lw29Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw29T[0].value) : [];
891 var lw29_brtag = lw29_br.length === 1 ? lw29_br[0].tag : "";
892 var lw29_els = lw29_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw29_br[0].value) : [];
893 bind.checkData("S29-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw29_brtag === "A0" && lw29_els.length === 0) ? "1" : "0");
894
895 // 步骤 30:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
896 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
897 var sdCla30 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
898 var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", "BF2804810206C0", "00", "9000");
899 bind.checkData("S30-C1 SW", "9000", s30.sw);
900 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
901 var lw30T = BindEs10xSingleRequest.parseBerTlv(s30.resp);
902 var lw30Ok0 = lw30T.length === 1 && lw30T[0].tag === "BF28";
903 var lw30_br = lw30Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw30T[0].value) : [];
904 var lw30_brtag = lw30_br.length === 1 ? lw30_br[0].tag : "";
905 var lw30_els = lw30_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw30_br[0].value) : [];
906 bind.checkData("S30-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw30_brtag === "A0" && lw30_els.length === 0) ? "1" : "0");
907
908 // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
909 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
910 var sdCla31 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
911 var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF280481020430", "00", "9000");
912 bind.checkData("S31-C1 SW", "9000", s31.sw);
913 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
914 var lw31T = BindEs10xSingleRequest.parseBerTlv(s31.resp);
915 var lw31Ok0 = lw31T.length === 1 && lw31T[0].tag === "BF28";
916 var lw31_br = lw31Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw31T[0].value) : [];
917 var lw31_brtag = lw31_br.length === 1 ? lw31_br[0].tag : "";
918 var lw31_els = lw31_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw31_br[0].value) : [];
919 bind.checkData("S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw31_brtag === "A0" && lw31_els.length === 1) ? "1" : "0");
920 var lw31_fok = lw31_brtag === "A0" && lw31_els.length > 0;
921 for (var lw31i = 0; lw31i < lw31_els.length; lw31i++) {
922 if (lw31_els[lw31i].tag !== "BF2F") { lw31_fok = false; continue; }
923 var lw31M = BindEs10xSingleRequest.parseBerTlv(lw31_els[lw31i].value);
924 var lw31_f = {};
925 for (var lw31j = 0; lw31j < lw31M.length; lw31j++) {
926 if (lw31_f[lw31M[lw31j].tag] === undefined) { lw31_f[lw31M[lw31j].tag] = lw31M[lw31j].value; }
927 }
928 if (lw31_f["80"] === undefined) { lw31_fok = false; }
929 var lw31AddrHex = lw31_f["0C"];
930 var lw31AddrStr = "";
931 if (typeof lw31AddrHex === "string" && lw31AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw31AddrHex)) {
932 for (var lw31AddrI = 0; lw31AddrI < lw31AddrHex.length; lw31AddrI += 2) {
933 lw31AddrStr += String.fromCharCode(parseInt(lw31AddrHex.substr(lw31AddrI, 2), 16));
934 }
935 }
936 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw31AddrStr)) { lw31_fok = false; }
937 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
938 if (lw31_f["81"] !== "0520") { lw31_fok = false; } // operation
939 if (lw31_f["5A"] !== "989209012143658709F5") { lw31_fok = false; } // iccid
940 }
941 bind.checkData("S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw31_fok ? "1" : "0");
942
943 // 步骤 32:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
944 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
945 var sdCla32 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
946 var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF280481020560", "00", "9000");
947 bind.checkData("S32-C1 SW", "9000", s32.sw);
948 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
949 var lw32T = BindEs10xSingleRequest.parseBerTlv(s32.resp);
950 var lw32Ok0 = lw32T.length === 1 && lw32T[0].tag === "BF28";
951 var lw32_br = lw32Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw32T[0].value) : [];
952 var lw32_brtag = lw32_br.length === 1 ? lw32_br[0].tag : "";
953 var lw32_els = lw32_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw32_br[0].value) : [];
954 bind.checkData("S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw32_brtag === "A0" && lw32_els.length === 1) ? "1" : "0");
955 var lw32_fok = lw32_brtag === "A0" && lw32_els.length > 0;
956 for (var lw32i = 0; lw32i < lw32_els.length; lw32i++) {
957 if (lw32_els[lw32i].tag !== "BF2F") { lw32_fok = false; continue; }
958 var lw32M = BindEs10xSingleRequest.parseBerTlv(lw32_els[lw32i].value);
959 var lw32_f = {};
960 for (var lw32j = 0; lw32j < lw32M.length; lw32j++) {
961 if (lw32_f[lw32M[lw32j].tag] === undefined) { lw32_f[lw32M[lw32j].tag] = lw32M[lw32j].value; }
962 }
963 if (lw32_f["80"] === undefined) { lw32_fok = false; }
964 var lw32AddrHex = lw32_f["0C"];
965 var lw32AddrStr = "";
966 if (typeof lw32AddrHex === "string" && lw32AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw32AddrHex)) {
967 for (var lw32AddrI = 0; lw32AddrI < lw32AddrHex.length; lw32AddrI += 2) {
968 lw32AddrStr += String.fromCharCode(parseInt(lw32AddrHex.substr(lw32AddrI, 2), 16));
969 }
970 }
971 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw32AddrStr)) { lw32_fok = false; }
972 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
973 if (lw32_f["81"] !== "0520") { lw32_fok = false; } // operation
974 if (lw32_f["5A"] !== "989209012143658709F5") { lw32_fok = false; } // iccid
975 }
976 bind.checkData("S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw32_fok ? "1" : "0");
977
978 // 步骤 33:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
979 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
980 var sdCla33 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
981 var s33 = bind.sendApdu(sdCla33, "E2", "91", "00", "BF2804810205E0", "00", "9000");
982 bind.checkData("S33-C1 SW", "9000", s33.sw);
983 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
984 var lw33T = BindEs10xSingleRequest.parseBerTlv(s33.resp);
985 var lw33Ok0 = lw33T.length === 1 && lw33T[0].tag === "BF28";
986 var lw33_br = lw33Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw33T[0].value) : [];
987 var lw33_brtag = lw33_br.length === 1 ? lw33_br[0].tag : "";
988 var lw33_els = lw33_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw33_br[0].value) : [];
989 bind.checkData("S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw33_brtag === "A0" && lw33_els.length === 1) ? "1" : "0");
990 var lw33_fok = lw33_brtag === "A0" && lw33_els.length > 0;
991 for (var lw33i = 0; lw33i < lw33_els.length; lw33i++) {
992 if (lw33_els[lw33i].tag !== "BF2F") { lw33_fok = false; continue; }
993 var lw33M = BindEs10xSingleRequest.parseBerTlv(lw33_els[lw33i].value);
994 var lw33_f = {};
995 for (var lw33j = 0; lw33j < lw33M.length; lw33j++) {
996 if (lw33_f[lw33M[lw33j].tag] === undefined) { lw33_f[lw33M[lw33j].tag] = lw33M[lw33j].value; }
997 }
998 if (lw33_f["80"] === undefined) { lw33_fok = false; }
999 var lw33AddrHex = lw33_f["0C"];
1000 var lw33AddrStr = "";
1001 if (typeof lw33AddrHex === "string" && lw33AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw33AddrHex)) {
1002 for (var lw33AddrI = 0; lw33AddrI < lw33AddrHex.length; lw33AddrI += 2) {
1003 lw33AddrStr += String.fromCharCode(parseInt(lw33AddrHex.substr(lw33AddrI, 2), 16));
1004 }
1005 }
1006 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw33AddrStr)) { lw33_fok = false; }
1007 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1008 if (lw33_f["81"] !== "0520") { lw33_fok = false; } // operation
1009 if (lw33_f["5A"] !== "989209012143658709F5") { lw33_fok = false; } // iccid
1010 }
1011 bind.checkData("S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw33_fok ? "1" : "0");
1012
1013 // 步骤 34:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
1014 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1015 var sdCla34 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1016 var s34 = bind.sendApdu(sdCla34, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1017 bind.checkData("S34-C1 SW", "9000", s34.sw);
1018 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1019 var lw34T = BindEs10xSingleRequest.parseBerTlv(s34.resp);
1020 var lw34Ok0 = lw34T.length === 1 && lw34T[0].tag === "BF28";
1021 var lw34_br = lw34Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw34T[0].value) : [];
1022 var lw34_brtag = lw34_br.length === 1 ? lw34_br[0].tag : "";
1023 var lw34_els = lw34_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw34_br[0].value) : [];
1024 bind.checkData("S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw34_brtag === "A0" && lw34_els.length === 1) ? "1" : "0");
1025 var lw34_fok = lw34_brtag === "A0" && lw34_els.length > 0;
1026 for (var lw34i = 0; lw34i < lw34_els.length; lw34i++) {
1027 if (lw34_els[lw34i].tag !== "BF2F") { lw34_fok = false; continue; }
1028 var lw34M = BindEs10xSingleRequest.parseBerTlv(lw34_els[lw34i].value);
1029 var lw34_f = {};
1030 for (var lw34j = 0; lw34j < lw34M.length; lw34j++) {
1031 if (lw34_f[lw34M[lw34j].tag] === undefined) { lw34_f[lw34M[lw34j].tag] = lw34M[lw34j].value; }
1032 }
1033 if (lw34_f["80"] === undefined) { lw34_fok = false; }
1034 var lw34AddrHex = lw34_f["0C"];
1035 var lw34AddrStr = "";
1036 if (typeof lw34AddrHex === "string" && lw34AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw34AddrHex)) {
1037 for (var lw34AddrI = 0; lw34AddrI < lw34AddrHex.length; lw34AddrI += 2) {
1038 lw34AddrStr += String.fromCharCode(parseInt(lw34AddrHex.substr(lw34AddrI, 2), 16));
1039 }
1040 }
1041 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw34AddrStr)) { lw34_fok = false; }
1042 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1043 if (lw34_f["81"] !== "0410") { lw34_fok = false; } // operation
1044 if (lw34_f["5A"] !== "989209012143658709F5") { lw34_fok = false; } // iccid
1045 }
1046 bind.checkData("S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT element fields", "1", lw34_fok ? "1" : "0");
1047
1048 // 步骤 35:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
1049 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1050 var sdCla35 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1051 var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF2800", "00", "9000");
1052 bind.checkData("S35-C1 SW", "9000", s35.sw);
1053 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1054 var lw35T = BindEs10xSingleRequest.parseBerTlv(s35.resp);
1055 var lw35Ok0 = lw35T.length === 1 && lw35T[0].tag === "BF28";
1056 var lw35_br = lw35Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw35T[0].value) : [];
1057 var lw35_brtag = lw35_br.length === 1 ? lw35_br[0].tag : "";
1058 var lw35_els = lw35_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw35_br[0].value) : [];
1059 bind.checkData("S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw35_brtag === "A0" && lw35_els.length === 1) ? "1" : "0");
1060 var lw35_fok = lw35_brtag === "A0" && lw35_els.length > 0;
1061 for (var lw35i = 0; lw35i < lw35_els.length; lw35i++) {
1062 if (lw35_els[lw35i].tag !== "BF2F") { lw35_fok = false; continue; }
1063 var lw35M = BindEs10xSingleRequest.parseBerTlv(lw35_els[lw35i].value);
1064 var lw35_f = {};
1065 for (var lw35j = 0; lw35j < lw35M.length; lw35j++) {
1066 if (lw35_f[lw35M[lw35j].tag] === undefined) { lw35_f[lw35M[lw35j].tag] = lw35M[lw35j].value; }
1067 }
1068 if (lw35_f["80"] === undefined) { lw35_fok = false; }
1069 var lw35AddrHex = lw35_f["0C"];
1070 var lw35AddrStr = "";
1071 if (typeof lw35AddrHex === "string" && lw35AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw35AddrHex)) {
1072 for (var lw35AddrI = 0; lw35AddrI < lw35AddrHex.length; lw35AddrI += 2) {
1073 lw35AddrStr += String.fromCharCode(parseInt(lw35AddrHex.substr(lw35AddrI, 2), 16));
1074 }
1075 }
1076 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw35AddrStr)) { lw35_fok = false; }
1077 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1078 if (lw35_f["81"] !== "0410") { lw35_fok = false; } // operation
1079 if (lw35_f["5A"] !== "989209012143658709F5") { lw35_fok = false; } // iccid
1080 }
1081 bind.checkData("S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw35_fok ? "1" : "0");
1082
1083 // 步骤 36:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1084 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1085 var sdCla36 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1086 var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", "BF2803810100", "00", "9000");
1087 bind.checkData("S36-C1 SW", "9000", s36.sw);
1088 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1089 var lw36T = BindEs10xSingleRequest.parseBerTlv(s36.resp);
1090 var lw36Ok0 = lw36T.length === 1 && lw36T[0].tag === "BF28";
1091 var lw36_br = lw36Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw36T[0].value) : [];
1092 var lw36_brtag = lw36_br.length === 1 ? lw36_br[0].tag : "";
1093 var lw36_els = lw36_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw36_br[0].value) : [];
1094 bind.checkData("S36-C2 R-APDU 二选一 branch/count", "1", (lw36_brtag === "A0" && lw36_els.length === 0) || (lw36_brtag === "81" && lw36_br.length === 1 && lw36_br[0].value === "7F") ? "1" : "0");
1095
1096 // 步骤 37:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1097 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1098 var sdCla37 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1099 var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF280481020780", "00", "9000");
1100 bind.checkData("S37-C1 SW", "9000", s37.sw);
1101 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1102 var lw37T = BindEs10xSingleRequest.parseBerTlv(s37.resp);
1103 var lw37Ok0 = lw37T.length === 1 && lw37T[0].tag === "BF28";
1104 var lw37_br = lw37Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw37T[0].value) : [];
1105 var lw37_brtag = lw37_br.length === 1 ? lw37_br[0].tag : "";
1106 var lw37_els = lw37_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw37_br[0].value) : [];
1107 bind.checkData("S37-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw37_brtag === "A0" && lw37_els.length === 0) ? "1" : "0");
1108
1109 // 步骤 38:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1110 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1111 var sdCla38 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1112 var s38 = bind.sendApdu(sdCla38, "E2", "91", "00", "BF280481020640", "00", "9000");
1113 bind.checkData("S38-C1 SW", "9000", s38.sw);
1114 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1115 var lw38T = BindEs10xSingleRequest.parseBerTlv(s38.resp);
1116 var lw38Ok0 = lw38T.length === 1 && lw38T[0].tag === "BF28";
1117 var lw38_br = lw38Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw38T[0].value) : [];
1118 var lw38_brtag = lw38_br.length === 1 ? lw38_br[0].tag : "";
1119 var lw38_els = lw38_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw38_br[0].value) : [];
1120 bind.checkData("S38-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw38_brtag === "A0" && lw38_els.length === 0) ? "1" : "0");
1121
1122 // 步骤 39:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1123 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1124 var sdCla39 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1125 var s39 = bind.sendApdu(sdCla39, "E2", "91", "00", "BF280481020520", "00", "9000");
1126 bind.checkData("S39-C1 SW", "9000", s39.sw);
1127 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1128 var lw39T = BindEs10xSingleRequest.parseBerTlv(s39.resp);
1129 var lw39Ok0 = lw39T.length === 1 && lw39T[0].tag === "BF28";
1130 var lw39_br = lw39Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw39T[0].value) : [];
1131 var lw39_brtag = lw39_br.length === 1 ? lw39_br[0].tag : "";
1132 var lw39_els = lw39_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw39_br[0].value) : [];
1133 bind.checkData("S39-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw39_brtag === "A0" && lw39_els.length === 0) ? "1" : "0");
1134
1135 // 步骤 40:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1136 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1137 var sdCla40 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1138 var s40 = bind.sendApdu(sdCla40, "E2", "91", "00", "BF280481020410", "00", "9000");
1139 bind.checkData("S40-C1 SW", "9000", s40.sw);
1140 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1141 var lw40T = BindEs10xSingleRequest.parseBerTlv(s40.resp);
1142 var lw40Ok0 = lw40T.length === 1 && lw40T[0].tag === "BF28";
1143 var lw40_br = lw40Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw40T[0].value) : [];
1144 var lw40_brtag = lw40_br.length === 1 ? lw40_br[0].tag : "";
1145 var lw40_els = lw40_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw40_br[0].value) : [];
1146 bind.checkData("S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw40_brtag === "A0" && lw40_els.length === 1) ? "1" : "0");
1147 var lw40_fok = lw40_brtag === "A0" && lw40_els.length > 0;
1148 for (var lw40i = 0; lw40i < lw40_els.length; lw40i++) {
1149 if (lw40_els[lw40i].tag !== "BF2F") { lw40_fok = false; continue; }
1150 var lw40M = BindEs10xSingleRequest.parseBerTlv(lw40_els[lw40i].value);
1151 var lw40_f = {};
1152 for (var lw40j = 0; lw40j < lw40M.length; lw40j++) {
1153 if (lw40_f[lw40M[lw40j].tag] === undefined) { lw40_f[lw40M[lw40j].tag] = lw40M[lw40j].value; }
1154 }
1155 if (lw40_f["80"] === undefined) { lw40_fok = false; }
1156 var lw40AddrHex = lw40_f["0C"];
1157 var lw40AddrStr = "";
1158 if (typeof lw40AddrHex === "string" && lw40AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw40AddrHex)) {
1159 for (var lw40AddrI = 0; lw40AddrI < lw40AddrHex.length; lw40AddrI += 2) {
1160 lw40AddrStr += String.fromCharCode(parseInt(lw40AddrHex.substr(lw40AddrI, 2), 16));
1161 }
1162 }
1163 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw40AddrStr)) { lw40_fok = false; }
1164 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1165 if (lw40_f["81"] !== "0410") { lw40_fok = false; } // operation
1166 if (lw40_f["5A"] !== "989209012143658709F5") { lw40_fok = false; } // iccid
1167 }
1168 bind.checkData("S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw40_fok ? "1" : "0");
1169
1170 // 步骤 41:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1171 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1172 var sdCla41 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1173 var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", "BF2804810206C0", "00", "9000");
1174 bind.checkData("S41-C1 SW", "9000", s41.sw);
1175 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1176 var lw41T = BindEs10xSingleRequest.parseBerTlv(s41.resp);
1177 var lw41Ok0 = lw41T.length === 1 && lw41T[0].tag === "BF28";
1178 var lw41_br = lw41Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw41T[0].value) : [];
1179 var lw41_brtag = lw41_br.length === 1 ? lw41_br[0].tag : "";
1180 var lw41_els = lw41_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw41_br[0].value) : [];
1181 bind.checkData("S41-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw41_brtag === "A0" && lw41_els.length === 0) ? "1" : "0");
1182
1183 // 步骤 42:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1184 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1185 var sdCla42 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1186 var s42 = bind.sendApdu(sdCla42, "E2", "91", "00", "BF280481020430", "00", "9000");
1187 bind.checkData("S42-C1 SW", "9000", s42.sw);
1188 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1189 var lw42T = BindEs10xSingleRequest.parseBerTlv(s42.resp);
1190 var lw42Ok0 = lw42T.length === 1 && lw42T[0].tag === "BF28";
1191 var lw42_br = lw42Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw42T[0].value) : [];
1192 var lw42_brtag = lw42_br.length === 1 ? lw42_br[0].tag : "";
1193 var lw42_els = lw42_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw42_br[0].value) : [];
1194 bind.checkData("S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw42_brtag === "A0" && lw42_els.length === 1) ? "1" : "0");
1195 var lw42_fok = lw42_brtag === "A0" && lw42_els.length > 0;
1196 for (var lw42i = 0; lw42i < lw42_els.length; lw42i++) {
1197 if (lw42_els[lw42i].tag !== "BF2F") { lw42_fok = false; continue; }
1198 var lw42M = BindEs10xSingleRequest.parseBerTlv(lw42_els[lw42i].value);
1199 var lw42_f = {};
1200 for (var lw42j = 0; lw42j < lw42M.length; lw42j++) {
1201 if (lw42_f[lw42M[lw42j].tag] === undefined) { lw42_f[lw42M[lw42j].tag] = lw42M[lw42j].value; }
1202 }
1203 if (lw42_f["80"] === undefined) { lw42_fok = false; }
1204 var lw42AddrHex = lw42_f["0C"];
1205 var lw42AddrStr = "";
1206 if (typeof lw42AddrHex === "string" && lw42AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw42AddrHex)) {
1207 for (var lw42AddrI = 0; lw42AddrI < lw42AddrHex.length; lw42AddrI += 2) {
1208 lw42AddrStr += String.fromCharCode(parseInt(lw42AddrHex.substr(lw42AddrI, 2), 16));
1209 }
1210 }
1211 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw42AddrStr)) { lw42_fok = false; }
1212 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1213 if (lw42_f["81"] !== "0410") { lw42_fok = false; } // operation
1214 if (lw42_f["5A"] !== "989209012143658709F5") { lw42_fok = false; } // iccid
1215 }
1216 bind.checkData("S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw42_fok ? "1" : "0");
1217
1218 // 步骤 43:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1219 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1220 var sdCla43 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1221 var s43 = bind.sendApdu(sdCla43, "E2", "91", "00", "BF280481020560", "00", "9000");
1222 bind.checkData("S43-C1 SW", "9000", s43.sw);
1223 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1224 var lw43T = BindEs10xSingleRequest.parseBerTlv(s43.resp);
1225 var lw43Ok0 = lw43T.length === 1 && lw43T[0].tag === "BF28";
1226 var lw43_br = lw43Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw43T[0].value) : [];
1227 var lw43_brtag = lw43_br.length === 1 ? lw43_br[0].tag : "";
1228 var lw43_els = lw43_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw43_br[0].value) : [];
1229 bind.checkData("S43-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw43_brtag === "A0" && lw43_els.length === 0) ? "1" : "0");
1230
1231 // 步骤 44:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1232 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1233 var sdCla44 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1234 var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF280481020470", "00", "9000");
1235 bind.checkData("S44-C1 SW", "9000", s44.sw);
1236 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1237 var lw44T = BindEs10xSingleRequest.parseBerTlv(s44.resp);
1238 var lw44Ok0 = lw44T.length === 1 && lw44T[0].tag === "BF28";
1239 var lw44_br = lw44Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw44T[0].value) : [];
1240 var lw44_brtag = lw44_br.length === 1 ? lw44_br[0].tag : "";
1241 var lw44_els = lw44_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw44_br[0].value) : [];
1242 bind.checkData("S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw44_brtag === "A0" && lw44_els.length === 1) ? "1" : "0");
1243 var lw44_fok = lw44_brtag === "A0" && lw44_els.length > 0;
1244 for (var lw44i = 0; lw44i < lw44_els.length; lw44i++) {
1245 if (lw44_els[lw44i].tag !== "BF2F") { lw44_fok = false; continue; }
1246 var lw44M = BindEs10xSingleRequest.parseBerTlv(lw44_els[lw44i].value);
1247 var lw44_f = {};
1248 for (var lw44j = 0; lw44j < lw44M.length; lw44j++) {
1249 if (lw44_f[lw44M[lw44j].tag] === undefined) { lw44_f[lw44M[lw44j].tag] = lw44M[lw44j].value; }
1250 }
1251 if (lw44_f["80"] === undefined) { lw44_fok = false; }
1252 var lw44AddrHex = lw44_f["0C"];
1253 var lw44AddrStr = "";
1254 if (typeof lw44AddrHex === "string" && lw44AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw44AddrHex)) {
1255 for (var lw44AddrI = 0; lw44AddrI < lw44AddrHex.length; lw44AddrI += 2) {
1256 lw44AddrStr += String.fromCharCode(parseInt(lw44AddrHex.substr(lw44AddrI, 2), 16));
1257 }
1258 }
1259 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw44AddrStr)) { lw44_fok = false; }
1260 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1261 if (lw44_f["81"] !== "0410") { lw44_fok = false; } // operation
1262 if (lw44_f["5A"] !== "989209012143658709F5") { lw44_fok = false; } // iccid
1263 }
1264 bind.checkData("S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw44_fok ? "1" : "0");
1265
1266 // 步骤 45:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
1267 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1268 var sdCla45 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1269 var s45 = bind.sendApdu(sdCla45, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1270 bind.checkData("S45-C1 SW", "9000", s45.sw);
1271 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1272 var lw45T = BindEs10xSingleRequest.parseBerTlv(s45.resp);
1273 var lw45Ok0 = lw45T.length === 1 && lw45T[0].tag === "BF28";
1274 var lw45_br = lw45Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw45T[0].value) : [];
1275 var lw45_brtag = lw45_br.length === 1 ? lw45_br[0].tag : "";
1276 var lw45_els = lw45_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw45_br[0].value) : [];
1277 bind.checkData("S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata branch/count", "1", (lw45_brtag === "A0" && lw45_els.length === 2) ? "1" : "0");
1278 var lw45_feok = lw45_brtag === "A0" && lw45_els.length === 2;
1279 var lw45_fobs = [];
1280 for (var lw45i = 0; lw45i < lw45_els.length; lw45i++) {
1281 if (lw45_els[lw45i].tag !== "BF2F") { lw45_feok = false; continue; }
1282 var lw45M = BindEs10xSingleRequest.parseBerTlv(lw45_els[lw45i].value);
1283 var lw45_f = {};
1284 for (var lw45j = 0; lw45j < lw45M.length; lw45j++) {
1285 if (lw45_f[lw45M[lw45j].tag] === undefined) { lw45_f[lw45M[lw45j].tag] = lw45M[lw45j].value; }
1286 }
1287 if (lw45_f["80"] === undefined) { lw45_feok = false; }
1288 lw45_fobs.push(lw45_f);
1289 }
1290 var lw45_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1291 for (var lw45k = 0; lw45k < lw45_fexp.length; lw45k++) {
1292 var lw45mc = 0;
1293 for (var lw45m = 0; lw45m < lw45_fobs.length; lw45m++) {
1294 if (lw45_fobs[lw45m]["81"] === lw45_fexp[lw45k].op && lw45_fobs[lw45m]["0C"] === lw45_fexp[lw45k].addr && lw45_fobs[lw45m]["5A"] === lw45_fexp[lw45k].iccid) { lw45mc++; }
1295 }
1296 if (lw45mc !== 1) { lw45_feok = false; }
1297 }
1298 bind.checkData("S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata element fields", "1", lw45_feok ? "1" : "0");
1299
1300 // 步骤 46:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
1301 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1302 var sdCla46 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1303 var s46 = bind.sendApdu(sdCla46, "E2", "91", "00", "BF2800", "00", "9000");
1304 bind.checkData("S46-C1 SW", "9000", s46.sw);
1305 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1306 var lw46T = BindEs10xSingleRequest.parseBerTlv(s46.resp);
1307 var lw46Ok0 = lw46T.length === 1 && lw46T[0].tag === "BF28";
1308 var lw46_br = lw46Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw46T[0].value) : [];
1309 var lw46_brtag = lw46_br.length === 1 ? lw46_br[0].tag : "";
1310 var lw46_els = lw46_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw46_br[0].value) : [];
1311 bind.checkData("S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw46_brtag === "A0" && lw46_els.length === 2) ? "1" : "0");
1312 var lw46_feok = lw46_brtag === "A0" && lw46_els.length === 2;
1313 var lw46_fobs = [];
1314 for (var lw46i = 0; lw46i < lw46_els.length; lw46i++) {
1315 if (lw46_els[lw46i].tag !== "BF2F") { lw46_feok = false; continue; }
1316 var lw46M = BindEs10xSingleRequest.parseBerTlv(lw46_els[lw46i].value);
1317 var lw46_f = {};
1318 for (var lw46j = 0; lw46j < lw46M.length; lw46j++) {
1319 if (lw46_f[lw46M[lw46j].tag] === undefined) { lw46_f[lw46M[lw46j].tag] = lw46M[lw46j].value; }
1320 }
1321 if (lw46_f["80"] === undefined) { lw46_feok = false; }
1322 lw46_fobs.push(lw46_f);
1323 }
1324 var lw46_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1325 for (var lw46k = 0; lw46k < lw46_fexp.length; lw46k++) {
1326 var lw46mc = 0;
1327 for (var lw46m = 0; lw46m < lw46_fobs.length; lw46m++) {
1328 if (lw46_fobs[lw46m]["81"] === lw46_fexp[lw46k].op && lw46_fobs[lw46m]["0C"] === lw46_fexp[lw46k].addr && lw46_fobs[lw46m]["5A"] === lw46_fexp[lw46k].iccid) { lw46mc++; }
1329 }
1330 if (lw46mc !== 1) { lw46_feok = false; }
1331 }
1332 bind.checkData("S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw46_feok ? "1" : "0");
1333
1334 // 步骤 47:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1335 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1336 var sdCla47 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1337 var s47 = bind.sendApdu(sdCla47, "E2", "91", "00", "BF2803810100", "00", "9000");
1338 bind.checkData("S47-C1 SW", "9000", s47.sw);
1339 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1340 var lw47T = BindEs10xSingleRequest.parseBerTlv(s47.resp);
1341 var lw47Ok0 = lw47T.length === 1 && lw47T[0].tag === "BF28";
1342 var lw47_br = lw47Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw47T[0].value) : [];
1343 var lw47_brtag = lw47_br.length === 1 ? lw47_br[0].tag : "";
1344 var lw47_els = lw47_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw47_br[0].value) : [];
1345 bind.checkData("S47-C2 R-APDU 二选一 branch/count", "1", (lw47_brtag === "A0" && lw47_els.length === 0) || (lw47_brtag === "81" && lw47_br.length === 1 && lw47_br[0].value === "7F") ? "1" : "0");
1346
1347 // 步骤 48:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1348 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1349 var sdCla48 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1350 var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", "BF280481020780", "00", "9000");
1351 bind.checkData("S48-C1 SW", "9000", s48.sw);
1352 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1353 var lw48T = BindEs10xSingleRequest.parseBerTlv(s48.resp);
1354 var lw48Ok0 = lw48T.length === 1 && lw48T[0].tag === "BF28";
1355 var lw48_br = lw48Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw48T[0].value) : [];
1356 var lw48_brtag = lw48_br.length === 1 ? lw48_br[0].tag : "";
1357 var lw48_els = lw48_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw48_br[0].value) : [];
1358 bind.checkData("S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw48_brtag === "A0" && lw48_els.length === 2) ? "1" : "0");
1359 var lw48_feok = lw48_brtag === "A0" && lw48_els.length === 2;
1360 var lw48_fobs = [];
1361 for (var lw48i = 0; lw48i < lw48_els.length; lw48i++) {
1362 if (lw48_els[lw48i].tag !== "BF2F") { lw48_feok = false; continue; }
1363 var lw48M = BindEs10xSingleRequest.parseBerTlv(lw48_els[lw48i].value);
1364 var lw48_f = {};
1365 for (var lw48j = 0; lw48j < lw48M.length; lw48j++) {
1366 if (lw48_f[lw48M[lw48j].tag] === undefined) { lw48_f[lw48M[lw48j].tag] = lw48M[lw48j].value; }
1367 }
1368 if (lw48_f["80"] === undefined) { lw48_feok = false; }
1369 lw48_fobs.push(lw48_f);
1370 }
1371 var lw48_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1372 for (var lw48k = 0; lw48k < lw48_fexp.length; lw48k++) {
1373 var lw48mc = 0;
1374 for (var lw48m = 0; lw48m < lw48_fobs.length; lw48m++) {
1375 if (lw48_fobs[lw48m]["81"] === lw48_fexp[lw48k].op && lw48_fobs[lw48m]["0C"] === lw48_fexp[lw48k].addr && lw48_fobs[lw48m]["5A"] === lw48_fexp[lw48k].iccid) { lw48mc++; }
1376 }
1377 if (lw48mc !== 1) { lw48_feok = false; }
1378 }
1379 bind.checkData("S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw48_feok ? "1" : "0");
1380
1381 // 步骤 49:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1382 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1383 var sdCla49 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1384 var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", "BF280481020640", "00", "9000");
1385 bind.checkData("S49-C1 SW", "9000", s49.sw);
1386 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1387 var lw49T = BindEs10xSingleRequest.parseBerTlv(s49.resp);
1388 var lw49Ok0 = lw49T.length === 1 && lw49T[0].tag === "BF28";
1389 var lw49_br = lw49Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw49T[0].value) : [];
1390 var lw49_brtag = lw49_br.length === 1 ? lw49_br[0].tag : "";
1391 var lw49_els = lw49_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw49_br[0].value) : [];
1392 bind.checkData("S49-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw49_brtag === "A0" && lw49_els.length === 0) ? "1" : "0");
1393
1394 // 步骤 50:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1395 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1396 var sdCla50 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1397 var s50 = bind.sendApdu(sdCla50, "E2", "91", "00", "BF280481020520", "00", "9000");
1398 bind.checkData("S50-C1 SW", "9000", s50.sw);
1399 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1400 var lw50T = BindEs10xSingleRequest.parseBerTlv(s50.resp);
1401 var lw50Ok0 = lw50T.length === 1 && lw50T[0].tag === "BF28";
1402 var lw50_br = lw50Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw50T[0].value) : [];
1403 var lw50_brtag = lw50_br.length === 1 ? lw50_br[0].tag : "";
1404 var lw50_els = lw50_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw50_br[0].value) : [];
1405 bind.checkData("S50-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw50_brtag === "A0" && lw50_els.length === 0) ? "1" : "0");
1406
1407 // 步骤 51:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1408 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1409 var sdCla51 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1410 var s51 = bind.sendApdu(sdCla51, "E2", "91", "00", "BF280481020410", "00", "9000");
1411 bind.checkData("S51-C1 SW", "9000", s51.sw);
1412 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1413 var lw51T = BindEs10xSingleRequest.parseBerTlv(s51.resp);
1414 var lw51Ok0 = lw51T.length === 1 && lw51T[0].tag === "BF28";
1415 var lw51_br = lw51Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw51T[0].value) : [];
1416 var lw51_brtag = lw51_br.length === 1 ? lw51_br[0].tag : "";
1417 var lw51_els = lw51_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw51_br[0].value) : [];
1418 bind.checkData("S51-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw51_brtag === "A0" && lw51_els.length === 0) ? "1" : "0");
1419
1420 // 步骤 52:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1421 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1422 var sdCla52 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1423 var s52 = bind.sendApdu(sdCla52, "E2", "91", "00", "BF2804810206C0", "00", "9000");
1424 bind.checkData("S52-C1 SW", "9000", s52.sw);
1425 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1426 var lw52T = BindEs10xSingleRequest.parseBerTlv(s52.resp);
1427 var lw52Ok0 = lw52T.length === 1 && lw52T[0].tag === "BF28";
1428 var lw52_br = lw52Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw52T[0].value) : [];
1429 var lw52_brtag = lw52_br.length === 1 ? lw52_br[0].tag : "";
1430 var lw52_els = lw52_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw52_br[0].value) : [];
1431 bind.checkData("S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw52_brtag === "A0" && lw52_els.length === 2) ? "1" : "0");
1432 var lw52_feok = lw52_brtag === "A0" && lw52_els.length === 2;
1433 var lw52_fobs = [];
1434 for (var lw52i = 0; lw52i < lw52_els.length; lw52i++) {
1435 if (lw52_els[lw52i].tag !== "BF2F") { lw52_feok = false; continue; }
1436 var lw52M = BindEs10xSingleRequest.parseBerTlv(lw52_els[lw52i].value);
1437 var lw52_f = {};
1438 for (var lw52j = 0; lw52j < lw52M.length; lw52j++) {
1439 if (lw52_f[lw52M[lw52j].tag] === undefined) { lw52_f[lw52M[lw52j].tag] = lw52M[lw52j].value; }
1440 }
1441 if (lw52_f["80"] === undefined) { lw52_feok = false; }
1442 lw52_fobs.push(lw52_f);
1443 }
1444 var lw52_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1445 for (var lw52k = 0; lw52k < lw52_fexp.length; lw52k++) {
1446 var lw52mc = 0;
1447 for (var lw52m = 0; lw52m < lw52_fobs.length; lw52m++) {
1448 if (lw52_fobs[lw52m]["81"] === lw52_fexp[lw52k].op && lw52_fobs[lw52m]["0C"] === lw52_fexp[lw52k].addr && lw52_fobs[lw52m]["5A"] === lw52_fexp[lw52k].iccid) { lw52mc++; }
1449 }
1450 if (lw52mc !== 1) { lw52_feok = false; }
1451 }
1452 bind.checkData("S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw52_feok ? "1" : "0");
1453
1454 // 步骤 53:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1455 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1456 var sdCla53 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1457 var s53 = bind.sendApdu(sdCla53, "E2", "91", "00", "BF280481020430", "00", "9000");
1458 bind.checkData("S53-C1 SW", "9000", s53.sw);
1459 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1460 var lw53T = BindEs10xSingleRequest.parseBerTlv(s53.resp);
1461 var lw53Ok0 = lw53T.length === 1 && lw53T[0].tag === "BF28";
1462 var lw53_br = lw53Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw53T[0].value) : [];
1463 var lw53_brtag = lw53_br.length === 1 ? lw53_br[0].tag : "";
1464 var lw53_els = lw53_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw53_br[0].value) : [];
1465 bind.checkData("S53-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw53_brtag === "A0" && lw53_els.length === 0) ? "1" : "0");
1466
1467 // 步骤 54:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1468 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1469 var sdCla54 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1470 var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", "BF280481020560", "00", "9000");
1471 bind.checkData("S54-C1 SW", "9000", s54.sw);
1472 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1473 var lw54T = BindEs10xSingleRequest.parseBerTlv(s54.resp);
1474 var lw54Ok0 = lw54T.length === 1 && lw54T[0].tag === "BF28";
1475 var lw54_br = lw54Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw54T[0].value) : [];
1476 var lw54_brtag = lw54_br.length === 1 ? lw54_br[0].tag : "";
1477 var lw54_els = lw54_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw54_br[0].value) : [];
1478 bind.checkData("S54-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw54_brtag === "A0" && lw54_els.length === 0) ? "1" : "0");
1479
1480 // 步骤 55:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1481 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1482 var sdCla55 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1483 var s55 = bind.sendApdu(sdCla55, "E2", "91", "00", "BF2804810205E0", "00", "9000");
1484 bind.checkData("S55-C1 SW", "9000", s55.sw);
1485 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1486 var lw55T = BindEs10xSingleRequest.parseBerTlv(s55.resp);
1487 var lw55Ok0 = lw55T.length === 1 && lw55T[0].tag === "BF28";
1488 var lw55_br = lw55Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw55T[0].value) : [];
1489 var lw55_brtag = lw55_br.length === 1 ? lw55_br[0].tag : "";
1490 var lw55_els = lw55_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw55_br[0].value) : [];
1491 bind.checkData("S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw55_brtag === "A0" && lw55_els.length === 2) ? "1" : "0");
1492 var lw55_feok = lw55_brtag === "A0" && lw55_els.length === 2;
1493 var lw55_fobs = [];
1494 for (var lw55i = 0; lw55i < lw55_els.length; lw55i++) {
1495 if (lw55_els[lw55i].tag !== "BF2F") { lw55_feok = false; continue; }
1496 var lw55M = BindEs10xSingleRequest.parseBerTlv(lw55_els[lw55i].value);
1497 var lw55_f = {};
1498 for (var lw55j = 0; lw55j < lw55M.length; lw55j++) {
1499 if (lw55_f[lw55M[lw55j].tag] === undefined) { lw55_f[lw55M[lw55j].tag] = lw55M[lw55j].value; }
1500 }
1501 if (lw55_f["80"] === undefined) { lw55_feok = false; }
1502 lw55_fobs.push(lw55_f);
1503 }
1504 var lw55_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1505 for (var lw55k = 0; lw55k < lw55_fexp.length; lw55k++) {
1506 var lw55mc = 0;
1507 for (var lw55m = 0; lw55m < lw55_fobs.length; lw55m++) {
1508 if (lw55_fobs[lw55m]["81"] === lw55_fexp[lw55k].op && lw55_fobs[lw55m]["0C"] === lw55_fexp[lw55k].addr && lw55_fobs[lw55m]["5A"] === lw55_fexp[lw55k].iccid) { lw55mc++; }
1509 }
1510 if (lw55mc !== 1) { lw55_feok = false; }
1511 }
1512 bind.checkData("S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw55_feok ? "1" : "0");
1513
1514 // 步骤 56:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
1515 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1516 var sdCla56 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1517 var s56 = bind.sendApdu(sdCla56, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1518 bind.checkData("S56-C1 SW", "9000", s56.sw);
1519 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1520 var lw56T = BindEs10xSingleRequest.parseBerTlv(s56.resp);
1521 var lw56Ok0 = lw56T.length === 1 && lw56T[0].tag === "BF28";
1522 var lw56_br = lw56Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw56T[0].value) : [];
1523 var lw56_brtag = lw56_br.length === 1 ? lw56_br[0].tag : "";
1524 var lw56_els = lw56_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw56_br[0].value) : [];
1525 bind.checkData("S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList branch/count", "1", (lw56_brtag === "A0" && lw56_els.length === 2) ? "1" : "0");
1526 var lw56_feok = lw56_brtag === "A0" && lw56_els.length === 2;
1527 var lw56_fobs = [];
1528 for (var lw56i = 0; lw56i < lw56_els.length; lw56i++) {
1529 if (lw56_els[lw56i].tag !== "BF2F") { lw56_feok = false; continue; }
1530 var lw56M = BindEs10xSingleRequest.parseBerTlv(lw56_els[lw56i].value);
1531 var lw56_f = {};
1532 for (var lw56j = 0; lw56j < lw56M.length; lw56j++) {
1533 if (lw56_f[lw56M[lw56j].tag] === undefined) { lw56_f[lw56M[lw56j].tag] = lw56M[lw56j].value; }
1534 }
1535 if (lw56_f["80"] === undefined) { lw56_feok = false; }
1536 lw56_fobs.push(lw56_f);
1537 }
1538 var lw56_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1539 for (var lw56k = 0; lw56k < lw56_fexp.length; lw56k++) {
1540 var lw56mc = 0;
1541 for (var lw56m = 0; lw56m < lw56_fobs.length; lw56m++) {
1542 if (lw56_fobs[lw56m]["81"] === lw56_fexp[lw56k].op && lw56_fobs[lw56m]["0C"] === lw56_fexp[lw56k].addr && lw56_fobs[lw56m]["5A"] === lw56_fexp[lw56k].iccid) { lw56mc++; }
1543 }
1544 if (lw56mc !== 1) { lw56_feok = false; }
1545 }
1546 bind.checkData("S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList element fields", "1", lw56_feok ? "1" : "0");
1547
1548 // 步骤 57:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
1549 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1550 var sdCla57 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1551 var s57 = bind.sendApdu(sdCla57, "E2", "91", "00", "BF2800", "00", "9000");
1552 bind.checkData("S57-C1 SW", "9000", s57.sw);
1553 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1554 var lw57T = BindEs10xSingleRequest.parseBerTlv(s57.resp);
1555 var lw57Ok0 = lw57T.length === 1 && lw57T[0].tag === "BF28";
1556 var lw57_br = lw57Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw57T[0].value) : [];
1557 var lw57_brtag = lw57_br.length === 1 ? lw57_br[0].tag : "";
1558 var lw57_els = lw57_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw57_br[0].value) : [];
1559 bind.checkData("S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count", "1", (lw57_brtag === "A0" && lw57_els.length === 2) ? "1" : "0");
1560 var lw57_feok = lw57_brtag === "A0" && lw57_els.length === 2;
1561 var lw57_fobs = [];
1562 for (var lw57i = 0; lw57i < lw57_els.length; lw57i++) {
1563 if (lw57_els[lw57i].tag !== "BF2F") { lw57_feok = false; continue; }
1564 var lw57M = BindEs10xSingleRequest.parseBerTlv(lw57_els[lw57i].value);
1565 var lw57_f = {};
1566 for (var lw57j = 0; lw57j < lw57M.length; lw57j++) {
1567 if (lw57_f[lw57M[lw57j].tag] === undefined) { lw57_f[lw57M[lw57j].tag] = lw57M[lw57j].value; }
1568 }
1569 if (lw57_f["80"] === undefined) { lw57_feok = false; }
1570 lw57_fobs.push(lw57_f);
1571 }
1572 var lw57_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1573 for (var lw57k = 0; lw57k < lw57_fexp.length; lw57k++) {
1574 var lw57mc = 0;
1575 for (var lw57m = 0; lw57m < lw57_fobs.length; lw57m++) {
1576 if (lw57_fobs[lw57m]["81"] === lw57_fexp[lw57k].op && lw57_fobs[lw57m]["0C"] === lw57_fexp[lw57k].addr && lw57_fobs[lw57m]["5A"] === lw57_fexp[lw57k].iccid) { lw57mc++; }
1577 }
1578 if (lw57mc !== 1) { lw57_feok = false; }
1579 }
1580 bind.checkData("S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields", "1", lw57_feok ? "1" : "0");
1581
1582 // 步骤 58:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1583 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1584 var sdCla58 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1585 var s58 = bind.sendApdu(sdCla58, "E2", "91", "00", "BF2803810100", "00", "9000");
1586 bind.checkData("S58-C1 SW", "9000", s58.sw);
1587 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1588 var lw58T = BindEs10xSingleRequest.parseBerTlv(s58.resp);
1589 var lw58Ok0 = lw58T.length === 1 && lw58T[0].tag === "BF28";
1590 var lw58_br = lw58Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw58T[0].value) : [];
1591 var lw58_brtag = lw58_br.length === 1 ? lw58_br[0].tag : "";
1592 var lw58_els = lw58_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw58_br[0].value) : [];
1593 bind.checkData("S58-C2 R-APDU 二选一 branch/count", "1", (lw58_brtag === "A0" && lw58_els.length === 0) || (lw58_brtag === "81" && lw58_br.length === 1 && lw58_br[0].value === "7F") ? "1" : "0");
1594
1595 // 步骤 59:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1596 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1597 var sdCla59 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1598 var s59 = bind.sendApdu(sdCla59, "E2", "91", "00", "BF280481020780", "00", "9000");
1599 bind.checkData("S59-C1 SW", "9000", s59.sw);
1600 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1601 var lw59T = BindEs10xSingleRequest.parseBerTlv(s59.resp);
1602 var lw59Ok0 = lw59T.length === 1 && lw59T[0].tag === "BF28";
1603 var lw59_br = lw59Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw59T[0].value) : [];
1604 var lw59_brtag = lw59_br.length === 1 ? lw59_br[0].tag : "";
1605 var lw59_els = lw59_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw59_br[0].value) : [];
1606 bind.checkData("S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含 branch/count", "1", (lw59_brtag === "A0" && lw59_els.length === 1) ? "1" : "0");
1607 var lw59_fok = lw59_brtag === "A0" && lw59_els.length > 0;
1608 for (var lw59i = 0; lw59i < lw59_els.length; lw59i++) {
1609 if (lw59_els[lw59i].tag !== "BF2F") { lw59_fok = false; continue; }
1610 var lw59M = BindEs10xSingleRequest.parseBerTlv(lw59_els[lw59i].value);
1611 var lw59_f = {};
1612 for (var lw59j = 0; lw59j < lw59M.length; lw59j++) {
1613 if (lw59_f[lw59M[lw59j].tag] === undefined) { lw59_f[lw59M[lw59j].tag] = lw59M[lw59j].value; }
1614 }
1615 if (lw59_f["80"] === undefined) { lw59_fok = false; }
1616 var lw59AddrHex = lw59_f["0C"];
1617 var lw59AddrStr = "";
1618 if (typeof lw59AddrHex === "string" && lw59AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw59AddrHex)) {
1619 for (var lw59AddrI = 0; lw59AddrI < lw59AddrHex.length; lw59AddrI += 2) {
1620 lw59AddrStr += String.fromCharCode(parseInt(lw59AddrHex.substr(lw59AddrI, 2), 16));
1621 }
1622 }
1623 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw59AddrStr)) { lw59_fok = false; }
1624 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1625 if (lw59_f["81"] !== "0780") { lw59_fok = false; } // operation
1626 if (lw59_f["5A"] !== "989209012143658709F5") { lw59_fok = false; } // iccid
1627 }
1628 bind.checkData("S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含 element fields", "1", lw59_fok ? "1" : "0");
1629
1630 // 步骤 60:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1631 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1632 var sdCla60 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1633 var s60 = bind.sendApdu(sdCla60, "E2", "91", "00", "BF280481020640", "00", "9000");
1634 bind.checkData("S60-C1 SW", "9000", s60.sw);
1635 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1636 var lw60T = BindEs10xSingleRequest.parseBerTlv(s60.resp);
1637 var lw60Ok0 = lw60T.length === 1 && lw60T[0].tag === "BF28";
1638 var lw60_br = lw60Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw60T[0].value) : [];
1639 var lw60_brtag = lw60_br.length === 1 ? lw60_br[0].tag : "";
1640 var lw60_els = lw60_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw60_br[0].value) : [];
1641 bind.checkData("S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw60_brtag === "A0" && lw60_els.length === 1) ? "1" : "0");
1642 var lw60_fok = lw60_brtag === "A0" && lw60_els.length > 0;
1643 for (var lw60i = 0; lw60i < lw60_els.length; lw60i++) {
1644 if (lw60_els[lw60i].tag !== "BF2F") { lw60_fok = false; continue; }
1645 var lw60M = BindEs10xSingleRequest.parseBerTlv(lw60_els[lw60i].value);
1646 var lw60_f = {};
1647 for (var lw60j = 0; lw60j < lw60M.length; lw60j++) {
1648 if (lw60_f[lw60M[lw60j].tag] === undefined) { lw60_f[lw60M[lw60j].tag] = lw60M[lw60j].value; }
1649 }
1650 if (lw60_f["80"] === undefined) { lw60_fok = false; }
1651 var lw60AddrHex = lw60_f["0C"];
1652 var lw60AddrStr = "";
1653 if (typeof lw60AddrHex === "string" && lw60AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw60AddrHex)) {
1654 for (var lw60AddrI = 0; lw60AddrI < lw60AddrHex.length; lw60AddrI += 2) {
1655 lw60AddrStr += String.fromCharCode(parseInt(lw60AddrHex.substr(lw60AddrI, 2), 16));
1656 }
1657 }
1658 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw60AddrStr)) { lw60_fok = false; }
1659 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1660 if (lw60_f["81"] !== "0640") { lw60_fok = false; } // operation
1661 if (lw60_f["5A"] !== "989209012143658709F5") { lw60_fok = false; } // iccid
1662 }
1663 bind.checkData("S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw60_fok ? "1" : "0");
1664
1665 // 步骤 61:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1666 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1667 var sdCla61 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1668 var s61 = bind.sendApdu(sdCla61, "E2", "91", "00", "BF280481020520", "00", "9000");
1669 bind.checkData("S61-C1 SW", "9000", s61.sw);
1670 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1671 var lw61T = BindEs10xSingleRequest.parseBerTlv(s61.resp);
1672 var lw61Ok0 = lw61T.length === 1 && lw61T[0].tag === "BF28";
1673 var lw61_br = lw61Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw61T[0].value) : [];
1674 var lw61_brtag = lw61_br.length === 1 ? lw61_br[0].tag : "";
1675 var lw61_els = lw61_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw61_br[0].value) : [];
1676 bind.checkData("S61-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw61_brtag === "A0" && lw61_els.length === 0) ? "1" : "0");
1677
1678 // 步骤 62:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1679 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1680 var sdCla62 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1681 var s62 = bind.sendApdu(sdCla62, "E2", "91", "00", "BF280481020410", "00", "9000");
1682 bind.checkData("S62-C1 SW", "9000", s62.sw);
1683 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1684 var lw62T = BindEs10xSingleRequest.parseBerTlv(s62.resp);
1685 var lw62Ok0 = lw62T.length === 1 && lw62T[0].tag === "BF28";
1686 var lw62_br = lw62Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw62T[0].value) : [];
1687 var lw62_brtag = lw62_br.length === 1 ? lw62_br[0].tag : "";
1688 var lw62_els = lw62_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw62_br[0].value) : [];
1689 bind.checkData("S62-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw62_brtag === "A0" && lw62_els.length === 0) ? "1" : "0");
1690
1691 // 步骤 63:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1692 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1693 var sdCla63 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1694 var s63 = bind.sendApdu(sdCla63, "E2", "91", "00", "BF2804810206C0", "00", "9000");
1695 bind.checkData("S63-C1 SW", "9000", s63.sw);
1696 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1697 var lw63T = BindEs10xSingleRequest.parseBerTlv(s63.resp);
1698 var lw63Ok0 = lw63T.length === 1 && lw63T[0].tag === "BF28";
1699 var lw63_br = lw63Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw63T[0].value) : [];
1700 var lw63_brtag = lw63_br.length === 1 ? lw63_br[0].tag : "";
1701 var lw63_els = lw63_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw63_br[0].value) : [];
1702 bind.checkData("S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count", "1", (lw63_brtag === "A0" && lw63_els.length === 2) ? "1" : "0");
1703 var lw63_feok = lw63_brtag === "A0" && lw63_els.length === 2;
1704 var lw63_fobs = [];
1705 for (var lw63i = 0; lw63i < lw63_els.length; lw63i++) {
1706 if (lw63_els[lw63i].tag !== "BF2F") { lw63_feok = false; continue; }
1707 var lw63M = BindEs10xSingleRequest.parseBerTlv(lw63_els[lw63i].value);
1708 var lw63_f = {};
1709 for (var lw63j = 0; lw63j < lw63M.length; lw63j++) {
1710 if (lw63_f[lw63M[lw63j].tag] === undefined) { lw63_f[lw63M[lw63j].tag] = lw63M[lw63j].value; }
1711 }
1712 if (lw63_f["80"] === undefined) { lw63_feok = false; }
1713 lw63_fobs.push(lw63_f);
1714 }
1715 var lw63_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1716 for (var lw63k = 0; lw63k < lw63_fexp.length; lw63k++) {
1717 var lw63mc = 0;
1718 for (var lw63m = 0; lw63m < lw63_fobs.length; lw63m++) {
1719 if (lw63_fobs[lw63m]["81"] === lw63_fexp[lw63k].op && lw63_fobs[lw63m]["0C"] === lw63_fexp[lw63k].addr && lw63_fobs[lw63m]["5A"] === lw63_fexp[lw63k].iccid) { lw63mc++; }
1720 }
1721 if (lw63mc !== 1) { lw63_feok = false; }
1722 }
1723 bind.checkData("S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields", "1", lw63_feok ? "1" : "0");
1724
1725 // 步骤 64:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1726 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1727 var sdCla64 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1728 var s64 = bind.sendApdu(sdCla64, "E2", "91", "00", "BF280481020430", "00", "9000");
1729 bind.checkData("S64-C1 SW", "9000", s64.sw);
1730 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1731 var lw64T = BindEs10xSingleRequest.parseBerTlv(s64.resp);
1732 var lw64Ok0 = lw64T.length === 1 && lw64T[0].tag === "BF28";
1733 var lw64_br = lw64Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw64T[0].value) : [];
1734 var lw64_brtag = lw64_br.length === 1 ? lw64_br[0].tag : "";
1735 var lw64_els = lw64_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw64_br[0].value) : [];
1736 bind.checkData("S64-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw64_brtag === "A0" && lw64_els.length === 0) ? "1" : "0");
1737
1738 // 步骤 65:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1739 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1740 var sdCla65 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1741 var s65 = bind.sendApdu(sdCla65, "E2", "91", "00", "BF280481020560", "00", "9000");
1742 bind.checkData("S65-C1 SW", "9000", s65.sw);
1743 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1744 var lw65T = BindEs10xSingleRequest.parseBerTlv(s65.resp);
1745 var lw65Ok0 = lw65T.length === 1 && lw65T[0].tag === "BF28";
1746 var lw65_br = lw65Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw65T[0].value) : [];
1747 var lw65_brtag = lw65_br.length === 1 ? lw65_br[0].tag : "";
1748 var lw65_els = lw65_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw65_br[0].value) : [];
1749 bind.checkData("S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw65_brtag === "A0" && lw65_els.length === 1) ? "1" : "0");
1750 var lw65_fok = lw65_brtag === "A0" && lw65_els.length > 0;
1751 for (var lw65i = 0; lw65i < lw65_els.length; lw65i++) {
1752 if (lw65_els[lw65i].tag !== "BF2F") { lw65_fok = false; continue; }
1753 var lw65M = BindEs10xSingleRequest.parseBerTlv(lw65_els[lw65i].value);
1754 var lw65_f = {};
1755 for (var lw65j = 0; lw65j < lw65M.length; lw65j++) {
1756 if (lw65_f[lw65M[lw65j].tag] === undefined) { lw65_f[lw65M[lw65j].tag] = lw65M[lw65j].value; }
1757 }
1758 if (lw65_f["80"] === undefined) { lw65_fok = false; }
1759 var lw65AddrHex = lw65_f["0C"];
1760 var lw65AddrStr = "";
1761 if (typeof lw65AddrHex === "string" && lw65AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw65AddrHex)) {
1762 for (var lw65AddrI = 0; lw65AddrI < lw65AddrHex.length; lw65AddrI += 2) {
1763 lw65AddrStr += String.fromCharCode(parseInt(lw65AddrHex.substr(lw65AddrI, 2), 16));
1764 }
1765 }
1766 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw65AddrStr)) { lw65_fok = false; }
1767 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1768 if (lw65_f["81"] !== "0640") { lw65_fok = false; } // operation
1769 if (lw65_f["5A"] !== "989209012143658709F5") { lw65_fok = false; } // iccid
1770 }
1771 bind.checkData("S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw65_fok ? "1" : "0");
1772
1773 // 步骤 66:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1774 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1775 var sdCla66 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1776 var s66 = bind.sendApdu(sdCla66, "E2", "91", "00", "BF2804810205E0", "00", "9000");
1777 bind.checkData("S66-C1 SW", "9000", s66.sw);
1778 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1779 var lw66T = BindEs10xSingleRequest.parseBerTlv(s66.resp);
1780 var lw66Ok0 = lw66T.length === 1 && lw66T[0].tag === "BF28";
1781 var lw66_br = lw66Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw66T[0].value) : [];
1782 var lw66_brtag = lw66_br.length === 1 ? lw66_br[0].tag : "";
1783 var lw66_els = lw66_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw66_br[0].value) : [];
1784 bind.checkData("S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count", "1", (lw66_brtag === "A0" && lw66_els.length === 2) ? "1" : "0");
1785 var lw66_feok = lw66_brtag === "A0" && lw66_els.length === 2;
1786 var lw66_fobs = [];
1787 for (var lw66i = 0; lw66i < lw66_els.length; lw66i++) {
1788 if (lw66_els[lw66i].tag !== "BF2F") { lw66_feok = false; continue; }
1789 var lw66M = BindEs10xSingleRequest.parseBerTlv(lw66_els[lw66i].value);
1790 var lw66_f = {};
1791 for (var lw66j = 0; lw66j < lw66M.length; lw66j++) {
1792 if (lw66_f[lw66M[lw66j].tag] === undefined) { lw66_f[lw66M[lw66j].tag] = lw66M[lw66j].value; }
1793 }
1794 if (lw66_f["80"] === undefined) { lw66_feok = false; }
1795 lw66_fobs.push(lw66_f);
1796 }
1797 var lw66_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1798 for (var lw66k = 0; lw66k < lw66_fexp.length; lw66k++) {
1799 var lw66mc = 0;
1800 for (var lw66m = 0; lw66m < lw66_fobs.length; lw66m++) {
1801 if (lw66_fobs[lw66m]["81"] === lw66_fexp[lw66k].op && lw66_fobs[lw66m]["0C"] === lw66_fexp[lw66k].addr && lw66_fobs[lw66m]["5A"] === lw66_fexp[lw66k].iccid) { lw66mc++; }
1802 }
1803 if (lw66mc !== 1) { lw66_feok = false; }
1804 }
1805 bind.checkData("S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields", "1", lw66_feok ? "1" : "0");
1806
1807 // 步骤 67:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
1808 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1809 var sdCla67 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1810 var s67 = bind.sendApdu(sdCla67, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1811 bind.checkData("S67-C1 SW", "9000", s67.sw);
1812 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1813 var lw67T = BindEs10xSingleRequest.parseBerTlv(s67.resp);
1814 var lw67Ok0 = lw67T.length === 1 && lw67T[0].tag === "BF28";
1815 var lw67_br = lw67Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw67T[0].value) : [];
1816 var lw67_brtag = lw67_br.length === 1 ? lw67_br[0].tag : "";
1817 var lw67_els = lw67_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw67_br[0].value) : [];
1818 bind.checkData("S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含 branch/count", "1", (lw67_brtag === "A0" && lw67_els.length === 2) ? "1" : "0");
1819 var lw67_feok = lw67_brtag === "A0" && lw67_els.length === 2;
1820 var lw67_fobs = [];
1821 for (var lw67i = 0; lw67i < lw67_els.length; lw67i++) {
1822 if (lw67_els[lw67i].tag !== "BF2F") { lw67_feok = false; continue; }
1823 var lw67M = BindEs10xSingleRequest.parseBerTlv(lw67_els[lw67i].value);
1824 var lw67_f = {};
1825 for (var lw67j = 0; lw67j < lw67M.length; lw67j++) {
1826 if (lw67_f[lw67M[lw67j].tag] === undefined) { lw67_f[lw67M[lw67j].tag] = lw67M[lw67j].value; }
1827 }
1828 if (lw67_f["80"] === undefined) { lw67_feok = false; }
1829 lw67_fobs.push(lw67_f);
1830 }
1831 var lw67_fexp = [{op: "0410", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0520", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1832 for (var lw67k = 0; lw67k < lw67_fexp.length; lw67k++) {
1833 var lw67mc = 0;
1834 for (var lw67m = 0; lw67m < lw67_fobs.length; lw67m++) {
1835 if (lw67_fobs[lw67m]["81"] === lw67_fexp[lw67k].op && lw67_fobs[lw67m]["0C"] === lw67_fexp[lw67k].addr && lw67_fobs[lw67m]["5A"] === lw67_fexp[lw67k].iccid) { lw67mc++; }
1836 }
1837 if (lw67mc !== 1) { lw67_feok = false; }
1838 }
1839 bind.checkData("S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含 element fields", "1", lw67_feok ? "1" : "0");
1840
1841 // 步骤 68:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
1842 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1843 var sdCla68 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1844 var s68 = bind.sendApdu(sdCla68, "E2", "91", "00", "BF2800", "00", "9000");
1845 bind.checkData("S68-C1 SW", "9000", s68.sw);
1846 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1847 var lw68T = BindEs10xSingleRequest.parseBerTlv(s68.resp);
1848 var lw68Ok0 = lw68T.length === 1 && lw68T[0].tag === "BF28";
1849 var lw68_br = lw68Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw68T[0].value) : [];
1850 var lw68_brtag = lw68_br.length === 1 ? lw68_br[0].tag : "";
1851 var lw68_els = lw68_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw68_br[0].value) : [];
1852 bind.checkData("S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw68_brtag === "A0" && lw68_els.length === 2) ? "1" : "0");
1853 var lw68_feok = lw68_brtag === "A0" && lw68_els.length === 2;
1854 var lw68_fobs = [];
1855 for (var lw68i = 0; lw68i < lw68_els.length; lw68i++) {
1856 if (lw68_els[lw68i].tag !== "BF2F") { lw68_feok = false; continue; }
1857 var lw68M = BindEs10xSingleRequest.parseBerTlv(lw68_els[lw68i].value);
1858 var lw68_f = {};
1859 for (var lw68j = 0; lw68j < lw68M.length; lw68j++) {
1860 if (lw68_f[lw68M[lw68j].tag] === undefined) { lw68_f[lw68M[lw68j].tag] = lw68M[lw68j].value; }
1861 }
1862 if (lw68_f["80"] === undefined) { lw68_feok = false; }
1863 lw68_fobs.push(lw68_f);
1864 }
1865 var lw68_fexp = [{op: "0410", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0520", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1866 for (var lw68k = 0; lw68k < lw68_fexp.length; lw68k++) {
1867 var lw68mc = 0;
1868 for (var lw68m = 0; lw68m < lw68_fobs.length; lw68m++) {
1869 if (lw68_fobs[lw68m]["81"] === lw68_fexp[lw68k].op && lw68_fobs[lw68m]["0C"] === lw68_fexp[lw68k].addr && lw68_fobs[lw68m]["5A"] === lw68_fexp[lw68k].iccid) { lw68mc++; }
1870 }
1871 if (lw68mc !== 1) { lw68_feok = false; }
1872 }
1873 bind.checkData("S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw68_feok ? "1" : "0");
1874
1875 // 步骤 69:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1876 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1877 var sdCla69 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1878 var s69 = bind.sendApdu(sdCla69, "E2", "91", "00", "BF2803810100", "00", "9000");
1879 bind.checkData("S69-C1 SW", "9000", s69.sw);
1880 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1881 var lw69T = BindEs10xSingleRequest.parseBerTlv(s69.resp);
1882 var lw69Ok0 = lw69T.length === 1 && lw69T[0].tag === "BF28";
1883 var lw69_br = lw69Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw69T[0].value) : [];
1884 var lw69_brtag = lw69_br.length === 1 ? lw69_br[0].tag : "";
1885 var lw69_els = lw69_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw69_br[0].value) : [];
1886 bind.checkData("S69-C2 R-APDU 二选一 branch/count", "1", (lw69_brtag === "A0" && lw69_els.length === 0) || (lw69_brtag === "81" && lw69_br.length === 1 && lw69_br[0].value === "7F") ? "1" : "0");
1887
1888 // 步骤 70:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1889 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1890 var sdCla70 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1891 var s70 = bind.sendApdu(sdCla70, "E2", "91", "00", "BF280481020780", "00", "9000");
1892 bind.checkData("S70-C1 SW", "9000", s70.sw);
1893 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1894 var lw70T = BindEs10xSingleRequest.parseBerTlv(s70.resp);
1895 var lw70Ok0 = lw70T.length === 1 && lw70T[0].tag === "BF28";
1896 var lw70_br = lw70Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw70T[0].value) : [];
1897 var lw70_brtag = lw70_br.length === 1 ? lw70_br[0].tag : "";
1898 var lw70_els = lw70_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw70_br[0].value) : [];
1899 bind.checkData("S70-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw70_brtag === "A0" && lw70_els.length === 0) ? "1" : "0");
1900
1901 // 步骤 71:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1902 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1903 var sdCla71 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1904 var s71 = bind.sendApdu(sdCla71, "E2", "91", "00", "BF280481020640", "00", "9000");
1905 bind.checkData("S71-C1 SW", "9000", s71.sw);
1906 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1907 var lw71T = BindEs10xSingleRequest.parseBerTlv(s71.resp);
1908 var lw71Ok0 = lw71T.length === 1 && lw71T[0].tag === "BF28";
1909 var lw71_br = lw71Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw71T[0].value) : [];
1910 var lw71_brtag = lw71_br.length === 1 ? lw71_br[0].tag : "";
1911 var lw71_els = lw71_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw71_br[0].value) : [];
1912 bind.checkData("S71-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw71_brtag === "A0" && lw71_els.length === 0) ? "1" : "0");
1913
1914 // 步骤 72:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1915 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1916 var sdCla72 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1917 var s72 = bind.sendApdu(sdCla72, "E2", "91", "00", "BF280481020520", "00", "9000");
1918 bind.checkData("S72-C1 SW", "9000", s72.sw);
1919 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1920 var lw72T = BindEs10xSingleRequest.parseBerTlv(s72.resp);
1921 var lw72Ok0 = lw72T.length === 1 && lw72T[0].tag === "BF28";
1922 var lw72_br = lw72Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw72T[0].value) : [];
1923 var lw72_brtag = lw72_br.length === 1 ? lw72_br[0].tag : "";
1924 var lw72_els = lw72_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw72_br[0].value) : [];
1925 bind.checkData("S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw72_brtag === "A0" && lw72_els.length === 1) ? "1" : "0");
1926 var lw72_fok = lw72_brtag === "A0" && lw72_els.length > 0;
1927 for (var lw72i = 0; lw72i < lw72_els.length; lw72i++) {
1928 if (lw72_els[lw72i].tag !== "BF2F") { lw72_fok = false; continue; }
1929 var lw72M = BindEs10xSingleRequest.parseBerTlv(lw72_els[lw72i].value);
1930 var lw72_f = {};
1931 for (var lw72j = 0; lw72j < lw72M.length; lw72j++) {
1932 if (lw72_f[lw72M[lw72j].tag] === undefined) { lw72_f[lw72M[lw72j].tag] = lw72M[lw72j].value; }
1933 }
1934 if (lw72_f["80"] === undefined) { lw72_fok = false; }
1935 var lw72AddrHex = lw72_f["0C"];
1936 var lw72AddrStr = "";
1937 if (typeof lw72AddrHex === "string" && lw72AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw72AddrHex)) {
1938 for (var lw72AddrI = 0; lw72AddrI < lw72AddrHex.length; lw72AddrI += 2) {
1939 lw72AddrStr += String.fromCharCode(parseInt(lw72AddrHex.substr(lw72AddrI, 2), 16));
1940 }
1941 }
1942 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw72AddrStr)) { lw72_fok = false; }
1943 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1944 if (lw72_f["81"] !== "0520") { lw72_fok = false; } // operation
1945 if (lw72_f["5A"] !== "989209012143658709F5") { lw72_fok = false; } // iccid
1946 }
1947 bind.checkData("S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw72_fok ? "1" : "0");
1948
1949 // 步骤 73:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1950 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1951 var sdCla73 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1952 var s73 = bind.sendApdu(sdCla73, "E2", "91", "00", "BF280481020410", "00", "9000");
1953 bind.checkData("S73-C1 SW", "9000", s73.sw);
1954 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1955 var lw73T = BindEs10xSingleRequest.parseBerTlv(s73.resp);
1956 var lw73Ok0 = lw73T.length === 1 && lw73T[0].tag === "BF28";
1957 var lw73_br = lw73Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw73T[0].value) : [];
1958 var lw73_brtag = lw73_br.length === 1 ? lw73_br[0].tag : "";
1959 var lw73_els = lw73_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw73_br[0].value) : [];
1960 bind.checkData("S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw73_brtag === "A0" && lw73_els.length === 1) ? "1" : "0");
1961 var lw73_fok = lw73_brtag === "A0" && lw73_els.length > 0;
1962 for (var lw73i = 0; lw73i < lw73_els.length; lw73i++) {
1963 if (lw73_els[lw73i].tag !== "BF2F") { lw73_fok = false; continue; }
1964 var lw73M = BindEs10xSingleRequest.parseBerTlv(lw73_els[lw73i].value);
1965 var lw73_f = {};
1966 for (var lw73j = 0; lw73j < lw73M.length; lw73j++) {
1967 if (lw73_f[lw73M[lw73j].tag] === undefined) { lw73_f[lw73M[lw73j].tag] = lw73M[lw73j].value; }
1968 }
1969 if (lw73_f["80"] === undefined) { lw73_fok = false; }
1970 var lw73AddrHex = lw73_f["0C"];
1971 var lw73AddrStr = "";
1972 if (typeof lw73AddrHex === "string" && lw73AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw73AddrHex)) {
1973 for (var lw73AddrI = 0; lw73AddrI < lw73AddrHex.length; lw73AddrI += 2) {
1974 lw73AddrStr += String.fromCharCode(parseInt(lw73AddrHex.substr(lw73AddrI, 2), 16));
1975 }
1976 }
1977 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw73AddrStr)) { lw73_fok = false; }
1978 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1979 if (lw73_f["81"] !== "0410") { lw73_fok = false; } // operation
1980 if (lw73_f["5A"] !== "989209012143658709F5") { lw73_fok = false; } // iccid
1981 }
1982 bind.checkData("S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw73_fok ? "1" : "0");
1983
1984 // 步骤 74:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1985 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1986 var sdCla74 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1987 var s74 = bind.sendApdu(sdCla74, "E2", "91", "00", "BF2804810206C0", "00", "9000");
1988 bind.checkData("S74-C1 SW", "9000", s74.sw);
1989 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1990 var lw74T = BindEs10xSingleRequest.parseBerTlv(s74.resp);
1991 var lw74Ok0 = lw74T.length === 1 && lw74T[0].tag === "BF28";
1992 var lw74_br = lw74Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw74T[0].value) : [];
1993 var lw74_brtag = lw74_br.length === 1 ? lw74_br[0].tag : "";
1994 var lw74_els = lw74_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw74_br[0].value) : [];
1995 bind.checkData("S74-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw74_brtag === "A0" && lw74_els.length === 0) ? "1" : "0");
1996
1997 // 步骤 75:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1998 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1999 var sdCla75 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2000 var s75 = bind.sendApdu(sdCla75, "E2", "91", "00", "BF280481020430", "00", "9000");
2001 bind.checkData("S75-C1 SW", "9000", s75.sw);
2002 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2003 var lw75T = BindEs10xSingleRequest.parseBerTlv(s75.resp);
2004 var lw75Ok0 = lw75T.length === 1 && lw75T[0].tag === "BF28";
2005 var lw75_br = lw75Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw75T[0].value) : [];
2006 var lw75_brtag = lw75_br.length === 1 ? lw75_br[0].tag : "";
2007 var lw75_els = lw75_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw75_br[0].value) : [];
2008 bind.checkData("S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw75_brtag === "A0" && lw75_els.length === 2) ? "1" : "0");
2009 var lw75_feok = lw75_brtag === "A0" && lw75_els.length === 2;
2010 var lw75_fobs = [];
2011 for (var lw75i = 0; lw75i < lw75_els.length; lw75i++) {
2012 if (lw75_els[lw75i].tag !== "BF2F") { lw75_feok = false; continue; }
2013 var lw75M = BindEs10xSingleRequest.parseBerTlv(lw75_els[lw75i].value);
2014 var lw75_f = {};
2015 for (var lw75j = 0; lw75j < lw75M.length; lw75j++) {
2016 if (lw75_f[lw75M[lw75j].tag] === undefined) { lw75_f[lw75M[lw75j].tag] = lw75M[lw75j].value; }
2017 }
2018 if (lw75_f["80"] === undefined) { lw75_feok = false; }
2019 lw75_fobs.push(lw75_f);
2020 }
2021 var lw75_fexp = [{op: "0410", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0520", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2022 for (var lw75k = 0; lw75k < lw75_fexp.length; lw75k++) {
2023 var lw75mc = 0;
2024 for (var lw75m = 0; lw75m < lw75_fobs.length; lw75m++) {
2025 if (lw75_fobs[lw75m]["81"] === lw75_fexp[lw75k].op && lw75_fobs[lw75m]["0C"] === lw75_fexp[lw75k].addr && lw75_fobs[lw75m]["5A"] === lw75_fexp[lw75k].iccid) { lw75mc++; }
2026 }
2027 if (lw75mc !== 1) { lw75_feok = false; }
2028 }
2029 bind.checkData("S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw75_feok ? "1" : "0");
2030
2031 // 步骤 76:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2032 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2033 var sdCla76 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2034 var s76 = bind.sendApdu(sdCla76, "E2", "91", "00", "BF280481020560", "00", "9000");
2035 bind.checkData("S76-C1 SW", "9000", s76.sw);
2036 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2037 var lw76T = BindEs10xSingleRequest.parseBerTlv(s76.resp);
2038 var lw76Ok0 = lw76T.length === 1 && lw76T[0].tag === "BF28";
2039 var lw76_br = lw76Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw76T[0].value) : [];
2040 var lw76_brtag = lw76_br.length === 1 ? lw76_br[0].tag : "";
2041 var lw76_els = lw76_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw76_br[0].value) : [];
2042 bind.checkData("S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw76_brtag === "A0" && lw76_els.length === 1) ? "1" : "0");
2043 var lw76_fok = lw76_brtag === "A0" && lw76_els.length > 0;
2044 for (var lw76i = 0; lw76i < lw76_els.length; lw76i++) {
2045 if (lw76_els[lw76i].tag !== "BF2F") { lw76_fok = false; continue; }
2046 var lw76M = BindEs10xSingleRequest.parseBerTlv(lw76_els[lw76i].value);
2047 var lw76_f = {};
2048 for (var lw76j = 0; lw76j < lw76M.length; lw76j++) {
2049 if (lw76_f[lw76M[lw76j].tag] === undefined) { lw76_f[lw76M[lw76j].tag] = lw76M[lw76j].value; }
2050 }
2051 if (lw76_f["80"] === undefined) { lw76_fok = false; }
2052 var lw76AddrHex = lw76_f["0C"];
2053 var lw76AddrStr = "";
2054 if (typeof lw76AddrHex === "string" && lw76AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw76AddrHex)) {
2055 for (var lw76AddrI = 0; lw76AddrI < lw76AddrHex.length; lw76AddrI += 2) {
2056 lw76AddrStr += String.fromCharCode(parseInt(lw76AddrHex.substr(lw76AddrI, 2), 16));
2057 }
2058 }
2059 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw76AddrStr)) { lw76_fok = false; }
2060 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2061 if (lw76_f["81"] !== "0520") { lw76_fok = false; } // operation
2062 if (lw76_f["5A"] !== "989209012143658709F5") { lw76_fok = false; } // iccid
2063 }
2064 bind.checkData("S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw76_fok ? "1" : "0");
2065
2066 // 步骤 77:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2067 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2068 var sdCla77 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2069 var s77 = bind.sendApdu(sdCla77, "E2", "91", "00", "BF2804810205E0", "00", "9000");
2070 bind.checkData("S77-C1 SW", "9000", s77.sw);
2071 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2072 var lw77T = BindEs10xSingleRequest.parseBerTlv(s77.resp);
2073 var lw77Ok0 = lw77T.length === 1 && lw77T[0].tag === "BF28";
2074 var lw77_br = lw77Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw77T[0].value) : [];
2075 var lw77_brtag = lw77_br.length === 1 ? lw77_br[0].tag : "";
2076 var lw77_els = lw77_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw77_br[0].value) : [];
2077 bind.checkData("S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw77_brtag === "A0" && lw77_els.length === 1) ? "1" : "0");
2078 var lw77_fok = lw77_brtag === "A0" && lw77_els.length > 0;
2079 for (var lw77i = 0; lw77i < lw77_els.length; lw77i++) {
2080 if (lw77_els[lw77i].tag !== "BF2F") { lw77_fok = false; continue; }
2081 var lw77M = BindEs10xSingleRequest.parseBerTlv(lw77_els[lw77i].value);
2082 var lw77_f = {};
2083 for (var lw77j = 0; lw77j < lw77M.length; lw77j++) {
2084 if (lw77_f[lw77M[lw77j].tag] === undefined) { lw77_f[lw77M[lw77j].tag] = lw77M[lw77j].value; }
2085 }
2086 if (lw77_f["80"] === undefined) { lw77_fok = false; }
2087 var lw77AddrHex = lw77_f["0C"];
2088 var lw77AddrStr = "";
2089 if (typeof lw77AddrHex === "string" && lw77AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw77AddrHex)) {
2090 for (var lw77AddrI = 0; lw77AddrI < lw77AddrHex.length; lw77AddrI += 2) {
2091 lw77AddrStr += String.fromCharCode(parseInt(lw77AddrHex.substr(lw77AddrI, 2), 16));
2092 }
2093 }
2094 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw77AddrStr)) { lw77_fok = false; }
2095 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2096 if (lw77_f["81"] !== "0520") { lw77_fok = false; } // operation
2097 if (lw77_f["5A"] !== "989209012143658709F5") { lw77_fok = false; } // iccid
2098 }
2099 bind.checkData("S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw77_fok ? "1" : "0");
2100
2101 // 步骤 78:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
2102 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2103 var sdCla78 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2104 var s78 = bind.sendApdu(sdCla78, "E2", "91", "00", "BF2804810204F0", "00", "9000");
2105 bind.checkData("S78-C1 SW", "9000", s78.sw);
2106 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2107 var lw78T = BindEs10xSingleRequest.parseBerTlv(s78.resp);
2108 var lw78Ok0 = lw78T.length === 1 && lw78T[0].tag === "BF28";
2109 var lw78_br = lw78Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw78T[0].value) : [];
2110 var lw78_brtag = lw78_br.length === 1 ? lw78_br[0].tag : "";
2111 var lw78_els = lw78_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw78_br[0].value) : [];
2112 bind.checkData("S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含 branch/count", "1", (lw78_brtag === "A0" && lw78_els.length === 2) ? "1" : "0");
2113 var lw78_feok = lw78_brtag === "A0" && lw78_els.length === 2;
2114 var lw78_fobs = [];
2115 for (var lw78i = 0; lw78i < lw78_els.length; lw78i++) {
2116 if (lw78_els[lw78i].tag !== "BF2F") { lw78_feok = false; continue; }
2117 var lw78M = BindEs10xSingleRequest.parseBerTlv(lw78_els[lw78i].value);
2118 var lw78_f = {};
2119 for (var lw78j = 0; lw78j < lw78M.length; lw78j++) {
2120 if (lw78_f[lw78M[lw78j].tag] === undefined) { lw78_f[lw78M[lw78j].tag] = lw78M[lw78j].value; }
2121 }
2122 if (lw78_f["80"] === undefined) { lw78_feok = false; }
2123 lw78_fobs.push(lw78_f);
2124 }
2125 var lw78_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2126 for (var lw78k = 0; lw78k < lw78_fexp.length; lw78k++) {
2127 var lw78mc = 0;
2128 for (var lw78m = 0; lw78m < lw78_fobs.length; lw78m++) {
2129 if (lw78_fobs[lw78m]["81"] === lw78_fexp[lw78k].op && lw78_fobs[lw78m]["0C"] === lw78_fexp[lw78k].addr && lw78_fobs[lw78m]["5A"] === lw78_fexp[lw78k].iccid) { lw78mc++; }
2130 }
2131 if (lw78mc !== 1) { lw78_feok = false; }
2132 }
2133 bind.checkData("S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含 element fields", "1", lw78_feok ? "1" : "0");
2134
2135 // 步骤 79:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
2136 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2137 var sdCla79 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2138 var s79 = bind.sendApdu(sdCla79, "E2", "91", "00", "BF2800", "00", "9000");
2139 bind.checkData("S79-C1 SW", "9000", s79.sw);
2140 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2141 var lw79T = BindEs10xSingleRequest.parseBerTlv(s79.resp);
2142 var lw79Ok0 = lw79T.length === 1 && lw79T[0].tag === "BF28";
2143 var lw79_br = lw79Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw79T[0].value) : [];
2144 var lw79_brtag = lw79_br.length === 1 ? lw79_br[0].tag : "";
2145 var lw79_els = lw79_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw79_br[0].value) : [];
2146 bind.checkData("S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 branch/count", "1", (lw79_brtag === "A0" && lw79_els.length === 2) ? "1" : "0");
2147 var lw79_feok = lw79_brtag === "A0" && lw79_els.length === 2;
2148 var lw79_fobs = [];
2149 for (var lw79i = 0; lw79i < lw79_els.length; lw79i++) {
2150 if (lw79_els[lw79i].tag !== "BF2F") { lw79_feok = false; continue; }
2151 var lw79M = BindEs10xSingleRequest.parseBerTlv(lw79_els[lw79i].value);
2152 var lw79_f = {};
2153 for (var lw79j = 0; lw79j < lw79M.length; lw79j++) {
2154 if (lw79_f[lw79M[lw79j].tag] === undefined) { lw79_f[lw79M[lw79j].tag] = lw79M[lw79j].value; }
2155 }
2156 if (lw79_f["80"] === undefined) { lw79_feok = false; }
2157 lw79_fobs.push(lw79_f);
2158 }
2159 var lw79_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2160 for (var lw79k = 0; lw79k < lw79_fexp.length; lw79k++) {
2161 var lw79mc = 0;
2162 for (var lw79m = 0; lw79m < lw79_fobs.length; lw79m++) {
2163 if (lw79_fobs[lw79m]["81"] === lw79_fexp[lw79k].op && lw79_fobs[lw79m]["0C"] === lw79_fexp[lw79k].addr && lw79_fobs[lw79m]["5A"] === lw79_fexp[lw79k].iccid) { lw79mc++; }
2164 }
2165 if (lw79mc !== 1) { lw79_feok = false; }
2166 }
2167 bind.checkData("S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 element fields", "1", lw79_feok ? "1" : "0");
2168
2169 // 步骤 80:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2170 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2171 var sdCla80 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2172 var s80 = bind.sendApdu(sdCla80, "E2", "91", "00", "BF2803810100", "00", "9000");
2173 bind.checkData("S80-C1 SW", "9000", s80.sw);
2174 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2175 var lw80T = BindEs10xSingleRequest.parseBerTlv(s80.resp);
2176 var lw80Ok0 = lw80T.length === 1 && lw80T[0].tag === "BF28";
2177 var lw80_br = lw80Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw80T[0].value) : [];
2178 var lw80_brtag = lw80_br.length === 1 ? lw80_br[0].tag : "";
2179 var lw80_els = lw80_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw80_br[0].value) : [];
2180 bind.checkData("S80-C2 R-APDU 二选一 branch/count", "1", (lw80_brtag === "A0" && lw80_els.length === 0) || (lw80_brtag === "81" && lw80_br.length === 1 && lw80_br[0].value === "7F") ? "1" : "0");
2181
2182 // 步骤 81:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2183 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2184 var sdCla81 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2185 var s81 = bind.sendApdu(sdCla81, "E2", "91", "00", "BF280481020780", "00", "9000");
2186 bind.checkData("S81-C1 SW", "9000", s81.sw);
2187 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2188 var lw81T = BindEs10xSingleRequest.parseBerTlv(s81.resp);
2189 var lw81Ok0 = lw81T.length === 1 && lw81T[0].tag === "BF28";
2190 var lw81_br = lw81Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw81T[0].value) : [];
2191 var lw81_brtag = lw81_br.length === 1 ? lw81_br[0].tag : "";
2192 var lw81_els = lw81_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw81_br[0].value) : [];
2193 bind.checkData("S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw81_brtag === "A0" && lw81_els.length === 1) ? "1" : "0");
2194 var lw81_fok = lw81_brtag === "A0" && lw81_els.length > 0;
2195 for (var lw81i = 0; lw81i < lw81_els.length; lw81i++) {
2196 if (lw81_els[lw81i].tag !== "BF2F") { lw81_fok = false; continue; }
2197 var lw81M = BindEs10xSingleRequest.parseBerTlv(lw81_els[lw81i].value);
2198 var lw81_f = {};
2199 for (var lw81j = 0; lw81j < lw81M.length; lw81j++) {
2200 if (lw81_f[lw81M[lw81j].tag] === undefined) { lw81_f[lw81M[lw81j].tag] = lw81M[lw81j].value; }
2201 }
2202 if (lw81_f["80"] === undefined) { lw81_fok = false; }
2203 var lw81AddrHex = lw81_f["0C"];
2204 var lw81AddrStr = "";
2205 if (typeof lw81AddrHex === "string" && lw81AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw81AddrHex)) {
2206 for (var lw81AddrI = 0; lw81AddrI < lw81AddrHex.length; lw81AddrI += 2) {
2207 lw81AddrStr += String.fromCharCode(parseInt(lw81AddrHex.substr(lw81AddrI, 2), 16));
2208 }
2209 }
2210 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw81AddrStr)) { lw81_fok = false; }
2211 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2212 if (lw81_f["81"] !== "0780") { lw81_fok = false; } // operation
2213 if (lw81_f["5A"] !== "989209012143658709F5") { lw81_fok = false; } // iccid
2214 }
2215 bind.checkData("S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT element fields", "1", lw81_fok ? "1" : "0");
2216
2217 // 步骤 82:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2218 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2219 var sdCla82 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2220 var s82 = bind.sendApdu(sdCla82, "E2", "91", "00", "BF280481020640", "00", "9000");
2221 bind.checkData("S82-C1 SW", "9000", s82.sw);
2222 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2223 var lw82T = BindEs10xSingleRequest.parseBerTlv(s82.resp);
2224 var lw82Ok0 = lw82T.length === 1 && lw82T[0].tag === "BF28";
2225 var lw82_br = lw82Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw82T[0].value) : [];
2226 var lw82_brtag = lw82_br.length === 1 ? lw82_br[0].tag : "";
2227 var lw82_els = lw82_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw82_br[0].value) : [];
2228 bind.checkData("S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw82_brtag === "A0" && lw82_els.length === 1) ? "1" : "0");
2229 var lw82_fok = lw82_brtag === "A0" && lw82_els.length > 0;
2230 for (var lw82i = 0; lw82i < lw82_els.length; lw82i++) {
2231 if (lw82_els[lw82i].tag !== "BF2F") { lw82_fok = false; continue; }
2232 var lw82M = BindEs10xSingleRequest.parseBerTlv(lw82_els[lw82i].value);
2233 var lw82_f = {};
2234 for (var lw82j = 0; lw82j < lw82M.length; lw82j++) {
2235 if (lw82_f[lw82M[lw82j].tag] === undefined) { lw82_f[lw82M[lw82j].tag] = lw82M[lw82j].value; }
2236 }
2237 if (lw82_f["80"] === undefined) { lw82_fok = false; }
2238 var lw82AddrHex = lw82_f["0C"];
2239 var lw82AddrStr = "";
2240 if (typeof lw82AddrHex === "string" && lw82AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw82AddrHex)) {
2241 for (var lw82AddrI = 0; lw82AddrI < lw82AddrHex.length; lw82AddrI += 2) {
2242 lw82AddrStr += String.fromCharCode(parseInt(lw82AddrHex.substr(lw82AddrI, 2), 16));
2243 }
2244 }
2245 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw82AddrStr)) { lw82_fok = false; }
2246 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2247 if (lw82_f["81"] !== "0640") { lw82_fok = false; } // operation
2248 if (lw82_f["5A"] !== "989209012143658709F5") { lw82_fok = false; } // iccid
2249 }
2250 bind.checkData("S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw82_fok ? "1" : "0");
2251
2252 // 步骤 83:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2253 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2254 var sdCla83 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2255 var s83 = bind.sendApdu(sdCla83, "E2", "91", "00", "BF280481020520", "00", "9000");
2256 bind.checkData("S83-C1 SW", "9000", s83.sw);
2257 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2258 var lw83T = BindEs10xSingleRequest.parseBerTlv(s83.resp);
2259 var lw83Ok0 = lw83T.length === 1 && lw83T[0].tag === "BF28";
2260 var lw83_br = lw83Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw83T[0].value) : [];
2261 var lw83_brtag = lw83_br.length === 1 ? lw83_br[0].tag : "";
2262 var lw83_els = lw83_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw83_br[0].value) : [];
2263 bind.checkData("S83-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw83_brtag === "A0" && lw83_els.length === 0) ? "1" : "0");
2264
2265 // 步骤 84:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2266 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2267 var sdCla84 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2268 var s84 = bind.sendApdu(sdCla84, "E2", "91", "00", "BF280481020410", "00", "9000");
2269 bind.checkData("S84-C1 SW", "9000", s84.sw);
2270 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2271 var lw84T = BindEs10xSingleRequest.parseBerTlv(s84.resp);
2272 var lw84Ok0 = lw84T.length === 1 && lw84T[0].tag === "BF28";
2273 var lw84_br = lw84Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw84T[0].value) : [];
2274 var lw84_brtag = lw84_br.length === 1 ? lw84_br[0].tag : "";
2275 var lw84_els = lw84_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw84_br[0].value) : [];
2276 bind.checkData("S84-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw84_brtag === "A0" && lw84_els.length === 0) ? "1" : "0");
2277
2278 // 步骤 85:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2279 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2280 var sdCla85 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2281 var s85 = bind.sendApdu(sdCla85, "E2", "91", "00", "BF2804810206C0", "00", "9000");
2282 bind.checkData("S85-C1 SW", "9000", s85.sw);
2283 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2284 var lw85T = BindEs10xSingleRequest.parseBerTlv(s85.resp);
2285 var lw85Ok0 = lw85T.length === 1 && lw85T[0].tag === "BF28";
2286 var lw85_br = lw85Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw85T[0].value) : [];
2287 var lw85_brtag = lw85_br.length === 1 ? lw85_br[0].tag : "";
2288 var lw85_els = lw85_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw85_br[0].value) : [];
2289 bind.checkData("S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 branch/count", "1", (lw85_brtag === "A0" && lw85_els.length === 2) ? "1" : "0");
2290 var lw85_feok = lw85_brtag === "A0" && lw85_els.length === 2;
2291 var lw85_fobs = [];
2292 for (var lw85i = 0; lw85i < lw85_els.length; lw85i++) {
2293 if (lw85_els[lw85i].tag !== "BF2F") { lw85_feok = false; continue; }
2294 var lw85M = BindEs10xSingleRequest.parseBerTlv(lw85_els[lw85i].value);
2295 var lw85_f = {};
2296 for (var lw85j = 0; lw85j < lw85M.length; lw85j++) {
2297 if (lw85_f[lw85M[lw85j].tag] === undefined) { lw85_f[lw85M[lw85j].tag] = lw85M[lw85j].value; }
2298 }
2299 if (lw85_f["80"] === undefined) { lw85_feok = false; }
2300 lw85_fobs.push(lw85_f);
2301 }
2302 var lw85_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2303 for (var lw85k = 0; lw85k < lw85_fexp.length; lw85k++) {
2304 var lw85mc = 0;
2305 for (var lw85m = 0; lw85m < lw85_fobs.length; lw85m++) {
2306 if (lw85_fobs[lw85m]["81"] === lw85_fexp[lw85k].op && lw85_fobs[lw85m]["0C"] === lw85_fexp[lw85k].addr && lw85_fobs[lw85m]["5A"] === lw85_fexp[lw85k].iccid) { lw85mc++; }
2307 }
2308 if (lw85mc !== 1) { lw85_feok = false; }
2309 }
2310 bind.checkData("S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 element fields", "1", lw85_feok ? "1" : "0");
2311
2312 // 步骤 86:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2313 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2314 var sdCla86 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2315 var s86 = bind.sendApdu(sdCla86, "E2", "91", "00", "BF280481020430", "00", "9000");
2316 bind.checkData("S86-C1 SW", "9000", s86.sw);
2317 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2318 var lw86T = BindEs10xSingleRequest.parseBerTlv(s86.resp);
2319 var lw86Ok0 = lw86T.length === 1 && lw86T[0].tag === "BF28";
2320 var lw86_br = lw86Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw86T[0].value) : [];
2321 var lw86_brtag = lw86_br.length === 1 ? lw86_br[0].tag : "";
2322 var lw86_els = lw86_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw86_br[0].value) : [];
2323 bind.checkData("S86-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw86_brtag === "A0" && lw86_els.length === 0) ? "1" : "0");
2324
2325 // 步骤 87:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2326 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2327 var sdCla87 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2328 var s87 = bind.sendApdu(sdCla87, "E2", "91", "00", "BF280481020560", "00", "9000");
2329 bind.checkData("S87-C1 SW", "9000", s87.sw);
2330 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2331 var lw87T = BindEs10xSingleRequest.parseBerTlv(s87.resp);
2332 var lw87Ok0 = lw87T.length === 1 && lw87T[0].tag === "BF28";
2333 var lw87_br = lw87Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw87T[0].value) : [];
2334 var lw87_brtag = lw87_br.length === 1 ? lw87_br[0].tag : "";
2335 var lw87_els = lw87_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw87_br[0].value) : [];
2336 bind.checkData("S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw87_brtag === "A0" && lw87_els.length === 1) ? "1" : "0");
2337 var lw87_fok = lw87_brtag === "A0" && lw87_els.length > 0;
2338 for (var lw87i = 0; lw87i < lw87_els.length; lw87i++) {
2339 if (lw87_els[lw87i].tag !== "BF2F") { lw87_fok = false; continue; }
2340 var lw87M = BindEs10xSingleRequest.parseBerTlv(lw87_els[lw87i].value);
2341 var lw87_f = {};
2342 for (var lw87j = 0; lw87j < lw87M.length; lw87j++) {
2343 if (lw87_f[lw87M[lw87j].tag] === undefined) { lw87_f[lw87M[lw87j].tag] = lw87M[lw87j].value; }
2344 }
2345 if (lw87_f["80"] === undefined) { lw87_fok = false; }
2346 var lw87AddrHex = lw87_f["0C"];
2347 var lw87AddrStr = "";
2348 if (typeof lw87AddrHex === "string" && lw87AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw87AddrHex)) {
2349 for (var lw87AddrI = 0; lw87AddrI < lw87AddrHex.length; lw87AddrI += 2) {
2350 lw87AddrStr += String.fromCharCode(parseInt(lw87AddrHex.substr(lw87AddrI, 2), 16));
2351 }
2352 }
2353 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw87AddrStr)) { lw87_fok = false; }
2354 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2355 if (lw87_f["81"] !== "0640") { lw87_fok = false; } // operation
2356 if (lw87_f["5A"] !== "989209012143658709F5") { lw87_fok = false; } // iccid
2357 }
2358 bind.checkData("S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw87_fok ? "1" : "0");
2359
2360 // 步骤 88:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2361 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2362 var sdCla88 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2363 var s88 = bind.sendApdu(sdCla88, "E2", "91", "00", "BF2804810205E0", "00", "9000");
2364 bind.checkData("S88-C1 SW", "9000", s88.sw);
2365 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2366 var lw88T = BindEs10xSingleRequest.parseBerTlv(s88.resp);
2367 var lw88Ok0 = lw88T.length === 1 && lw88T[0].tag === "BF28";
2368 var lw88_br = lw88Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw88T[0].value) : [];
2369 var lw88_brtag = lw88_br.length === 1 ? lw88_br[0].tag : "";
2370 var lw88_els = lw88_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw88_br[0].value) : [];
2371 bind.checkData("S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 branch/count", "1", (lw88_brtag === "A0" && lw88_els.length === 2) ? "1" : "0");
2372 var lw88_feok = lw88_brtag === "A0" && lw88_els.length === 2;
2373 var lw88_fobs = [];
2374 for (var lw88i = 0; lw88i < lw88_els.length; lw88i++) {
2375 if (lw88_els[lw88i].tag !== "BF2F") { lw88_feok = false; continue; }
2376 var lw88M = BindEs10xSingleRequest.parseBerTlv(lw88_els[lw88i].value);
2377 var lw88_f = {};
2378 for (var lw88j = 0; lw88j < lw88M.length; lw88j++) {
2379 if (lw88_f[lw88M[lw88j].tag] === undefined) { lw88_f[lw88M[lw88j].tag] = lw88M[lw88j].value; }
2380 }
2381 if (lw88_f["80"] === undefined) { lw88_feok = false; }
2382 lw88_fobs.push(lw88_f);
2383 }
2384 var lw88_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2385 for (var lw88k = 0; lw88k < lw88_fexp.length; lw88k++) {
2386 var lw88mc = 0;
2387 for (var lw88m = 0; lw88m < lw88_fobs.length; lw88m++) {
2388 if (lw88_fobs[lw88m]["81"] === lw88_fexp[lw88k].op && lw88_fobs[lw88m]["0C"] === lw88_fexp[lw88k].addr && lw88_fobs[lw88m]["5A"] === lw88_fexp[lw88k].iccid) { lw88mc++; }
2389 }
2390 if (lw88mc !== 1) { lw88_feok = false; }
2391 }
2392 bind.checkData("S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 element fields", "1", lw88_feok ? "1" : "0");
2393
2394 // 步骤 89:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
2395 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2396 var sdCla89 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2397 var s89 = bind.sendApdu(sdCla89, "E2", "91", "00", "BF2804810204F0", "00", "9000");
2398 bind.checkData("S89-C1 SW", "9000", s89.sw);
2399 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2400 var lw89T = BindEs10xSingleRequest.parseBerTlv(s89.resp);
2401 var lw89Ok0 = lw89T.length === 1 && lw89T[0].tag === "BF28";
2402 var lw89_br = lw89Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw89T[0].value) : [];
2403 var lw89_brtag = lw89_br.length === 1 ? lw89_br[0].tag : "";
2404 var lw89_els = lw89_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw89_br[0].value) : [];
2405 bind.checkData("S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList branch/count", "1", (lw89_brtag === "A0" && lw89_els.length === 2) ? "1" : "0");
2406 var lw89_feok = lw89_brtag === "A0" && lw89_els.length === 2;
2407 var lw89_fobs = [];
2408 for (var lw89i = 0; lw89i < lw89_els.length; lw89i++) {
2409 if (lw89_els[lw89i].tag !== "BF2F") { lw89_feok = false; continue; }
2410 var lw89M = BindEs10xSingleRequest.parseBerTlv(lw89_els[lw89i].value);
2411 var lw89_f = {};
2412 for (var lw89j = 0; lw89j < lw89M.length; lw89j++) {
2413 if (lw89_f[lw89M[lw89j].tag] === undefined) { lw89_f[lw89M[lw89j].tag] = lw89M[lw89j].value; }
2414 }
2415 if (lw89_f["80"] === undefined) { lw89_feok = false; }
2416 lw89_fobs.push(lw89_f);
2417 }
2418 var lw89_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
2419 for (var lw89k = 0; lw89k < lw89_fexp.length; lw89k++) {
2420 var lw89mc = 0;
2421 for (var lw89m = 0; lw89m < lw89_fobs.length; lw89m++) {
2422 if (lw89_fobs[lw89m]["81"] === lw89_fexp[lw89k].op && lw89_fobs[lw89m]["0C"] === lw89_fexp[lw89k].addr && lw89_fobs[lw89m]["5A"] === lw89_fexp[lw89k].iccid) { lw89mc++; }
2423 }
2424 if (lw89mc !== 1) { lw89_feok = false; }
2425 }
2426 bind.checkData("S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList element fields", "1", lw89_feok ? "1" : "0");
2427
2428 // 步骤 90:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
2429 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2430 var sdCla90 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2431 var s90 = bind.sendApdu(sdCla90, "E2", "91", "00", "BF2800", "00", "9000");
2432 bind.checkData("S90-C1 SW", "9000", s90.sw);
2433 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2434 var lw90T = BindEs10xSingleRequest.parseBerTlv(s90.resp);
2435 var lw90Ok0 = lw90T.length === 1 && lw90T[0].tag === "BF28";
2436 var lw90_br = lw90Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw90T[0].value) : [];
2437 var lw90_brtag = lw90_br.length === 1 ? lw90_br[0].tag : "";
2438 var lw90_els = lw90_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw90_br[0].value) : [];
2439 bind.checkData("S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count", "1", (lw90_brtag === "A0" && lw90_els.length === 2) ? "1" : "0");
2440 var lw90_feok = lw90_brtag === "A0" && lw90_els.length === 2;
2441 var lw90_fobs = [];
2442 for (var lw90i = 0; lw90i < lw90_els.length; lw90i++) {
2443 if (lw90_els[lw90i].tag !== "BF2F") { lw90_feok = false; continue; }
2444 var lw90M = BindEs10xSingleRequest.parseBerTlv(lw90_els[lw90i].value);
2445 var lw90_f = {};
2446 for (var lw90j = 0; lw90j < lw90M.length; lw90j++) {
2447 if (lw90_f[lw90M[lw90j].tag] === undefined) { lw90_f[lw90M[lw90j].tag] = lw90M[lw90j].value; }
2448 }
2449 if (lw90_f["80"] === undefined) { lw90_feok = false; }
2450 lw90_fobs.push(lw90_f);
2451 }
2452 var lw90_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
2453 for (var lw90k = 0; lw90k < lw90_fexp.length; lw90k++) {
2454 var lw90mc = 0;
2455 for (var lw90m = 0; lw90m < lw90_fobs.length; lw90m++) {
2456 if (lw90_fobs[lw90m]["81"] === lw90_fexp[lw90k].op && lw90_fobs[lw90m]["0C"] === lw90_fexp[lw90k].addr && lw90_fobs[lw90m]["5A"] === lw90_fexp[lw90k].iccid) { lw90mc++; }
2457 }
2458 if (lw90mc !== 1) { lw90_feok = false; }
2459 }
2460 bind.checkData("S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields", "1", lw90_feok ? "1" : "0");
2461
2462 // 步骤 91:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2463 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2464 var sdCla91 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2465 var s91 = bind.sendApdu(sdCla91, "E2", "91", "00", "BF2803810100", "00", "9000");
2466 bind.checkData("S91-C1 SW", "9000", s91.sw);
2467 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2468 var lw91T = BindEs10xSingleRequest.parseBerTlv(s91.resp);
2469 var lw91Ok0 = lw91T.length === 1 && lw91T[0].tag === "BF28";
2470 var lw91_br = lw91Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw91T[0].value) : [];
2471 var lw91_brtag = lw91_br.length === 1 ? lw91_br[0].tag : "";
2472 var lw91_els = lw91_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw91_br[0].value) : [];
2473 bind.checkData("S91-C2 R-APDU 二选一 branch/count", "1", (lw91_brtag === "A0" && lw91_els.length === 0) || (lw91_brtag === "81" && lw91_br.length === 1 && lw91_br[0].value === "7F") ? "1" : "0");
2474
2475 // 步骤 92:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
2476 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2477 var sdCla92 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2478 var s92 = bind.sendApdu(sdCla92, "E2", "91", "00", "BF280481020780", "00", "9000");
2479 bind.checkData("S92-C1 SW", "9000", s92.sw);
2480 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2481 var lw92T = BindEs10xSingleRequest.parseBerTlv(s92.resp);
2482 var lw92Ok0 = lw92T.length === 1 && lw92T[0].tag === "BF28";
2483 var lw92_br = lw92Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw92T[0].value) : [];
2484 var lw92_brtag = lw92_br.length === 1 ? lw92_br[0].tag : "";
2485 var lw92_els = lw92_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw92_br[0].value) : [];
2486 bind.checkData("S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含 branch/count", "1", (lw92_brtag === "A0" && lw92_els.length === 1) ? "1" : "0");
2487 var lw92_fok = lw92_brtag === "A0" && lw92_els.length > 0;
2488 for (var lw92i = 0; lw92i < lw92_els.length; lw92i++) {
2489 if (lw92_els[lw92i].tag !== "BF2F") { lw92_fok = false; continue; }
2490 var lw92M = BindEs10xSingleRequest.parseBerTlv(lw92_els[lw92i].value);
2491 var lw92_f = {};
2492 for (var lw92j = 0; lw92j < lw92M.length; lw92j++) {
2493 if (lw92_f[lw92M[lw92j].tag] === undefined) { lw92_f[lw92M[lw92j].tag] = lw92M[lw92j].value; }
2494 }
2495 if (lw92_f["80"] === undefined) { lw92_fok = false; }
2496 var lw92AddrHex = lw92_f["0C"];
2497 var lw92AddrStr = "";
2498 if (typeof lw92AddrHex === "string" && lw92AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw92AddrHex)) {
2499 for (var lw92AddrI = 0; lw92AddrI < lw92AddrHex.length; lw92AddrI += 2) {
2500 lw92AddrStr += String.fromCharCode(parseInt(lw92AddrHex.substr(lw92AddrI, 2), 16));
2501 }
2502 }
2503 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw92AddrStr)) { lw92_fok = false; }
2504 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS2.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS2.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2505 if (lw92_f["81"] !== "0780") { lw92_fok = false; } // operation
2506 if (lw92_f["5A"] !== "989209013254769810F9") { lw92_fok = false; } // iccid
2507 }
2508 bind.checkData("S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含 element fields", "1", lw92_fok ? "1" : "0");
2509
2510 // 步骤 93:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2511 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2512 var sdCla93 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2513 var s93 = bind.sendApdu(sdCla93, "E2", "91", "00", "BF280481020640", "00", "9000");
2514 bind.checkData("S93-C1 SW", "9000", s93.sw);
2515 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2516 var lw93T = BindEs10xSingleRequest.parseBerTlv(s93.resp);
2517 var lw93Ok0 = lw93T.length === 1 && lw93T[0].tag === "BF28";
2518 var lw93_br = lw93Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw93T[0].value) : [];
2519 var lw93_brtag = lw93_br.length === 1 ? lw93_br[0].tag : "";
2520 var lw93_els = lw93_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw93_br[0].value) : [];
2521 bind.checkData("S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw93_brtag === "A0" && lw93_els.length === 1) ? "1" : "0");
2522 var lw93_fok = lw93_brtag === "A0" && lw93_els.length > 0;
2523 for (var lw93i = 0; lw93i < lw93_els.length; lw93i++) {
2524 if (lw93_els[lw93i].tag !== "BF2F") { lw93_fok = false; continue; }
2525 var lw93M = BindEs10xSingleRequest.parseBerTlv(lw93_els[lw93i].value);
2526 var lw93_f = {};
2527 for (var lw93j = 0; lw93j < lw93M.length; lw93j++) {
2528 if (lw93_f[lw93M[lw93j].tag] === undefined) { lw93_f[lw93M[lw93j].tag] = lw93M[lw93j].value; }
2529 }
2530 if (lw93_f["80"] === undefined) { lw93_fok = false; }
2531 var lw93AddrHex = lw93_f["0C"];
2532 var lw93AddrStr = "";
2533 if (typeof lw93AddrHex === "string" && lw93AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw93AddrHex)) {
2534 for (var lw93AddrI = 0; lw93AddrI < lw93AddrHex.length; lw93AddrI += 2) {
2535 lw93AddrStr += String.fromCharCode(parseInt(lw93AddrHex.substr(lw93AddrI, 2), 16));
2536 }
2537 }
2538 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw93AddrStr)) { lw93_fok = false; }
2539 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2540 if (lw93_f["81"] !== "0640") { lw93_fok = false; } // operation
2541 if (lw93_f["5A"] !== "989209012143658709F5") { lw93_fok = false; } // iccid
2542 }
2543 bind.checkData("S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw93_fok ? "1" : "0");
2544
2545 // 步骤 94:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2546 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2547 var sdCla94 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2548 var s94 = bind.sendApdu(sdCla94, "E2", "91", "00", "BF280481020520", "00", "9000");
2549 bind.checkData("S94-C1 SW", "9000", s94.sw);
2550 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2551 var lw94T = BindEs10xSingleRequest.parseBerTlv(s94.resp);
2552 var lw94Ok0 = lw94T.length === 1 && lw94T[0].tag === "BF28";
2553 var lw94_br = lw94Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw94T[0].value) : [];
2554 var lw94_brtag = lw94_br.length === 1 ? lw94_br[0].tag : "";
2555 var lw94_els = lw94_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw94_br[0].value) : [];
2556 bind.checkData("S94-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw94_brtag === "A0" && lw94_els.length === 0) ? "1" : "0");
2557
2558 // 步骤 95:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2559 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2560 var sdCla95 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2561 var s95 = bind.sendApdu(sdCla95, "E2", "91", "00", "BF280481020410", "00", "9000");
2562 bind.checkData("S95-C1 SW", "9000", s95.sw);
2563 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2564 var lw95T = BindEs10xSingleRequest.parseBerTlv(s95.resp);
2565 var lw95Ok0 = lw95T.length === 1 && lw95T[0].tag === "BF28";
2566 var lw95_br = lw95Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw95T[0].value) : [];
2567 var lw95_brtag = lw95_br.length === 1 ? lw95_br[0].tag : "";
2568 var lw95_els = lw95_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw95_br[0].value) : [];
2569 bind.checkData("S95-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw95_brtag === "A0" && lw95_els.length === 0) ? "1" : "0");
2570
2571 // 步骤 96:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
2572 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2573 var sdCla96 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2574 var s96 = bind.sendApdu(sdCla96, "E2", "91", "00", "BF2804810206C0", "00", "9000");
2575 bind.checkData("S96-C1 SW", "9000", s96.sw);
2576 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2577 var lw96T = BindEs10xSingleRequest.parseBerTlv(s96.resp);
2578 var lw96Ok0 = lw96T.length === 1 && lw96T[0].tag === "BF28";
2579 var lw96_br = lw96Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw96T[0].value) : [];
2580 var lw96_brtag = lw96_br.length === 1 ? lw96_br[0].tag : "";
2581 var lw96_els = lw96_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw96_br[0].value) : [];
2582 bind.checkData("S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count", "1", (lw96_brtag === "A0" && lw96_els.length === 2) ? "1" : "0");
2583 var lw96_feok = lw96_brtag === "A0" && lw96_els.length === 2;
2584 var lw96_fobs = [];
2585 for (var lw96i = 0; lw96i < lw96_els.length; lw96i++) {
2586 if (lw96_els[lw96i].tag !== "BF2F") { lw96_feok = false; continue; }
2587 var lw96M = BindEs10xSingleRequest.parseBerTlv(lw96_els[lw96i].value);
2588 var lw96_f = {};
2589 for (var lw96j = 0; lw96j < lw96M.length; lw96j++) {
2590 if (lw96_f[lw96M[lw96j].tag] === undefined) { lw96_f[lw96M[lw96j].tag] = lw96M[lw96j].value; }
2591 }
2592 if (lw96_f["80"] === undefined) { lw96_feok = false; }
2593 lw96_fobs.push(lw96_f);
2594 }
2595 var lw96_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
2596 for (var lw96k = 0; lw96k < lw96_fexp.length; lw96k++) {
2597 var lw96mc = 0;
2598 for (var lw96m = 0; lw96m < lw96_fobs.length; lw96m++) {
2599 if (lw96_fobs[lw96m]["81"] === lw96_fexp[lw96k].op && lw96_fobs[lw96m]["0C"] === lw96_fexp[lw96k].addr && lw96_fobs[lw96m]["5A"] === lw96_fexp[lw96k].iccid) { lw96mc++; }
2600 }
2601 if (lw96mc !== 1) { lw96_feok = false; }
2602 }
2603 bind.checkData("S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields", "1", lw96_feok ? "1" : "0");
2604
2605 // 步骤 97:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2606 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2607 var sdCla97 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2608 var s97 = bind.sendApdu(sdCla97, "E2", "91", "00", "BF280481020430", "00", "9000");
2609 bind.checkData("S97-C1 SW", "9000", s97.sw);
2610 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2611 var lw97T = BindEs10xSingleRequest.parseBerTlv(s97.resp);
2612 var lw97Ok0 = lw97T.length === 1 && lw97T[0].tag === "BF28";
2613 var lw97_br = lw97Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw97T[0].value) : [];
2614 var lw97_brtag = lw97_br.length === 1 ? lw97_br[0].tag : "";
2615 var lw97_els = lw97_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw97_br[0].value) : [];
2616 bind.checkData("S97-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw97_brtag === "A0" && lw97_els.length === 0) ? "1" : "0");
2617
2618 // 步骤 98:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2619 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2620 var sdCla98 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2621 var s98 = bind.sendApdu(sdCla98, "E2", "91", "00", "BF280481020560", "00", "9000");
2622 bind.checkData("S98-C1 SW", "9000", s98.sw);
2623 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2624 var lw98T = BindEs10xSingleRequest.parseBerTlv(s98.resp);
2625 var lw98Ok0 = lw98T.length === 1 && lw98T[0].tag === "BF28";
2626 var lw98_br = lw98Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw98T[0].value) : [];
2627 var lw98_brtag = lw98_br.length === 1 ? lw98_br[0].tag : "";
2628 var lw98_els = lw98_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw98_br[0].value) : [];
2629 bind.checkData("S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw98_brtag === "A0" && lw98_els.length === 1) ? "1" : "0");
2630 var lw98_fok = lw98_brtag === "A0" && lw98_els.length > 0;
2631 for (var lw98i = 0; lw98i < lw98_els.length; lw98i++) {
2632 if (lw98_els[lw98i].tag !== "BF2F") { lw98_fok = false; continue; }
2633 var lw98M = BindEs10xSingleRequest.parseBerTlv(lw98_els[lw98i].value);
2634 var lw98_f = {};
2635 for (var lw98j = 0; lw98j < lw98M.length; lw98j++) {
2636 if (lw98_f[lw98M[lw98j].tag] === undefined) { lw98_f[lw98M[lw98j].tag] = lw98M[lw98j].value; }
2637 }
2638 if (lw98_f["80"] === undefined) { lw98_fok = false; }
2639 var lw98AddrHex = lw98_f["0C"];
2640 var lw98AddrStr = "";
2641 if (typeof lw98AddrHex === "string" && lw98AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw98AddrHex)) {
2642 for (var lw98AddrI = 0; lw98AddrI < lw98AddrHex.length; lw98AddrI += 2) {
2643 lw98AddrStr += String.fromCharCode(parseInt(lw98AddrHex.substr(lw98AddrI, 2), 16));
2644 }
2645 }
2646 if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw98AddrStr)) { lw98_fok = false; }
2647 // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2648 if (lw98_f["81"] !== "0640") { lw98_fok = false; } // operation
2649 if (lw98_f["5A"] !== "989209012143658709F5") { lw98_fok = false; } // iccid
2650 }
2651 bind.checkData("S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw98_fok ? "1" : "0");
2652
2653 // 步骤 99:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
2654 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2655 var sdCla99 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2656 var s99 = bind.sendApdu(sdCla99, "E2", "91", "00", "BF2804810205E0", "00", "9000");
2657 bind.checkData("S99-C1 SW", "9000", s99.sw);
2658 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2659 var lw99T = BindEs10xSingleRequest.parseBerTlv(s99.resp);
2660 var lw99Ok0 = lw99T.length === 1 && lw99T[0].tag === "BF28";
2661 var lw99_br = lw99Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw99T[0].value) : [];
2662 var lw99_brtag = lw99_br.length === 1 ? lw99_br[0].tag : "";
2663 var lw99_els = lw99_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw99_br[0].value) : [];
2664 bind.checkData("S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count", "1", (lw99_brtag === "A0" && lw99_els.length === 2) ? "1" : "0");
2665 var lw99_feok = lw99_brtag === "A0" && lw99_els.length === 2;
2666 var lw99_fobs = [];
2667 for (var lw99i = 0; lw99i < lw99_els.length; lw99i++) {
2668 if (lw99_els[lw99i].tag !== "BF2F") { lw99_feok = false; continue; }
2669 var lw99M = BindEs10xSingleRequest.parseBerTlv(lw99_els[lw99i].value);
2670 var lw99_f = {};
2671 for (var lw99j = 0; lw99j < lw99M.length; lw99j++) {
2672 if (lw99_f[lw99M[lw99j].tag] === undefined) { lw99_f[lw99M[lw99j].tag] = lw99M[lw99j].value; }
2673 }
2674 if (lw99_f["80"] === undefined) { lw99_feok = false; }
2675 lw99_fobs.push(lw99_f);
2676 }
2677 var lw99_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
2678 for (var lw99k = 0; lw99k < lw99_fexp.length; lw99k++) {
2679 var lw99mc = 0;
2680 for (var lw99m = 0; lw99m < lw99_fobs.length; lw99m++) {
2681 if (lw99_fobs[lw99m]["81"] === lw99_fexp[lw99k].op && lw99_fobs[lw99m]["0C"] === lw99_fexp[lw99k].addr && lw99_fobs[lw99m]["5A"] === lw99_fexp[lw99k].iccid) { lw99mc++; }
2682 }
2683 if (lw99mc !== 1) { lw99_feok = false; }
2684 }
2685 bind.checkData("S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields", "1", lw99_feok ? "1" : "0");
2686
2687 // 步骤 100:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2688 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2689 var sdCla100 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2690 var s100 = bind.sendApdu(sdCla100, "E2", "91", "00", "BF2804810204F0", "00", "9000");
2691 bind.checkData("S100-C1 SW", "9000", s100.sw);
2692 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2693 var lw100T = BindEs10xSingleRequest.parseBerTlv(s100.resp);
2694 var lw100Ok0 = lw100T.length === 1 && lw100T[0].tag === "BF28";
2695 var lw100_br = lw100Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw100T[0].value) : [];
2696 var lw100_brtag = lw100_br.length === 1 ? lw100_br[0].tag : "";
2697 var lw100_els = lw100_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw100_br[0].value) : [];
2698 bind.checkData("S100-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw100_brtag === "A0" && lw100_els.length === 0) ? "1" : "0");
2699
2700 // 步骤 101:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_3, RQ57_068_4, RQ57_069)
2701 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2702 var sdCla101 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2703 var s101 = bind.sendApdu(sdCla101, "E2", "91", "00", "BF2800", "00", "9000");
2704 bind.checkData("S101-C1 SW", "9000", s101.sw);
2705 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2706 var lw101T = BindEs10xSingleRequest.parseBerTlv(s101.resp);
2707 var lw101Ok0 = lw101T.length === 1 && lw101T[0].tag === "BF28";
2708 var lw101_br = lw101Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw101T[0].value) : [];
2709 var lw101_brtag = lw101_br.length === 1 ? lw101_br[0].tag : "";
2710 var lw101_els = lw101_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw101_br[0].value) : [];
2711 bind.checkData("S101-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw101_brtag === "A0" && lw101_els.length === 0) ? "1" : "0");
2712
2713 // 步骤 102:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2714 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2715 var sdCla102 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2716 var s102 = bind.sendApdu(sdCla102, "E2", "91", "00", "BF2803810100", "00", "9000");
2717 bind.checkData("S102-C1 SW", "9000", s102.sw);
2718 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2719 var lw102T = BindEs10xSingleRequest.parseBerTlv(s102.resp);
2720 var lw102Ok0 = lw102T.length === 1 && lw102T[0].tag === "BF28";
2721 var lw102_br = lw102Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw102T[0].value) : [];
2722 var lw102_brtag = lw102_br.length === 1 ? lw102_br[0].tag : "";
2723 var lw102_els = lw102_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw102_br[0].value) : [];
2724 bind.checkData("S102-C2 R-APDU 二选一 branch/count", "1", (lw102_brtag === "A0" && lw102_els.length === 0) || (lw102_brtag === "81" && lw102_br.length === 1 && lw102_br[0].value === "7F") ? "1" : "0");
2725
2726 // 步骤 103:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2727 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2728 var sdCla103 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2729 var s103 = bind.sendApdu(sdCla103, "E2", "91", "00", "BF280481020780", "00", "9000");
2730 bind.checkData("S103-C1 SW", "9000", s103.sw);
2731 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2732 var lw103T = BindEs10xSingleRequest.parseBerTlv(s103.resp);
2733 var lw103Ok0 = lw103T.length === 1 && lw103T[0].tag === "BF28";
2734 var lw103_br = lw103Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw103T[0].value) : [];
2735 var lw103_brtag = lw103_br.length === 1 ? lw103_br[0].tag : "";
2736 var lw103_els = lw103_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw103_br[0].value) : [];
2737 bind.checkData("S103-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw103_brtag === "A0" && lw103_els.length === 0) ? "1" : "0");
2738
2739 // 步骤 104:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2740 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2741 var sdCla104 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2742 var s104 = bind.sendApdu(sdCla104, "E2", "91", "00", "BF280481020640", "00", "9000");
2743 bind.checkData("S104-C1 SW", "9000", s104.sw);
2744 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2745 var lw104T = BindEs10xSingleRequest.parseBerTlv(s104.resp);
2746 var lw104Ok0 = lw104T.length === 1 && lw104T[0].tag === "BF28";
2747 var lw104_br = lw104Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw104T[0].value) : [];
2748 var lw104_brtag = lw104_br.length === 1 ? lw104_br[0].tag : "";
2749 var lw104_els = lw104_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw104_br[0].value) : [];
2750 bind.checkData("S104-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw104_brtag === "A0" && lw104_els.length === 0) ? "1" : "0");
2751
2752 // 步骤 105:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2753 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2754 var sdCla105 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2755 var s105 = bind.sendApdu(sdCla105, "E2", "91", "00", "BF280481020520", "00", "9000");
2756 bind.checkData("S105-C1 SW", "9000", s105.sw);
2757 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2758 var lw105T = BindEs10xSingleRequest.parseBerTlv(s105.resp);
2759 var lw105Ok0 = lw105T.length === 1 && lw105T[0].tag === "BF28";
2760 var lw105_br = lw105Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw105T[0].value) : [];
2761 var lw105_brtag = lw105_br.length === 1 ? lw105_br[0].tag : "";
2762 var lw105_els = lw105_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw105_br[0].value) : [];
2763 bind.checkData("S105-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw105_brtag === "A0" && lw105_els.length === 0) ? "1" : "0");
2764
2765 // 步骤 106:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2766 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2767 var sdCla106 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2768 var s106 = bind.sendApdu(sdCla106, "E2", "91", "00", "BF280481020410", "00", "9000");
2769 bind.checkData("S106-C1 SW", "9000", s106.sw);
2770 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2771 var lw106T = BindEs10xSingleRequest.parseBerTlv(s106.resp);
2772 var lw106Ok0 = lw106T.length === 1 && lw106T[0].tag === "BF28";
2773 var lw106_br = lw106Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw106T[0].value) : [];
2774 var lw106_brtag = lw106_br.length === 1 ? lw106_br[0].tag : "";
2775 var lw106_els = lw106_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw106_br[0].value) : [];
2776 bind.checkData("S106-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw106_brtag === "A0" && lw106_els.length === 0) ? "1" : "0");
2777
2778 // 步骤 107:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2779 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2780 var sdCla107 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2781 var s107 = bind.sendApdu(sdCla107, "E2", "91", "00", "BF2804810206C0", "00", "9000");
2782 bind.checkData("S107-C1 SW", "9000", s107.sw);
2783 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2784 var lw107T = BindEs10xSingleRequest.parseBerTlv(s107.resp);
2785 var lw107Ok0 = lw107T.length === 1 && lw107T[0].tag === "BF28";
2786 var lw107_br = lw107Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw107T[0].value) : [];
2787 var lw107_brtag = lw107_br.length === 1 ? lw107_br[0].tag : "";
2788 var lw107_els = lw107_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw107_br[0].value) : [];
2789 bind.checkData("S107-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw107_brtag === "A0" && lw107_els.length === 0) ? "1" : "0");
2790
2791 // 步骤 108:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2792 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2793 var sdCla108 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2794 var s108 = bind.sendApdu(sdCla108, "E2", "91", "00", "BF280481020430", "00", "9000");
2795 bind.checkData("S108-C1 SW", "9000", s108.sw);
2796 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2797 var lw108T = BindEs10xSingleRequest.parseBerTlv(s108.resp);
2798 var lw108Ok0 = lw108T.length === 1 && lw108T[0].tag === "BF28";
2799 var lw108_br = lw108Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw108T[0].value) : [];
2800 var lw108_brtag = lw108_br.length === 1 ? lw108_br[0].tag : "";
2801 var lw108_els = lw108_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw108_br[0].value) : [];
2802 bind.checkData("S108-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw108_brtag === "A0" && lw108_els.length === 0) ? "1" : "0");
2803
2804 // 步骤 109:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2805 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2806 var sdCla109 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2807 var s109 = bind.sendApdu(sdCla109, "E2", "91", "00", "BF280481020560", "00", "9000");
2808 bind.checkData("S109-C1 SW", "9000", s109.sw);
2809 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2810 var lw109T = BindEs10xSingleRequest.parseBerTlv(s109.resp);
2811 var lw109Ok0 = lw109T.length === 1 && lw109T[0].tag === "BF28";
2812 var lw109_br = lw109Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw109T[0].value) : [];
2813 var lw109_brtag = lw109_br.length === 1 ? lw109_br[0].tag : "";
2814 var lw109_els = lw109_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw109_br[0].value) : [];
2815 bind.checkData("S109-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw109_brtag === "A0" && lw109_els.length === 0) ? "1" : "0");
2816
2817 // 步骤 110:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2818 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2819 var sdCla110 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2820 var s110 = bind.sendApdu(sdCla110, "E2", "91", "00", "BF2804810205E0", "00", "9000");
2821 bind.checkData("S110-C1 SW", "9000", s110.sw);
2822 // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2823 var lw110T = BindEs10xSingleRequest.parseBerTlv(s110.resp);
2824 var lw110Ok0 = lw110T.length === 1 && lw110T[0].tag === "BF28";
2825 var lw110_br = lw110Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw110T[0].value) : [];
2826 var lw110_brtag = lw110_br.length === 1 ? lw110_br[0].tag : "";
2827 var lw110_els = lw110_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw110_br[0].value) : [];
2828 bind.checkData("S110-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw110_brtag === "A0" && lw110_els.length === 0) ? "1" : "0");
2829}
2830
完整 unified diff
行级差异:新增 2828 行 / 删除 2494 行(以 -man 为基准,unified 上下文 3 行)。
diff 过长,仅显示前 4000 行(共 5327 行)。
展开 diff(4000 行)
--- -man
+++ -cas
@@ -1,2496 +1,2830 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10b_ListNotification_01_Nominal_Install_Notification + TC_eUICC_ES10b_ListNotification_02_Nominal_Enable_Notification + TC_eUICC_ES10b_ListNotification_03_Nominal_Disable_Notification + TC_eUICC_ES10b_ListNotification_04_Nominal_Delete_Notification + TC_eUICC_ES10b_ListNotification_05_Nominal_Two_Install_Notifications_PIR_with_different_Notification_Address + TC_eUICC_ES10b_ListNotification_06_Nominal_Install_Notification_PIR_and_Enable_Notification + TC_eUICC_ES10b_ListNotification_07_Nominal_Disable_and_Delete_Notifications + TC_eUICC_ES10b_ListNotification_08_Nominal_Install_OtherSignedNotification_and_Enable_Notification + TC_eUICC_ES10b_ListNotification_09_Nominal_Enable_and_Install_PIR_Notifications + TC_eUICC_ES10b_ListNotification_10_Nominal_No_Notifications_available (extracted verbatim)
-
-function TC_eUICC_ES10b_ListNotification_01_Nominal_Install_Notification()
-{
- tracenamestr = "测试目的:列举安装通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- 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 = Profile_load_procedure.serverAddress;
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- 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(Profile_load_procedure.serverAddress,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(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0780");
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0640");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0520");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0410");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("06C0");
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0430");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0560");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("05E0");
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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(Profile_load_procedure.serverAddress,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);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_02_Nominal_Enable_Notification()
-{
-
- tracenamestr = "测试目的:列举激活profile通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 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.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- 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 = Profile_load_procedure.serverAddress;
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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);
- }
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- stno = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = "00";
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- 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(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0780");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0640");
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0520");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0410");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("06C0");
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0430");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0560");
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("05E0");
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_03_Nominal_Disable_Notification()
-{
-
- tracenamestr = "测试目的:列举去激活profile通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 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.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- 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 = Profile_load_procedure.serverAddress;
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-
- Profile_load_procedure.ES10b_ListNotification();
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
- curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- stno = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = "00";
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- 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(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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);
- }
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- RecoverCard();
-
-}
-
-function TC_eUICC_ES10b_ListNotification_04_Nominal_Delete_Notification()
-{
-
- tracenamestr = "测试目的:列举删除profile通知";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 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.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- 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 = Profile_load_procedure.serverAddress;
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
- try
- {
- curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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);
- }
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- stno = 1;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = "00";
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- 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(Profile_load_procedure.serverAddress,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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
- try
- {
- curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
- curStrHandle.CheckData(Profile_load_procedure.serverAddress,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);
- }
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_05_Nominal_Two_Install_Notifications_PIR_with_different_Notification_Address()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C025"))
- return;
-
- tracenamestr = "Remove Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. Do not remove the Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart("复位;");
- ResetCard();
-
- curDis.TestStepStart("读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- 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;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
- pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-
- 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 = NAME_OP_PROF1;
- Profile_load_procedure.iconType = "01";
- Profile_load_procedure.icon = ICON_OP_PROF1;
- Profile_load_procedure.profileClass = "02";
- Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- tracenamestr = "Install PROFILE_OPERATIONAL2 with #METADATA_OP_PROF2_NO_INSTALL.Do not remove the Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- 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;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
- pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL2_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF2;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.serverAddress = TEST_DP_ADDRESS2;
- Profile_load_procedure.DPauthInforObj.D_key = SK_S_SM_DP2auth_ECDSA_NIST;
- Profile_load_procedure.DPauthInforObj.Cert = CERT_S_SM_DP2auth_ECDSA_NIST;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.DPbpInforObj.D_key = SK_S_SM_DP2pb_ECDSA_NIST;
- Profile_load_procedure.DPbpInforObj.Cert = CERT_S_SM_DP2pb_ECDSA_NIST;
- Profile_load_procedure.DPbpInforObj.registeredID = DP2pb_prime256v1_OID;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- Profile_load_procedure.serviceProviderName = SP_NAME2;
- Profile_load_procedure.profileName = NAME_OP_PROF2;
- Profile_load_procedure.iconType = "01";
- Profile_load_procedure.icon = ICON_OP_PROF2;
- Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS2;
- Profile_load_procedure.profileClass = "02";
- Profile_load_procedure.mccMnc = MCC_MNC2;
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- tracenamestr = "Install Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- 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");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0780");
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0640");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0520");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0410");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("06C0");
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0430");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0560");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("05E0");
- 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);
- }
-
-
- tracenamestr = "DELETE PROFILE_OPERATIONAL1 , PROFILE_OPERATIONAL2";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.iccid = ICCID_OP_PROF1;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-
- curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.iccid = ICCID_OP_PROF2;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-
- curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF2);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_06_Nominal_Install_Notification_PIR_and_Enable_Notification()
-{
- tracenamestr = "Remove Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
-
- tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- 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 = NAME_OP_PROF1;
- 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 = "0470";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
- Profile_load_procedure.profileClass = "02";
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = "00";
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- tracenamestr = "Install Notification (PIR) and Enable Notification ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- 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");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0780");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0640");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0520");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0410");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("06C0");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0430");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0560");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("05E0");
-
- 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);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_07_Nominal_Disable_and_Delete_Notifications()
-{
- tracenamestr = "Remove Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
-
- tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- 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 = NAME_OP_PROF1;
- 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 = "0470";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
- Profile_load_procedure.profileClass = "02";
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = "00";
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- tracenamestr = "Remove Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
-
- tracenamestr = "还原卡片删除Enabled状态的PROFILE_OPERATIONAL1";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送 Terminal Profile命令,进行主动式命令交互;");
- IniCard_SetUpMenu("",1);
-
- counterC = 2000;
-
- curDis.TestStepStart("读卡器向卡片发送 Envelope命令,执行策略更新命令;");
- sSendType = SendTypeByOTA.SMS;
-
- KIC = MNO_SCP80_ENC_KEY;
- KID = MNO_SCP80_AUTH_KEY;
- KIK = MNO_SCP80_DATA_ENC_KEY;
- if (UpdatePPRformat == Remote_APDU_format.Compact)
- {
- //简单格式更新策略
-
- InstallForPerson = new InstallForPersonalizationPara(RESERVED_ISD_P_AID);
-
- var sdatain = "BF2A0499020500";
- var storedatapara =new StoreDataPara("90","00",sdatain,"9000");
-
- sAPDU1 = GetParaAPDU(InstallForPerson);
- sAPDU2 = GetParaAPDU(storedatapara);
- sAPDU = sAPDU1 + sAPDU2;
-
- SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210515",sAPDU);
- CardSendMessageToServer(sSendType,1,"029000","00");
-
-
- TerminalResponse("00","9000");
- }
- else
- {
-
- numOfCmdTlvs = 0;
- arrExpandedRemoteCmdObj = new Array();
-
- InstallForPerson = new InstallForPersonalizationPara(RESERVED_ISD_P_AID);
- InstallForPerson.SetAPDU();
- arrExpandedRemoteCmdObj[numOfCmdTlvs] = new ExpandedRemoteCommandObject();
- arrExpandedRemoteCmdObj[numOfCmdTlvs].crtExpandedRemoteApduObj(InstallForPerson.apdu);
- numOfCmdTlvs ++;
-
- var sdatain = "BF2A0499020500";
-
- var storedatapara =new StoreDataPara("90","00",sdatain,"9000");
-
- storedatapara.SetAPDU();
- arrExpandedRemoteCmdObj[numOfCmdTlvs] = new ExpandedRemoteCommandObject();
- arrExpandedRemoteCmdObj[numOfCmdTlvs].crtExpandedRemoteApduObj(storedatapara.apdu);
- numOfCmdTlvs ++;
-
- sAPDU = GenExpandedRemoteCmd(arrExpandedRemoteCmdObj);
-
- SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210515",sAPDU);
-
- var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
- CardSendMessageToServerExpandedRemoteCmd(exResPara);
-
- TerminalResponse("00","9000");
- }
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"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命令,执行DisableProfileRequest;");
- var disableProRequest = new DisableProfileRequest();
- disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- disableProRequest.refreshFlag = "00";
- disableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData);
-
- curStrHandle.CheckData("BF3203800100", respData, "DisableProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- if (debug)
- respData = "BF2D1CA01AE3185A0A890199900012345678934F060505050505059F70011F";
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.iccid = ICCID_OP_PROF1;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-
- curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- if (debug)
- respData = "BF2D02A000";
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- tracenamestr = "Disable and Delete Notifications ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0780");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0640");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0520");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0410");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("06C0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0430");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("05E0");
-
- 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);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_08_Nominal_Install_OtherSignedNotification_and_Enable_Notification()
-{
- tracenamestr = "Remove Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
-
- tracenamestr = "Install PROFILE_OPERATIONAL1. Remove the PIR notification, but do not remove the OtherSignedNotification. ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- 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 = NAME_OP_PROF1;
- 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.profileClass = "02";
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- 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_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");
-
- tracenamestr = "Enable PROFILE_OPERATIONAL1. Do not remove the Notification. ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = "00";
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- tracenamestr = "Install (OtherSignedNotification) and Enable Notification ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0780");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0640");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0520");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0410");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("06C0");
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0430");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0560");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("05E0");
- 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);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_09_Nominal_Enable_and_Install_PIR_Notifications()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- tracenamestr = "Remove Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- tracenamestr = "Install PROFILE_OPERATIONAL1. Remove both notifications. ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- 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 = NAME_OP_PROF1;
- 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 = "0470";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
- Profile_load_procedure.profileClass = "02";
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- tracenamestr = "Enable PROFILE_OPERATIONAL1. Do not remove the Notification. ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
- enableProRequest.refreshFlag = "00";
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-
- curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- tracenamestr = "Install PROFILE_OPERATIONAL2 with #METADATA_OP_PROF2_NO_INSTALL. ";
- curDis.TraceStart(sno++,tracenamestr);
-
-
- curLogicChannel = 0;
-
- 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;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
- pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL2_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF2;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.serverAddress = TEST_DP_ADDRESS2;
- Profile_load_procedure.DPauthInforObj.D_key = SK_S_SM_DP2auth_ECDSA_NIST;
- Profile_load_procedure.DPauthInforObj.Cert = CERT_S_SM_DP2auth_ECDSA_NIST;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.DPbpInforObj.D_key = SK_S_SM_DP2pb_ECDSA_NIST;
- Profile_load_procedure.DPbpInforObj.Cert = CERT_S_SM_DP2pb_ECDSA_NIST;
- Profile_load_procedure.DPbpInforObj.registeredID = DP2pb_prime256v1_OID;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- Profile_load_procedure.serviceProviderName = SP_NAME2;
- Profile_load_procedure.profileName = NAME_OP_PROF2;
- Profile_load_procedure.iconType = "01";
- Profile_load_procedure.icon = ICON_OP_PROF2;
- Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS2;
- Profile_load_procedure.profileClass = "02";
- Profile_load_procedure.mccMnc = MCC_MNC2;
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- tracenamestr = "Enable and Install (PIR) Notifications ";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- 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");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0780");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0640");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0520");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0410");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("06C0");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0430");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0560");
-
- 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命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("05E0");
-
- 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);
- }
-
-
- Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
-
- tracenamestr = "DELETE PROFILE_OPERATIONAL1 , PROFILE_OPERATIONAL2";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.iccid = ICCID_OP_PROF1;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-
- curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
- var deleProfileRequest = new DeleteProfileRequest();
- deleProfileRequest.iccid = ICCID_OP_PROF2;
- deleProfileRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-
- curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF2);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
- RecoverCard();
-
-
-}
-
-function TC_eUICC_ES10b_ListNotification_10_Nominal_No_Notifications_available()
-{
- tracenamestr = "Remove Notification";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
-
- var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
- for(var i=0;i<NotificationLen;i++)
- {
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
- var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
- Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
- var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
- curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
- }
-
- tracenamestr = "No Notifications available";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("04F0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification();
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0780");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0640");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0520");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0410");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("06C0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0430");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("0560");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
- Profile_load_procedure.ES10b_ListNotification("05E0");
- curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20260929-120236
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10b.ListNotification,Test Sequence #01-#10 Nominal(E_tc_4214 含 10 个 Test Sequence,全部纳入;schema 单值字段如实合并登记),适用性 M。
+// Test points: ICH-IC1-K1-C1 ATR_present;ICH-IC1-K2-C2 FCP_Template;ICH-IC1-K2-C4 SW
+// ICH-IC1-K3-C4 SW;ICH-IC1-K4-C4 final SW;ICH-IC2-K1-C4 SW;ICH-IC2-K1-C3 CHANNEL_NUMBER extracted
+// ICH-IC2-K2-C4 SW;S1-C1 SW
+// S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN branch/count
+// S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN element fields;S2-C1 SW
+// S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
+// S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S3-C1 SW
+// S3-C2 R-APDU 二选一 branch/count;S4-C1 SW
+// S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
+// S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S5-C1 SW
+// S5-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S6-C1 SW
+// S6-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S7-C1 SW
+// S7-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S8-C1 SW
+// S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
+// S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S9-C1 SW
+// S9-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S10-C1 SW
+// S10-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S11-C1 SW
+// S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
+// S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S12-C1 SW
+// S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT branch/count
+// S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT element fields;S13-C1 SW
+// S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S14-C1 SW
+// S14-C2 R-APDU 二选一 branch/count;S15-C1 SW
+// S15-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S16-C1 SW
+// S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S17-C1 SW
+// S17-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S18-C1 SW
+// S18-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S19-C1 SW
+// S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S20-C1 SW
+// S20-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S21-C1 SW
+// S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S22-C1 SW
+// S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S23-C1 SW
+// S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT branch/count
+// S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT element fields;S24-C1 SW
+// S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S25-C1 SW
+// S25-C2 R-APDU 二选一 branch/count;S26-C1 SW
+// S26-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S27-C1 SW
+// S27-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S28-C1 SW
+// S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S29-C1 SW
+// S29-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S30-C1 SW
+// S30-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S31-C1 SW
+// S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S32-C1 SW
+// S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S33-C1 SW
+// S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S34-C1 SW
+// S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT branch/count
+// S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT element fields;S35-C1 SW
+// S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+// S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S36-C1 SW
+// S36-C2 R-APDU 二选一 branch/count;S37-C1 SW
+// S37-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S38-C1 SW
+// S38-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S39-C1 SW
+// S39-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S40-C1 SW
+// S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+// S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S41-C1 SW
+// S41-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S42-C1 SW
+// S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+// S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S43-C1 SW
+// S43-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S44-C1 SW
+// S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+// S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S45-C1 SW
+// S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata branch/count
+// S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata element fields;S46-C1 SW
+// S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
+// S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S47-C1 SW
+// S47-C2 R-APDU 二选一 branch/count;S48-C1 SW
+// S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
+// S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S49-C1 SW
+// S49-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S50-C1 SW
+// S50-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S51-C1 SW
+// S51-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S52-C1 SW
+// S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
+// S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S53-C1 SW
+// S53-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S54-C1 SW
+// S54-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S55-C1 SW
+// S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
+// S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S56-C1 SW
+// S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList branch/count
+// S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList element fields;S57-C1 SW
+// S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
+// S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S58-C1 SW
+// S58-C2 R-APDU 二选一 branch/count;S59-C1 SW
+// S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含 branch/count
+// S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含 element fields;S60-C1 SW
+// S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S61-C1 SW
+// S61-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S62-C1 SW
+// S62-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S63-C1 SW
+// S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
+// S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S64-C1 SW
+// S64-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S65-C1 SW
+// S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S66-C1 SW
+// S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
+// S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S67-C1 SW
+// S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含 branch/count
+// S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含 element fields;S68-C1 SW
+// S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S69-C1 SW
+// S69-C2 R-APDU 二选一 branch/count;S70-C1 SW
+// S70-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S71-C1 SW
+// S71-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S72-C1 SW
+// S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S73-C1 SW
+// S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+// S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S74-C1 SW
+// S74-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S75-C1 SW
+// S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S76-C1 SW
+// S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S77-C1 SW
+// S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+// S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S78-C1 SW
+// S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含 branch/count
+// S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含 element fields;S79-C1 SW
+// S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 branch/count
+// S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 element fields;S80-C1 SW
+// S80-C2 R-APDU 二选一 branch/count;S81-C1 SW
+// S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT branch/count
+// S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT element fields;S82-C1 SW
+// S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S83-C1 SW
+// S83-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S84-C1 SW
+// S84-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S85-C1 SW
+// S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 branch/count
+// S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 element fields;S86-C1 SW
+// S86-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S87-C1 SW
+// S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S88-C1 SW
+// S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 branch/count
+// S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1 element fields;S89-C1 SW
+// S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList branch/count
+// S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList element fields;S90-C1 SW
+// S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
+// S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S91-C1 SW
+// S91-C2 R-APDU 二选一 branch/count;S92-C1 SW
+// S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含 branch/count
+// S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含 element fields;S93-C1 SW
+// S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S94-C1 SW
+// S94-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S95-C1 SW
+// S95-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S96-C1 SW
+// S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
+// S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S97-C1 SW
+// S97-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S98-C1 SW
+// S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+// S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S99-C1 SW
+// S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
+// S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S100-C1 SW
+// S100-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S101-C1 SW
+// S101-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S102-C1 SW
+// S102-C2 R-APDU 二选一 branch/count;S103-C1 SW
+// S103-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S104-C1 SW
+// S104-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S105-C1 SW
+// S105-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S106-C1 SW
+// S106-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S107-C1 SW
+// S107-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S108-C1 SW
+// S108-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S109-C1 SW
+// S109-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S110-C1 SW
+// S110-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count
+// 本函数由 CaseIR 4.2.14.2.1 编译生成(Q3W0-EXPAND-20260929-R4,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_ListNotification_01_10_Nominal_E_tc_4214_10_Test_Sequence_schema() {
+ var bind = curBind;
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s111 = bind.resetAndAtr();
+ bind.checkData("ICH-IC1-K1-C1 ATR_present", "1", s111.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 s112 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("ICH-IC1-K2-C2 FCP_Template", "1", s112.resp.length > 0 ? "1" : "0");
+ bind.checkData("ICH-IC1-K2-C4 SW", "9000", s112.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s113 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("ICH-IC1-K3-C4 SW", "9000", s113.sw);
+
+ // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady114 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("ICH-IC1-K4-C4 final SW", "9000", steady114.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 s115 = bind.manageChannelOpen("9000");
+ bind.checkData("ICH-IC2-K1-C4 SW", "9000", s115.sw);
+ bind.checkData("ICH-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s115.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 s116 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+ // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+ bind.checkData("ICH-IC2-K2-C4 SW", "9000", s116.sw);
+
+ // 步骤 1:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla1 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.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.ListNotification,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-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN branch/count", "1", (lw1_brtag === "A0" && lw1_els.length === 2) ? "1" : "0");
+ var lw1_fok = lw1_brtag === "A0" && lw1_els.length > 0;
+ for (var lw1i = 0; lw1i < lw1_els.length; lw1i++) {
+ if (lw1_els[lw1i].tag !== "BF2F") { lw1_fok = false; continue; }
+ var lw1M = BindEs10xSingleRequest.parseBerTlv(lw1_els[lw1i].value);
+ var lw1_f = {};
+ for (var lw1j = 0; lw1j < lw1M.length; lw1j++) {
+ if (lw1_f[lw1M[lw1j].tag] === undefined) { lw1_f[lw1M[lw1j].tag] = lw1M[lw1j].value; }
+ }
+ if (lw1_f["80"] === undefined) { lw1_fok = false; }
+ var lw1AddrHex = lw1_f["0C"];
+ var lw1AddrStr = "";
+ if (typeof lw1AddrHex === "string" && lw1AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw1AddrHex)) {
+ for (var lw1AddrI = 0; lw1AddrI < lw1AddrHex.length; lw1AddrI += 2) {
+ lw1AddrStr += String.fromCharCode(parseInt(lw1AddrHex.substr(lw1AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw1AddrStr)) { lw1_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw1_f["81"] !== "0780") { lw1_fok = false; } // operation
+ if (lw1_f["5A"] !== "989209012143658709F5") { lw1_fok = false; } // iccid
+ }
+ bind.checkData("S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN element fields", "1", lw1_fok ? "1" : "0");
+
+ // 步骤 2:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla2 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", "BF2800", "00", "9000");
+ bind.checkData("S2-C1 SW", "9000", s2.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw2T = BindEs10xSingleRequest.parseBerTlv(s2.resp);
+ var lw2Ok0 = lw2T.length === 1 && lw2T[0].tag === "BF28";
+ var lw2_br = lw2Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw2T[0].value) : [];
+ var lw2_brtag = lw2_br.length === 1 ? lw2_br[0].tag : "";
+ var lw2_els = lw2_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw2_br[0].value) : [];
+ bind.checkData("S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw2_brtag === "A0" && lw2_els.length === 2) ? "1" : "0");
+ var lw2_fok = lw2_brtag === "A0" && lw2_els.length > 0;
+ for (var lw2i = 0; lw2i < lw2_els.length; lw2i++) {
+ if (lw2_els[lw2i].tag !== "BF2F") { lw2_fok = false; continue; }
+ var lw2M = BindEs10xSingleRequest.parseBerTlv(lw2_els[lw2i].value);
+ var lw2_f = {};
+ for (var lw2j = 0; lw2j < lw2M.length; lw2j++) {
+ if (lw2_f[lw2M[lw2j].tag] === undefined) { lw2_f[lw2M[lw2j].tag] = lw2M[lw2j].value; }
+ }
+ if (lw2_f["80"] === undefined) { lw2_fok = false; }
+ var lw2AddrHex = lw2_f["0C"];
+ var lw2AddrStr = "";
+ if (typeof lw2AddrHex === "string" && lw2AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw2AddrHex)) {
+ for (var lw2AddrI = 0; lw2AddrI < lw2AddrHex.length; lw2AddrI += 2) {
+ lw2AddrStr += String.fromCharCode(parseInt(lw2AddrHex.substr(lw2AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw2AddrStr)) { lw2_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw2_f["81"] !== "0780") { lw2_fok = false; } // operation
+ if (lw2_f["5A"] !== "989209012143658709F5") { lw2_fok = false; } // iccid
+ }
+ bind.checkData("S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw2_fok ? "1" : "0");
+
+ // 步骤 3:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla3 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2803810100", "00", "9000");
+ bind.checkData("S3-C1 SW", "9000", s3.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 二选一 branch/count", "1", (lw3_brtag === "A0" && lw3_els.length === 0) || (lw3_brtag === "81" && lw3_br.length === 1 && lw3_br[0].value === "7F") ? "1" : "0");
+
+ // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla4 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF280481020780", "00", "9000");
+ bind.checkData("S4-C1 SW", "9000", s4.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw4T = BindEs10xSingleRequest.parseBerTlv(s4.resp);
+ var lw4Ok0 = lw4T.length === 1 && lw4T[0].tag === "BF28";
+ var lw4_br = lw4Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw4T[0].value) : [];
+ var lw4_brtag = lw4_br.length === 1 ? lw4_br[0].tag : "";
+ var lw4_els = lw4_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw4_br[0].value) : [];
+ bind.checkData("S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw4_brtag === "A0" && lw4_els.length === 2) ? "1" : "0");
+ var lw4_fok = lw4_brtag === "A0" && lw4_els.length > 0;
+ for (var lw4i = 0; lw4i < lw4_els.length; lw4i++) {
+ if (lw4_els[lw4i].tag !== "BF2F") { lw4_fok = false; continue; }
+ var lw4M = BindEs10xSingleRequest.parseBerTlv(lw4_els[lw4i].value);
+ var lw4_f = {};
+ for (var lw4j = 0; lw4j < lw4M.length; lw4j++) {
+ if (lw4_f[lw4M[lw4j].tag] === undefined) { lw4_f[lw4M[lw4j].tag] = lw4M[lw4j].value; }
+ }
+ if (lw4_f["80"] === undefined) { lw4_fok = false; }
+ var lw4AddrHex = lw4_f["0C"];
+ var lw4AddrStr = "";
+ if (typeof lw4AddrHex === "string" && lw4AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw4AddrHex)) {
+ for (var lw4AddrI = 0; lw4AddrI < lw4AddrHex.length; lw4AddrI += 2) {
+ lw4AddrStr += String.fromCharCode(parseInt(lw4AddrHex.substr(lw4AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw4AddrStr)) { lw4_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw4_f["81"] !== "0780") { lw4_fok = false; } // operation
+ if (lw4_f["5A"] !== "989209012143658709F5") { lw4_fok = false; } // iccid
+ }
+ bind.checkData("S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw4_fok ? "1" : "0");
+
+ // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla5 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF280481020640", "00", "9000");
+ bind.checkData("S5-C1 SW", "9000", s5.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw5_brtag === "A0" && lw5_els.length === 0) ? "1" : "0");
+
+ // 步骤 6:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla6 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s6 = bind.sendApdu(sdCla6, "E2", "91", "00", "BF280481020520", "00", "9000");
+ bind.checkData("S6-C1 SW", "9000", s6.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw6_brtag === "A0" && lw6_els.length === 0) ? "1" : "0");
+
+ // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla7 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF280481020410", "00", "9000");
+ bind.checkData("S7-C1 SW", "9000", s7.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw7T = BindEs10xSingleRequest.parseBerTlv(s7.resp);
+ var lw7Ok0 = lw7T.length === 1 && lw7T[0].tag === "BF28";
+ var lw7_br = lw7Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw7T[0].value) : [];
+ var lw7_brtag = lw7_br.length === 1 ? lw7_br[0].tag : "";
+ var lw7_els = lw7_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw7_br[0].value) : [];
+ bind.checkData("S7-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw7_brtag === "A0" && lw7_els.length === 0) ? "1" : "0");
+
+ // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla8 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+ bind.checkData("S8-C1 SW", "9000", s8.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw8_brtag === "A0" && lw8_els.length === 2) ? "1" : "0");
+ var lw8_fok = lw8_brtag === "A0" && lw8_els.length > 0;
+ for (var lw8i = 0; lw8i < lw8_els.length; lw8i++) {
+ if (lw8_els[lw8i].tag !== "BF2F") { lw8_fok = false; continue; }
+ var lw8M = BindEs10xSingleRequest.parseBerTlv(lw8_els[lw8i].value);
+ var lw8_f = {};
+ for (var lw8j = 0; lw8j < lw8M.length; lw8j++) {
+ if (lw8_f[lw8M[lw8j].tag] === undefined) { lw8_f[lw8M[lw8j].tag] = lw8M[lw8j].value; }
+ }
+ if (lw8_f["80"] === undefined) { lw8_fok = false; }
+ var lw8AddrHex = lw8_f["0C"];
+ var lw8AddrStr = "";
+ if (typeof lw8AddrHex === "string" && lw8AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw8AddrHex)) {
+ for (var lw8AddrI = 0; lw8AddrI < lw8AddrHex.length; lw8AddrI += 2) {
+ lw8AddrStr += String.fromCharCode(parseInt(lw8AddrHex.substr(lw8AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw8AddrStr)) { lw8_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw8_f["81"] !== "0780") { lw8_fok = false; } // operation
+ if (lw8_f["5A"] !== "989209012143658709F5") { lw8_fok = false; } // iccid
+ }
+ bind.checkData("S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw8_fok ? "1" : "0");
+
+ // 步骤 9:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla9 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s9 = bind.sendApdu(sdCla9, "E2", "91", "00", "BF280481020430", "00", "9000");
+ bind.checkData("S9-C1 SW", "9000", s9.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw9_brtag === "A0" && lw9_els.length === 0) ? "1" : "0");
+
+ // 步骤 10:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla10 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s10 = bind.sendApdu(sdCla10, "E2", "91", "00", "BF280481020560", "00", "9000");
+ bind.checkData("S10-C1 SW", "9000", s10.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw10T = BindEs10xSingleRequest.parseBerTlv(s10.resp);
+ var lw10Ok0 = lw10T.length === 1 && lw10T[0].tag === "BF28";
+ var lw10_br = lw10Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw10T[0].value) : [];
+ var lw10_brtag = lw10_br.length === 1 ? lw10_br[0].tag : "";
+ var lw10_els = lw10_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw10_br[0].value) : [];
+ bind.checkData("S10-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw10_brtag === "A0" && lw10_els.length === 0) ? "1" : "0");
+
+ // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla11 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2804810205E0", "00", "9000");
+ bind.checkData("S11-C1 SW", "9000", s11.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw11_brtag === "A0" && lw11_els.length === 2) ? "1" : "0");
+ var lw11_fok = lw11_brtag === "A0" && lw11_els.length > 0;
+ for (var lw11i = 0; lw11i < lw11_els.length; lw11i++) {
+ if (lw11_els[lw11i].tag !== "BF2F") { lw11_fok = false; continue; }
+ var lw11M = BindEs10xSingleRequest.parseBerTlv(lw11_els[lw11i].value);
+ var lw11_f = {};
+ for (var lw11j = 0; lw11j < lw11M.length; lw11j++) {
+ if (lw11_f[lw11M[lw11j].tag] === undefined) { lw11_f[lw11M[lw11j].tag] = lw11M[lw11j].value; }
+ }
+ if (lw11_f["80"] === undefined) { lw11_fok = false; }
+ var lw11AddrHex = lw11_f["0C"];
+ var lw11AddrStr = "";
+ if (typeof lw11AddrHex === "string" && lw11AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw11AddrHex)) {
+ for (var lw11AddrI = 0; lw11AddrI < lw11AddrHex.length; lw11AddrI += 2) {
+ lw11AddrStr += String.fromCharCode(parseInt(lw11AddrHex.substr(lw11AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw11AddrStr)) { lw11_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw11_f["81"] !== "0780") { lw11_fok = false; } // operation
+ if (lw11_f["5A"] !== "989209012143658709F5") { lw11_fok = false; } // iccid
+ }
+ bind.checkData("S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw11_fok ? "1" : "0");
+
+ // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla12 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.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.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw12_brtag === "A0" && lw12_els.length === 1) ? "1" : "0");
+ var lw12_fok = lw12_brtag === "A0" && lw12_els.length > 0;
+ for (var lw12i = 0; lw12i < lw12_els.length; lw12i++) {
+ if (lw12_els[lw12i].tag !== "BF2F") { lw12_fok = false; continue; }
+ var lw12M = BindEs10xSingleRequest.parseBerTlv(lw12_els[lw12i].value);
+ var lw12_f = {};
+ for (var lw12j = 0; lw12j < lw12M.length; lw12j++) {
+ if (lw12_f[lw12M[lw12j].tag] === undefined) { lw12_f[lw12M[lw12j].tag] = lw12M[lw12j].value; }
+ }
+ if (lw12_f["80"] === undefined) { lw12_fok = false; }
+ var lw12AddrHex = lw12_f["0C"];
+ var lw12AddrStr = "";
+ if (typeof lw12AddrHex === "string" && lw12AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw12AddrHex)) {
+ for (var lw12AddrI = 0; lw12AddrI < lw12AddrHex.length; lw12AddrI += 2) {
+ lw12AddrStr += String.fromCharCode(parseInt(lw12AddrHex.substr(lw12AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw12AddrStr)) { lw12_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw12_f["81"] !== "0640") { lw12_fok = false; } // operation
+ if (lw12_f["5A"] !== "989209012143658709F5") { lw12_fok = false; } // iccid
+ }
+ bind.checkData("S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT element fields", "1", lw12_fok ? "1" : "0");
+
+ // 步骤 13:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla13 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s13 = bind.sendApdu(sdCla13, "E2", "91", "00", "BF2800", "00", "9000");
+ bind.checkData("S13-C1 SW", "9000", s13.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw13T = BindEs10xSingleRequest.parseBerTlv(s13.resp);
+ var lw13Ok0 = lw13T.length === 1 && lw13T[0].tag === "BF28";
+ var lw13_br = lw13Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw13T[0].value) : [];
+ var lw13_brtag = lw13_br.length === 1 ? lw13_br[0].tag : "";
+ var lw13_els = lw13_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw13_br[0].value) : [];
+ bind.checkData("S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw13_brtag === "A0" && lw13_els.length === 1) ? "1" : "0");
+ var lw13_fok = lw13_brtag === "A0" && lw13_els.length > 0;
+ for (var lw13i = 0; lw13i < lw13_els.length; lw13i++) {
+ if (lw13_els[lw13i].tag !== "BF2F") { lw13_fok = false; continue; }
+ var lw13M = BindEs10xSingleRequest.parseBerTlv(lw13_els[lw13i].value);
+ var lw13_f = {};
+ for (var lw13j = 0; lw13j < lw13M.length; lw13j++) {
+ if (lw13_f[lw13M[lw13j].tag] === undefined) { lw13_f[lw13M[lw13j].tag] = lw13M[lw13j].value; }
+ }
+ if (lw13_f["80"] === undefined) { lw13_fok = false; }
+ var lw13AddrHex = lw13_f["0C"];
+ var lw13AddrStr = "";
+ if (typeof lw13AddrHex === "string" && lw13AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw13AddrHex)) {
+ for (var lw13AddrI = 0; lw13AddrI < lw13AddrHex.length; lw13AddrI += 2) {
+ lw13AddrStr += String.fromCharCode(parseInt(lw13AddrHex.substr(lw13AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw13AddrStr)) { lw13_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw13_f["81"] !== "0640") { lw13_fok = false; } // operation
+ if (lw13_f["5A"] !== "989209012143658709F5") { lw13_fok = false; } // iccid
+ }
+ bind.checkData("S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw13_fok ? "1" : "0");
+
+ // 步骤 14:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla14 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", "BF2803810100", "00", "9000");
+ bind.checkData("S14-C1 SW", "9000", s14.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 二选一 branch/count", "1", (lw14_brtag === "A0" && lw14_els.length === 0) || (lw14_brtag === "81" && lw14_br.length === 1 && lw14_br[0].value === "7F") ? "1" : "0");
+
+ // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla15 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF280481020780", "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s15.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw15_brtag === "A0" && lw15_els.length === 0) ? "1" : "0");
+
+ // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla16 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF280481020640", "00", "9000");
+ bind.checkData("S16-C1 SW", "9000", s16.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw16T = BindEs10xSingleRequest.parseBerTlv(s16.resp);
+ var lw16Ok0 = lw16T.length === 1 && lw16T[0].tag === "BF28";
+ var lw16_br = lw16Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw16T[0].value) : [];
+ var lw16_brtag = lw16_br.length === 1 ? lw16_br[0].tag : "";
+ var lw16_els = lw16_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw16_br[0].value) : [];
+ bind.checkData("S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw16_brtag === "A0" && lw16_els.length === 1) ? "1" : "0");
+ var lw16_fok = lw16_brtag === "A0" && lw16_els.length > 0;
+ for (var lw16i = 0; lw16i < lw16_els.length; lw16i++) {
+ if (lw16_els[lw16i].tag !== "BF2F") { lw16_fok = false; continue; }
+ var lw16M = BindEs10xSingleRequest.parseBerTlv(lw16_els[lw16i].value);
+ var lw16_f = {};
+ for (var lw16j = 0; lw16j < lw16M.length; lw16j++) {
+ if (lw16_f[lw16M[lw16j].tag] === undefined) { lw16_f[lw16M[lw16j].tag] = lw16M[lw16j].value; }
+ }
+ if (lw16_f["80"] === undefined) { lw16_fok = false; }
+ var lw16AddrHex = lw16_f["0C"];
+ var lw16AddrStr = "";
+ if (typeof lw16AddrHex === "string" && lw16AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw16AddrHex)) {
+ for (var lw16AddrI = 0; lw16AddrI < lw16AddrHex.length; lw16AddrI += 2) {
+ lw16AddrStr += String.fromCharCode(parseInt(lw16AddrHex.substr(lw16AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw16AddrStr)) { lw16_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw16_f["81"] !== "0640") { lw16_fok = false; } // operation
+ if (lw16_f["5A"] !== "989209012143658709F5") { lw16_fok = false; } // iccid
+ }
+ bind.checkData("S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw16_fok ? "1" : "0");
+
+ // 步骤 17:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla17 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", "BF280481020520", "00", "9000");
+ bind.checkData("S17-C1 SW", "9000", s17.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw17_brtag === "A0" && lw17_els.length === 0) ? "1" : "0");
+
+ // 步骤 18:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla18 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s18 = bind.sendApdu(sdCla18, "E2", "91", "00", "BF280481020410", "00", "9000");
+ bind.checkData("S18-C1 SW", "9000", s18.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw18T = BindEs10xSingleRequest.parseBerTlv(s18.resp);
+ var lw18Ok0 = lw18T.length === 1 && lw18T[0].tag === "BF28";
+ var lw18_br = lw18Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw18T[0].value) : [];
+ var lw18_brtag = lw18_br.length === 1 ? lw18_br[0].tag : "";
+ var lw18_els = lw18_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw18_br[0].value) : [];
+ bind.checkData("S18-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw18_brtag === "A0" && lw18_els.length === 0) ? "1" : "0");
+
+ // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla19 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+ bind.checkData("S19-C1 SW", "9000", s19.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw19_brtag === "A0" && lw19_els.length === 1) ? "1" : "0");
+ var lw19_fok = lw19_brtag === "A0" && lw19_els.length > 0;
+ for (var lw19i = 0; lw19i < lw19_els.length; lw19i++) {
+ if (lw19_els[lw19i].tag !== "BF2F") { lw19_fok = false; continue; }
+ var lw19M = BindEs10xSingleRequest.parseBerTlv(lw19_els[lw19i].value);
+ var lw19_f = {};
+ for (var lw19j = 0; lw19j < lw19M.length; lw19j++) {
+ if (lw19_f[lw19M[lw19j].tag] === undefined) { lw19_f[lw19M[lw19j].tag] = lw19M[lw19j].value; }
+ }
+ if (lw19_f["80"] === undefined) { lw19_fok = false; }
+ var lw19AddrHex = lw19_f["0C"];
+ var lw19AddrStr = "";
+ if (typeof lw19AddrHex === "string" && lw19AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw19AddrHex)) {
+ for (var lw19AddrI = 0; lw19AddrI < lw19AddrHex.length; lw19AddrI += 2) {
+ lw19AddrStr += String.fromCharCode(parseInt(lw19AddrHex.substr(lw19AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw19AddrStr)) { lw19_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw19_f["81"] !== "0640") { lw19_fok = false; } // operation
+ if (lw19_f["5A"] !== "989209012143658709F5") { lw19_fok = false; } // iccid
+ }
+ bind.checkData("S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw19_fok ? "1" : "0");
+
+ // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla20 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF280481020430", "00", "9000");
+ bind.checkData("S20-C1 SW", "9000", s20.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw20_brtag === "A0" && lw20_els.length === 0) ? "1" : "0");
+
+ // 步骤 21:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla21 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", "BF280481020560", "00", "9000");
+ bind.checkData("S21-C1 SW", "9000", s21.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw21T = BindEs10xSingleRequest.parseBerTlv(s21.resp);
+ var lw21Ok0 = lw21T.length === 1 && lw21T[0].tag === "BF28";
+ var lw21_br = lw21Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw21T[0].value) : [];
+ var lw21_brtag = lw21_br.length === 1 ? lw21_br[0].tag : "";
+ var lw21_els = lw21_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw21_br[0].value) : [];
+ bind.checkData("S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw21_brtag === "A0" && lw21_els.length === 1) ? "1" : "0");
+ var lw21_fok = lw21_brtag === "A0" && lw21_els.length > 0;
+ for (var lw21i = 0; lw21i < lw21_els.length; lw21i++) {
+ if (lw21_els[lw21i].tag !== "BF2F") { lw21_fok = false; continue; }
+ var lw21M = BindEs10xSingleRequest.parseBerTlv(lw21_els[lw21i].value);
+ var lw21_f = {};
+ for (var lw21j = 0; lw21j < lw21M.length; lw21j++) {
+ if (lw21_f[lw21M[lw21j].tag] === undefined) { lw21_f[lw21M[lw21j].tag] = lw21M[lw21j].value; }
+ }
+ if (lw21_f["80"] === undefined) { lw21_fok = false; }
+ var lw21AddrHex = lw21_f["0C"];
+ var lw21AddrStr = "";
+ if (typeof lw21AddrHex === "string" && lw21AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw21AddrHex)) {
+ for (var lw21AddrI = 0; lw21AddrI < lw21AddrHex.length; lw21AddrI += 2) {
+ lw21AddrStr += String.fromCharCode(parseInt(lw21AddrHex.substr(lw21AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw21AddrStr)) { lw21_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw21_f["81"] !== "0640") { lw21_fok = false; } // operation
+ if (lw21_f["5A"] !== "989209012143658709F5") { lw21_fok = false; } // iccid
+ }
+ bind.checkData("S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw21_fok ? "1" : "0");
+
+ // 步骤 22:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla22 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF2804810205E0", "00", "9000");
+ bind.checkData("S22-C1 SW", "9000", s22.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw22_brtag === "A0" && lw22_els.length === 1) ? "1" : "0");
+ var lw22_fok = lw22_brtag === "A0" && lw22_els.length > 0;
+ for (var lw22i = 0; lw22i < lw22_els.length; lw22i++) {
+ if (lw22_els[lw22i].tag !== "BF2F") { lw22_fok = false; continue; }
+ var lw22M = BindEs10xSingleRequest.parseBerTlv(lw22_els[lw22i].value);
+ var lw22_f = {};
+ for (var lw22j = 0; lw22j < lw22M.length; lw22j++) {
+ if (lw22_f[lw22M[lw22j].tag] === undefined) { lw22_f[lw22M[lw22j].tag] = lw22M[lw22j].value; }
+ }
+ if (lw22_f["80"] === undefined) { lw22_fok = false; }
+ var lw22AddrHex = lw22_f["0C"];
+ var lw22AddrStr = "";
+ if (typeof lw22AddrHex === "string" && lw22AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw22AddrHex)) {
+ for (var lw22AddrI = 0; lw22AddrI < lw22AddrHex.length; lw22AddrI += 2) {
+ lw22AddrStr += String.fromCharCode(parseInt(lw22AddrHex.substr(lw22AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw22AddrStr)) { lw22_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw22_f["81"] !== "0640") { lw22_fok = false; } // operation
+ if (lw22_f["5A"] !== "989209012143658709F5") { lw22_fok = false; } // iccid
+ }
+ bind.checkData("S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw22_fok ? "1" : "0");
+
+ // 步骤 23:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla23 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S23-C1 SW", "9000", s23.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw23T = BindEs10xSingleRequest.parseBerTlv(s23.resp);
+ var lw23Ok0 = lw23T.length === 1 && lw23T[0].tag === "BF28";
+ var lw23_br = lw23Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw23T[0].value) : [];
+ var lw23_brtag = lw23_br.length === 1 ? lw23_br[0].tag : "";
+ var lw23_els = lw23_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw23_br[0].value) : [];
+ bind.checkData("S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw23_brtag === "A0" && lw23_els.length === 1) ? "1" : "0");
+ var lw23_fok = lw23_brtag === "A0" && lw23_els.length > 0;
+ for (var lw23i = 0; lw23i < lw23_els.length; lw23i++) {
+ if (lw23_els[lw23i].tag !== "BF2F") { lw23_fok = false; continue; }
+ var lw23M = BindEs10xSingleRequest.parseBerTlv(lw23_els[lw23i].value);
+ var lw23_f = {};
+ for (var lw23j = 0; lw23j < lw23M.length; lw23j++) {
+ if (lw23_f[lw23M[lw23j].tag] === undefined) { lw23_f[lw23M[lw23j].tag] = lw23M[lw23j].value; }
+ }
+ if (lw23_f["80"] === undefined) { lw23_fok = false; }
+ var lw23AddrHex = lw23_f["0C"];
+ var lw23AddrStr = "";
+ if (typeof lw23AddrHex === "string" && lw23AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw23AddrHex)) {
+ for (var lw23AddrI = 0; lw23AddrI < lw23AddrHex.length; lw23AddrI += 2) {
+ lw23AddrStr += String.fromCharCode(parseInt(lw23AddrHex.substr(lw23AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw23AddrStr)) { lw23_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw23_f["81"] !== "0520") { lw23_fok = false; } // operation
+ if (lw23_f["5A"] !== "989209012143658709F5") { lw23_fok = false; } // iccid
+ }
+ bind.checkData("S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT element fields", "1", lw23_fok ? "1" : "0");
+
+ // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla24 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2800", "00", "9000");
+ bind.checkData("S24-C1 SW", "9000", s24.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw24_brtag === "A0" && lw24_els.length === 1) ? "1" : "0");
+ var lw24_fok = lw24_brtag === "A0" && lw24_els.length > 0;
+ for (var lw24i = 0; lw24i < lw24_els.length; lw24i++) {
+ if (lw24_els[lw24i].tag !== "BF2F") { lw24_fok = false; continue; }
+ var lw24M = BindEs10xSingleRequest.parseBerTlv(lw24_els[lw24i].value);
+ var lw24_f = {};
+ for (var lw24j = 0; lw24j < lw24M.length; lw24j++) {
+ if (lw24_f[lw24M[lw24j].tag] === undefined) { lw24_f[lw24M[lw24j].tag] = lw24M[lw24j].value; }
+ }
+ if (lw24_f["80"] === undefined) { lw24_fok = false; }
+ var lw24AddrHex = lw24_f["0C"];
+ var lw24AddrStr = "";
+ if (typeof lw24AddrHex === "string" && lw24AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw24AddrHex)) {
+ for (var lw24AddrI = 0; lw24AddrI < lw24AddrHex.length; lw24AddrI += 2) {
+ lw24AddrStr += String.fromCharCode(parseInt(lw24AddrHex.substr(lw24AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw24AddrStr)) { lw24_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw24_f["81"] !== "0520") { lw24_fok = false; } // operation
+ if (lw24_f["5A"] !== "989209012143658709F5") { lw24_fok = false; } // iccid
+ }
+ bind.checkData("S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw24_fok ? "1" : "0");
+
+ // 步骤 25:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla25 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2803810100", "00", "9000");
+ bind.checkData("S25-C1 SW", "9000", s25.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 二选一 branch/count", "1", (lw25_brtag === "A0" && lw25_els.length === 0) || (lw25_brtag === "81" && lw25_br.length === 1 && lw25_br[0].value === "7F") ? "1" : "0");
+
+ // 步骤 26:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla26 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s26 = bind.sendApdu(sdCla26, "E2", "91", "00", "BF280481020780", "00", "9000");
+ bind.checkData("S26-C1 SW", "9000", s26.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw26T = BindEs10xSingleRequest.parseBerTlv(s26.resp);
+ var lw26Ok0 = lw26T.length === 1 && lw26T[0].tag === "BF28";
+ var lw26_br = lw26Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw26T[0].value) : [];
+ var lw26_brtag = lw26_br.length === 1 ? lw26_br[0].tag : "";
+ var lw26_els = lw26_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw26_br[0].value) : [];
+ bind.checkData("S26-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw26_brtag === "A0" && lw26_els.length === 0) ? "1" : "0");
+
+ // 步骤 27:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla27 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF280481020640", "00", "9000");
+ bind.checkData("S27-C1 SW", "9000", s27.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw27_brtag === "A0" && lw27_els.length === 0) ? "1" : "0");
+
+ // 步骤 28:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla28 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", "BF280481020520", "00", "9000");
+ bind.checkData("S28-C1 SW", "9000", s28.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw28T = BindEs10xSingleRequest.parseBerTlv(s28.resp);
+ var lw28Ok0 = lw28T.length === 1 && lw28T[0].tag === "BF28";
+ var lw28_br = lw28Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw28T[0].value) : [];
+ var lw28_brtag = lw28_br.length === 1 ? lw28_br[0].tag : "";
+ var lw28_els = lw28_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw28_br[0].value) : [];
+ bind.checkData("S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw28_brtag === "A0" && lw28_els.length === 1) ? "1" : "0");
+ var lw28_fok = lw28_brtag === "A0" && lw28_els.length > 0;
+ for (var lw28i = 0; lw28i < lw28_els.length; lw28i++) {
+ if (lw28_els[lw28i].tag !== "BF2F") { lw28_fok = false; continue; }
+ var lw28M = BindEs10xSingleRequest.parseBerTlv(lw28_els[lw28i].value);
+ var lw28_f = {};
+ for (var lw28j = 0; lw28j < lw28M.length; lw28j++) {
+ if (lw28_f[lw28M[lw28j].tag] === undefined) { lw28_f[lw28M[lw28j].tag] = lw28M[lw28j].value; }
+ }
+ if (lw28_f["80"] === undefined) { lw28_fok = false; }
+ var lw28AddrHex = lw28_f["0C"];
+ var lw28AddrStr = "";
+ if (typeof lw28AddrHex === "string" && lw28AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw28AddrHex)) {
+ for (var lw28AddrI = 0; lw28AddrI < lw28AddrHex.length; lw28AddrI += 2) {
+ lw28AddrStr += String.fromCharCode(parseInt(lw28AddrHex.substr(lw28AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw28AddrStr)) { lw28_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw28_f["81"] !== "0520") { lw28_fok = false; } // operation
+ if (lw28_f["5A"] !== "989209012143658709F5") { lw28_fok = false; } // iccid
+ }
+ bind.checkData("S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw28_fok ? "1" : "0");
+
+ // 步骤 29:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla29 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s29 = bind.sendApdu(sdCla29, "E2", "91", "00", "BF280481020410", "00", "9000");
+ bind.checkData("S29-C1 SW", "9000", s29.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw29_brtag === "A0" && lw29_els.length === 0) ? "1" : "0");
+
+ // 步骤 30:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla30 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+ bind.checkData("S30-C1 SW", "9000", s30.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw30_brtag === "A0" && lw30_els.length === 0) ? "1" : "0");
+
+ // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla31 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF280481020430", "00", "9000");
+ bind.checkData("S31-C1 SW", "9000", s31.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw31T = BindEs10xSingleRequest.parseBerTlv(s31.resp);
+ var lw31Ok0 = lw31T.length === 1 && lw31T[0].tag === "BF28";
+ var lw31_br = lw31Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw31T[0].value) : [];
+ var lw31_brtag = lw31_br.length === 1 ? lw31_br[0].tag : "";
+ var lw31_els = lw31_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw31_br[0].value) : [];
+ bind.checkData("S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw31_brtag === "A0" && lw31_els.length === 1) ? "1" : "0");
+ var lw31_fok = lw31_brtag === "A0" && lw31_els.length > 0;
+ for (var lw31i = 0; lw31i < lw31_els.length; lw31i++) {
+ if (lw31_els[lw31i].tag !== "BF2F") { lw31_fok = false; continue; }
+ var lw31M = BindEs10xSingleRequest.parseBerTlv(lw31_els[lw31i].value);
+ var lw31_f = {};
+ for (var lw31j = 0; lw31j < lw31M.length; lw31j++) {
+ if (lw31_f[lw31M[lw31j].tag] === undefined) { lw31_f[lw31M[lw31j].tag] = lw31M[lw31j].value; }
+ }
+ if (lw31_f["80"] === undefined) { lw31_fok = false; }
+ var lw31AddrHex = lw31_f["0C"];
+ var lw31AddrStr = "";
+ if (typeof lw31AddrHex === "string" && lw31AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw31AddrHex)) {
+ for (var lw31AddrI = 0; lw31AddrI < lw31AddrHex.length; lw31AddrI += 2) {
+ lw31AddrStr += String.fromCharCode(parseInt(lw31AddrHex.substr(lw31AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw31AddrStr)) { lw31_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw31_f["81"] !== "0520") { lw31_fok = false; } // operation
+ if (lw31_f["5A"] !== "989209012143658709F5") { lw31_fok = false; } // iccid
+ }
+ bind.checkData("S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw31_fok ? "1" : "0");
+
+ // 步骤 32:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla32 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF280481020560", "00", "9000");
+ bind.checkData("S32-C1 SW", "9000", s32.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw32_brtag === "A0" && lw32_els.length === 1) ? "1" : "0");
+ var lw32_fok = lw32_brtag === "A0" && lw32_els.length > 0;
+ for (var lw32i = 0; lw32i < lw32_els.length; lw32i++) {
+ if (lw32_els[lw32i].tag !== "BF2F") { lw32_fok = false; continue; }
+ var lw32M = BindEs10xSingleRequest.parseBerTlv(lw32_els[lw32i].value);
+ var lw32_f = {};
+ for (var lw32j = 0; lw32j < lw32M.length; lw32j++) {
+ if (lw32_f[lw32M[lw32j].tag] === undefined) { lw32_f[lw32M[lw32j].tag] = lw32M[lw32j].value; }
+ }
+ if (lw32_f["80"] === undefined) { lw32_fok = false; }
+ var lw32AddrHex = lw32_f["0C"];
+ var lw32AddrStr = "";
+ if (typeof lw32AddrHex === "string" && lw32AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw32AddrHex)) {
+ for (var lw32AddrI = 0; lw32AddrI < lw32AddrHex.length; lw32AddrI += 2) {
+ lw32AddrStr += String.fromCharCode(parseInt(lw32AddrHex.substr(lw32AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw32AddrStr)) { lw32_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw32_f["81"] !== "0520") { lw32_fok = false; } // operation
+ if (lw32_f["5A"] !== "989209012143658709F5") { lw32_fok = false; } // iccid
+ }
+ bind.checkData("S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw32_fok ? "1" : "0");
+
+ // 步骤 33:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla33 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s33 = bind.sendApdu(sdCla33, "E2", "91", "00", "BF2804810205E0", "00", "9000");
+ bind.checkData("S33-C1 SW", "9000", s33.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw33T = BindEs10xSingleRequest.parseBerTlv(s33.resp);
+ var lw33Ok0 = lw33T.length === 1 && lw33T[0].tag === "BF28";
+ var lw33_br = lw33Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw33T[0].value) : [];
+ var lw33_brtag = lw33_br.length === 1 ? lw33_br[0].tag : "";
+ var lw33_els = lw33_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw33_br[0].value) : [];
+ bind.checkData("S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw33_brtag === "A0" && lw33_els.length === 1) ? "1" : "0");
+ var lw33_fok = lw33_brtag === "A0" && lw33_els.length > 0;
+ for (var lw33i = 0; lw33i < lw33_els.length; lw33i++) {
+ if (lw33_els[lw33i].tag !== "BF2F") { lw33_fok = false; continue; }
+ var lw33M = BindEs10xSingleRequest.parseBerTlv(lw33_els[lw33i].value);
+ var lw33_f = {};
+ for (var lw33j = 0; lw33j < lw33M.length; lw33j++) {
+ if (lw33_f[lw33M[lw33j].tag] === undefined) { lw33_f[lw33M[lw33j].tag] = lw33M[lw33j].value; }
+ }
+ if (lw33_f["80"] === undefined) { lw33_fok = false; }
+ var lw33AddrHex = lw33_f["0C"];
+ var lw33AddrStr = "";
+ if (typeof lw33AddrHex === "string" && lw33AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw33AddrHex)) {
+ for (var lw33AddrI = 0; lw33AddrI < lw33AddrHex.length; lw33AddrI += 2) {
+ lw33AddrStr += String.fromCharCode(parseInt(lw33AddrHex.substr(lw33AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw33AddrStr)) { lw33_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw33_f["81"] !== "0520") { lw33_fok = false; } // operation
+ if (lw33_f["5A"] !== "989209012143658709F5") { lw33_fok = false; } // iccid
+ }
+ bind.checkData("S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw33_fok ? "1" : "0");
+
+ // 步骤 34:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla34 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.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.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw34_brtag === "A0" && lw34_els.length === 1) ? "1" : "0");
+ var lw34_fok = lw34_brtag === "A0" && lw34_els.length > 0;
+ for (var lw34i = 0; lw34i < lw34_els.length; lw34i++) {
+ if (lw34_els[lw34i].tag !== "BF2F") { lw34_fok = false; continue; }
+ var lw34M = BindEs10xSingleRequest.parseBerTlv(lw34_els[lw34i].value);
+ var lw34_f = {};
+ for (var lw34j = 0; lw34j < lw34M.length; lw34j++) {
+ if (lw34_f[lw34M[lw34j].tag] === undefined) { lw34_f[lw34M[lw34j].tag] = lw34M[lw34j].value; }
+ }
+ if (lw34_f["80"] === undefined) { lw34_fok = false; }
+ var lw34AddrHex = lw34_f["0C"];
+ var lw34AddrStr = "";
+ if (typeof lw34AddrHex === "string" && lw34AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw34AddrHex)) {
+ for (var lw34AddrI = 0; lw34AddrI < lw34AddrHex.length; lw34AddrI += 2) {
+ lw34AddrStr += String.fromCharCode(parseInt(lw34AddrHex.substr(lw34AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw34AddrStr)) { lw34_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw34_f["81"] !== "0410") { lw34_fok = false; } // operation
+ if (lw34_f["5A"] !== "989209012143658709F5") { lw34_fok = false; } // iccid
+ }
+ bind.checkData("S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT element fields", "1", lw34_fok ? "1" : "0");
+
+ // 步骤 35:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla35 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF2800", "00", "9000");
+ bind.checkData("S35-C1 SW", "9000", s35.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw35_brtag === "A0" && lw35_els.length === 1) ? "1" : "0");
+ var lw35_fok = lw35_brtag === "A0" && lw35_els.length > 0;
+ for (var lw35i = 0; lw35i < lw35_els.length; lw35i++) {
+ if (lw35_els[lw35i].tag !== "BF2F") { lw35_fok = false; continue; }
+ var lw35M = BindEs10xSingleRequest.parseBerTlv(lw35_els[lw35i].value);
+ var lw35_f = {};
+ for (var lw35j = 0; lw35j < lw35M.length; lw35j++) {
+ if (lw35_f[lw35M[lw35j].tag] === undefined) { lw35_f[lw35M[lw35j].tag] = lw35M[lw35j].value; }
+ }
+ if (lw35_f["80"] === undefined) { lw35_fok = false; }
+ var lw35AddrHex = lw35_f["0C"];
+ var lw35AddrStr = "";
+ if (typeof lw35AddrHex === "string" && lw35AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw35AddrHex)) {
+ for (var lw35AddrI = 0; lw35AddrI < lw35AddrHex.length; lw35AddrI += 2) {
+ lw35AddrStr += String.fromCharCode(parseInt(lw35AddrHex.substr(lw35AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw35AddrStr)) { lw35_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw35_f["81"] !== "0410") { lw35_fok = false; } // operation
+ if (lw35_f["5A"] !== "989209012143658709F5") { lw35_fok = false; } // iccid
+ }
+ bind.checkData("S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw35_fok ? "1" : "0");
+
+ // 步骤 36:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla36 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", "BF2803810100", "00", "9000");
+ bind.checkData("S36-C1 SW", "9000", s36.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw36T = BindEs10xSingleRequest.parseBerTlv(s36.resp);
+ var lw36Ok0 = lw36T.length === 1 && lw36T[0].tag === "BF28";
+ var lw36_br = lw36Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw36T[0].value) : [];
+ var lw36_brtag = lw36_br.length === 1 ? lw36_br[0].tag : "";
+ var lw36_els = lw36_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw36_br[0].value) : [];
+ bind.checkData("S36-C2 R-APDU 二选一 branch/count", "1", (lw36_brtag === "A0" && lw36_els.length === 0) || (lw36_brtag === "81" && lw36_br.length === 1 && lw36_br[0].value === "7F") ? "1" : "0");
+
+ // 步骤 37:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla37 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF280481020780", "00", "9000");
+ bind.checkData("S37-C1 SW", "9000", s37.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw37_brtag === "A0" && lw37_els.length === 0) ? "1" : "0");
+
+ // 步骤 38:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla38 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s38 = bind.sendApdu(sdCla38, "E2", "91", "00", "BF280481020640", "00", "9000");
+ bind.checkData("S38-C1 SW", "9000", s38.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw38T = BindEs10xSingleRequest.parseBerTlv(s38.resp);
+ var lw38Ok0 = lw38T.length === 1 && lw38T[0].tag === "BF28";
+ var lw38_br = lw38Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw38T[0].value) : [];
+ var lw38_brtag = lw38_br.length === 1 ? lw38_br[0].tag : "";
+ var lw38_els = lw38_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw38_br[0].value) : [];
+ bind.checkData("S38-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw38_brtag === "A0" && lw38_els.length === 0) ? "1" : "0");
+
+ // 步骤 39:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla39 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s39 = bind.sendApdu(sdCla39, "E2", "91", "00", "BF280481020520", "00", "9000");
+ bind.checkData("S39-C1 SW", "9000", s39.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw39_brtag === "A0" && lw39_els.length === 0) ? "1" : "0");
+
+ // 步骤 40:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla40 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s40 = bind.sendApdu(sdCla40, "E2", "91", "00", "BF280481020410", "00", "9000");
+ bind.checkData("S40-C1 SW", "9000", s40.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw40_brtag === "A0" && lw40_els.length === 1) ? "1" : "0");
+ var lw40_fok = lw40_brtag === "A0" && lw40_els.length > 0;
+ for (var lw40i = 0; lw40i < lw40_els.length; lw40i++) {
+ if (lw40_els[lw40i].tag !== "BF2F") { lw40_fok = false; continue; }
+ var lw40M = BindEs10xSingleRequest.parseBerTlv(lw40_els[lw40i].value);
+ var lw40_f = {};
+ for (var lw40j = 0; lw40j < lw40M.length; lw40j++) {
+ if (lw40_f[lw40M[lw40j].tag] === undefined) { lw40_f[lw40M[lw40j].tag] = lw40M[lw40j].value; }
+ }
+ if (lw40_f["80"] === undefined) { lw40_fok = false; }
+ var lw40AddrHex = lw40_f["0C"];
+ var lw40AddrStr = "";
+ if (typeof lw40AddrHex === "string" && lw40AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw40AddrHex)) {
+ for (var lw40AddrI = 0; lw40AddrI < lw40AddrHex.length; lw40AddrI += 2) {
+ lw40AddrStr += String.fromCharCode(parseInt(lw40AddrHex.substr(lw40AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw40AddrStr)) { lw40_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw40_f["81"] !== "0410") { lw40_fok = false; } // operation
+ if (lw40_f["5A"] !== "989209012143658709F5") { lw40_fok = false; } // iccid
+ }
+ bind.checkData("S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw40_fok ? "1" : "0");
+
+ // 步骤 41:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla41 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+ bind.checkData("S41-C1 SW", "9000", s41.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw41T = BindEs10xSingleRequest.parseBerTlv(s41.resp);
+ var lw41Ok0 = lw41T.length === 1 && lw41T[0].tag === "BF28";
+ var lw41_br = lw41Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw41T[0].value) : [];
+ var lw41_brtag = lw41_br.length === 1 ? lw41_br[0].tag : "";
+ var lw41_els = lw41_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw41_br[0].value) : [];
+ bind.checkData("S41-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw41_brtag === "A0" && lw41_els.length === 0) ? "1" : "0");
+
+ // 步骤 42:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla42 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s42 = bind.sendApdu(sdCla42, "E2", "91", "00", "BF280481020430", "00", "9000");
+ bind.checkData("S42-C1 SW", "9000", s42.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw42_brtag === "A0" && lw42_els.length === 1) ? "1" : "0");
+ var lw42_fok = lw42_brtag === "A0" && lw42_els.length > 0;
+ for (var lw42i = 0; lw42i < lw42_els.length; lw42i++) {
+ if (lw42_els[lw42i].tag !== "BF2F") { lw42_fok = false; continue; }
+ var lw42M = BindEs10xSingleRequest.parseBerTlv(lw42_els[lw42i].value);
+ var lw42_f = {};
+ for (var lw42j = 0; lw42j < lw42M.length; lw42j++) {
+ if (lw42_f[lw42M[lw42j].tag] === undefined) { lw42_f[lw42M[lw42j].tag] = lw42M[lw42j].value; }
+ }
+ if (lw42_f["80"] === undefined) { lw42_fok = false; }
+ var lw42AddrHex = lw42_f["0C"];
+ var lw42AddrStr = "";
+ if (typeof lw42AddrHex === "string" && lw42AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw42AddrHex)) {
+ for (var lw42AddrI = 0; lw42AddrI < lw42AddrHex.length; lw42AddrI += 2) {
+ lw42AddrStr += String.fromCharCode(parseInt(lw42AddrHex.substr(lw42AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw42AddrStr)) { lw42_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw42_f["81"] !== "0410") { lw42_fok = false; } // operation
+ if (lw42_f["5A"] !== "989209012143658709F5") { lw42_fok = false; } // iccid
+ }
+ bind.checkData("S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw42_fok ? "1" : "0");
+
+ // 步骤 43:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla43 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s43 = bind.sendApdu(sdCla43, "E2", "91", "00", "BF280481020560", "00", "9000");
+ bind.checkData("S43-C1 SW", "9000", s43.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw43T = BindEs10xSingleRequest.parseBerTlv(s43.resp);
+ var lw43Ok0 = lw43T.length === 1 && lw43T[0].tag === "BF28";
+ var lw43_br = lw43Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw43T[0].value) : [];
+ var lw43_brtag = lw43_br.length === 1 ? lw43_br[0].tag : "";
+ var lw43_els = lw43_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw43_br[0].value) : [];
+ bind.checkData("S43-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw43_brtag === "A0" && lw43_els.length === 0) ? "1" : "0");
+
+ // 步骤 44:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla44 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF280481020470", "00", "9000");
+ bind.checkData("S44-C1 SW", "9000", s44.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw44_brtag === "A0" && lw44_els.length === 1) ? "1" : "0");
+ var lw44_fok = lw44_brtag === "A0" && lw44_els.length > 0;
+ for (var lw44i = 0; lw44i < lw44_els.length; lw44i++) {
+ if (lw44_els[lw44i].tag !== "BF2F") { lw44_fok = false; continue; }
+ var lw44M = BindEs10xSingleRequest.parseBerTlv(lw44_els[lw44i].value);
+ var lw44_f = {};
+ for (var lw44j = 0; lw44j < lw44M.length; lw44j++) {
+ if (lw44_f[lw44M[lw44j].tag] === undefined) { lw44_f[lw44M[lw44j].tag] = lw44M[lw44j].value; }
+ }
+ if (lw44_f["80"] === undefined) { lw44_fok = false; }
+ var lw44AddrHex = lw44_f["0C"];
+ var lw44AddrStr = "";
+ if (typeof lw44AddrHex === "string" && lw44AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw44AddrHex)) {
+ for (var lw44AddrI = 0; lw44AddrI < lw44AddrHex.length; lw44AddrI += 2) {
+ lw44AddrStr += String.fromCharCode(parseInt(lw44AddrHex.substr(lw44AddrI, 2), 16));
+ }
+ }
+ if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw44AddrStr)) { lw44_fok = false; }
+ // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+ if (lw44_f["81"] !== "0410") { lw44_fok = false; } // operation
+ if (lw44_f["5A"] !== "989209012143658709F5") { lw44_fok = false; } // iccid
+ }
+ bind.checkData("S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw44_fok ? "1" : "0");
+
+ // 步骤 45:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla45 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s45 = bind.sendApdu(sdCla45, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+ bind.checkData("S45-C1 SW", "9000", s45.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw45T = BindEs10xSingleRequest.parseBerTlv(s45.resp);
+ var lw45Ok0 = lw45T.length === 1 && lw45T[0].tag === "BF28";
+ var lw45_br = lw45Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw45T[0].value) : [];
+ var lw45_brtag = lw45_br.length === 1 ? lw45_br[0].tag : "";
+ var lw45_els = lw45_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw45_br[0].value) : [];
+ bind.checkData("S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata branch/count", "1", (lw45_brtag === "A0" && lw45_els.length === 2) ? "1" : "0");
+ var lw45_feok = lw45_brtag === "A0" && lw45_els.length === 2;
+ var lw45_fobs = [];
+ for (var lw45i = 0; lw45i < lw45_els.length; lw45i++) {
+ if (lw45_els[lw45i].tag !== "BF2F") { lw45_feok = false; continue; }
+ var lw45M = BindEs10xSingleRequest.parseBerTlv(lw45_els[lw45i].value);
+ var lw45_f = {};
+ for (var lw45j = 0; lw45j < lw45M.length; lw45j++) {
+ if (lw45_f[lw45M[lw45j].tag] === undefined) { lw45_f[lw45M[lw45j].tag] = lw45M[lw45j].value; }
+ }
+ if (lw45_f["80"] === undefined) { lw45_feok = false; }
+ lw45_fobs.push(lw45_f);
+ }
+ var lw45_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
+ for (var lw45k = 0; lw45k < lw45_fexp.length; lw45k++) {
+ var lw45mc = 0;
+ for (var lw45m = 0; lw45m < lw45_fobs.length; lw45m++) {
+ if (lw45_fobs[lw45m]["81"] === lw45_fexp[lw45k].op && lw45_fobs[lw45m]["0C"] === lw45_fexp[lw45k].addr && lw45_fobs[lw45m]["5A"] === lw45_fexp[lw45k].iccid) { lw45mc++; }
+ }
+ if (lw45mc !== 1) { lw45_feok = false; }
+ }
+ bind.checkData("S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata element fields", "1", lw45_feok ? "1" : "0");
+
+ // 步骤 46:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla46 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s46 = bind.sendApdu(sdCla46, "E2", "91", "00", "BF2800", "00", "9000");
+ bind.checkData("S46-C1 SW", "9000", s46.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw46_brtag === "A0" && lw46_els.length === 2) ? "1" : "0");
+ var lw46_feok = lw46_brtag === "A0" && lw46_els.length === 2;
+ var lw46_fobs = [];
+ for (var lw46i = 0; lw46i < lw46_els.length; lw46i++) {
+ if (lw46_els[lw46i].tag !== "BF2F") { lw46_feok = false; continue; }
+ var lw46M = BindEs10xSingleRequest.parseBerTlv(lw46_els[lw46i].value);
+ var lw46_f = {};
+ for (var lw46j = 0; lw46j < lw46M.length; lw46j++) {
+ if (lw46_f[lw46M[lw46j].tag] === undefined) { lw46_f[lw46M[lw46j].tag] = lw46M[lw46j].value; }
+ }
+ if (lw46_f["80"] === undefined) { lw46_feok = false; }
+ lw46_fobs.push(lw46_f);
+ }
+ var lw46_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
+ for (var lw46k = 0; lw46k < lw46_fexp.length; lw46k++) {
+ var lw46mc = 0;
+ for (var lw46m = 0; lw46m < lw46_fobs.length; lw46m++) {
+ if (lw46_fobs[lw46m]["81"] === lw46_fexp[lw46k].op && lw46_fobs[lw46m]["0C"] === lw46_fexp[lw46k].addr && lw46_fobs[lw46m]["5A"] === lw46_fexp[lw46k].iccid) { lw46mc++; }
+ }
+ if (lw46mc !== 1) { lw46_feok = false; }
+ }
+ bind.checkData("S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw46_feok ? "1" : "0");
+
+ // 步骤 47:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla47 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s47 = bind.sendApdu(sdCla47, "E2", "91", "00", "BF2803810100", "00", "9000");
+ bind.checkData("S47-C1 SW", "9000", s47.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw47T = BindEs10xSingleRequest.parseBerTlv(s47.resp);
+ var lw47Ok0 = lw47T.length === 1 && lw47T[0].tag === "BF28";
+ var lw47_br = lw47Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw47T[0].value) : [];
+ var lw47_brtag = lw47_br.length === 1 ? lw47_br[0].tag : "";
+ var lw47_els = lw47_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw47_br[0].value) : [];
+ bind.checkData("S47-C2 R-APDU 二选一 branch/count", "1", (lw47_brtag === "A0" && lw47_els.length === 0) || (lw47_brtag === "81" && lw47_br.length === 1 && lw47_br[0].value === "7F") ? "1" : "0");
+
+ // 步骤 48:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla48 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", "BF280481020780", "00", "9000");
+ bind.checkData("S48-C1 SW", "9000", s48.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw48_brtag === "A0" && lw48_els.length === 2) ? "1" : "0");
+ var lw48_feok = lw48_brtag === "A0" && lw48_els.length === 2;
+ var lw48_fobs = [];
+ for (var lw48i = 0; lw48i < lw48_els.length; lw48i++) {
+ if (lw48_els[lw48i].tag !== "BF2F") { lw48_feok = false; continue; }
+ var lw48M = BindEs10xSingleRequest.parseBerTlv(lw48_els[lw48i].value);
+ var lw48_f = {};
+ for (var lw48j = 0; lw48j < lw48M.length; lw48j++) {
+ if (lw48_f[lw48M[lw48j].tag] === undefined) { lw48_f[lw48M[lw48j].tag] = lw48M[lw48j].value; }
+ }
+ if (lw48_f["80"] === undefined) { lw48_feok = false; }
+ lw48_fobs.push(lw48_f);
+ }
+ var lw48_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
+ for (var lw48k = 0; lw48k < lw48_fexp.length; lw48k++) {
+ var lw48mc = 0;
+ for (var lw48m = 0; lw48m < lw48_fobs.length; lw48m++) {
+ if (lw48_fobs[lw48m]["81"] === lw48_fexp[lw48k].op && lw48_fobs[lw48m]["0C"] === lw48_fexp[lw48k].addr && lw48_fobs[lw48m]["5A"] === lw48_fexp[lw48k].iccid) { lw48mc++; }
+ }
+ if (lw48mc !== 1) { lw48_feok = false; }
+ }
+ bind.checkData("S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw48_feok ? "1" : "0");
+
+ // 步骤 49:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla49 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", "BF280481020640", "00", "9000");
+ bind.checkData("S49-C1 SW", "9000", s49.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw49T = BindEs10xSingleRequest.parseBerTlv(s49.resp);
+ var lw49Ok0 = lw49T.length === 1 && lw49T[0].tag === "BF28";
+ var lw49_br = lw49Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw49T[0].value) : [];
+ var lw49_brtag = lw49_br.length === 1 ? lw49_br[0].tag : "";
+ var lw49_els = lw49_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw49_br[0].value) : [];
+ bind.checkData("S49-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw49_brtag === "A0" && lw49_els.length === 0) ? "1" : "0");
+
+ // 步骤 50:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla50 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s50 = bind.sendApdu(sdCla50, "E2", "91", "00", "BF280481020520", "00", "9000");
+ bind.checkData("S50-C1 SW", "9000", s50.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,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-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw50_brtag === "A0" && lw50_els.length === 0) ? "1" : "0");
+
+ // 步骤 51:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla51 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s51 = bind.sendApdu(sdCla51, "E2", "91", "00", "BF280481020410", "00", "9000");
+ bind.checkData("S51-C1 SW", "9000", s51.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw51T = BindEs10xSingleRequest.parseBerTlv(s51.resp);
+ var lw51Ok0 = lw51T.length === 1 && lw51T[0].tag === "BF28";
+ var lw51_br = lw51Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw51T[0].value) : [];
+ var lw51_brtag = lw51_br.length === 1 ? lw51_br[0].tag : "";
+ var lw51_els = lw51_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw51_br[0].value) : [];
+ bind.checkData("S51-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw51_brtag === "A0" && lw51_els.length === 0) ? "1" : "0");
+
+ // 步骤 52:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla52 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s52 = bind.sendApdu(sdCla52, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+ bind.checkData("S52-C1 SW", "9000", s52.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw52T = BindEs10xSingleRequest.parseBerTlv(s52.resp);
+ var lw52Ok0 = lw52T.length === 1 && lw52T[0].tag === "BF28";
+ var lw52_br = lw52Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw52T[0].value) : [];
+ var lw52_brtag = lw52_br.length === 1 ? lw52_br[0].tag : "";
+ var lw52_els = lw52_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw52_br[0].value) : [];
+ bind.checkData("S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw52_brtag === "A0" && lw52_els.length === 2) ? "1" : "0");
+ var lw52_feok = lw52_brtag === "A0" && lw52_els.length === 2;
+ var lw52_fobs = [];
+ for (var lw52i = 0; lw52i < lw52_els.length; lw52i++) {
+ if (lw52_els[lw52i].tag !== "BF2F") { lw52_feok = false; continue; }
+ var lw52M = BindEs10xSingleRequest.parseBerTlv(lw52_els[lw52i].value);
+ var lw52_f = {};
+ for (var lw52j = 0; lw52j < lw52M.length; lw52j++) {
+ if (lw52_f[lw52M[lw52j].tag] === undefined) { lw52_f[lw52M[lw52j].tag] = lw52M[lw52j].value; }
+ }
+ if (lw52_f["80"] === undefined) { lw52_feok = false; }
+ lw52_fobs.push(lw52_f);
+ }
+ var lw52_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
+ for (var lw52k = 0; lw52k < lw52_fexp.length; lw52k++) {
+ var lw52mc = 0;
+ for (var lw52m = 0; lw52m < lw52_fobs.length; lw52m++) {
+ if (lw52_fobs[lw52m]["81"] === lw52_fexp[lw52k].op && lw52_fobs[lw52m]["0C"] === lw52_fexp[lw52k].addr && lw52_fobs[lw52m]["5A"] === lw52_fexp[lw52k].iccid) { lw52mc++; }
+ }
+ if (lw52mc !== 1) { lw52_feok = false; }
+ }
+ bind.checkData("S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw52_feok ? "1" : "0");
+
+ // 步骤 53:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla53 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s53 = bind.sendApdu(sdCla53, "E2", "91", "00", "BF280481020430", "00", "9000");
+ bind.checkData("S53-C1 SW", "9000", s53.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw53T = BindEs10xSingleRequest.parseBerTlv(s53.resp);
+ var lw53Ok0 = lw53T.length === 1 && lw53T[0].tag === "BF28";
+ var lw53_br = lw53Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw53T[0].value) : [];
+ var lw53_brtag = lw53_br.length === 1 ? lw53_br[0].tag : "";
+ var lw53_els = lw53_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw53_br[0].value) : [];
+ bind.checkData("S53-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw53_brtag === "A0" && lw53_els.length === 0) ? "1" : "0");
+
+ // 步骤 54:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla54 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", "BF280481020560", "00", "9000");
+ bind.checkData("S54-C1 SW", "9000", s54.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw54T = BindEs10xSingleRequest.parseBerTlv(s54.resp);
+ var lw54Ok0 = lw54T.length === 1 && lw54T[0].tag === "BF28";
+ var lw54_br = lw54Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw54T[0].value) : [];
+ var lw54_brtag = lw54_br.length === 1 ? lw54_br[0].tag : "";
+ var lw54_els = lw54_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw54_br[0].value) : [];
+ bind.checkData("S54-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw54_brtag === "A0" && lw54_els.length === 0) ? "1" : "0");
+
+ // 步骤 55:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla55 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+ var s55 = bind.sendApdu(sdCla55, "E2", "91", "00", "BF2804810205E0", "00", "9000");
+ bind.checkData("S55-C1 SW", "9000", s55.sw);
+ // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+ var lw55T = BindEs10xSingleRequest.parseBerTlv(s55.resp);
+ var lw55Ok0 = lw55T.length === 1 && lw55T[0].tag === "BF28";
+ var lw55_br = lw55Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw55T[0].value) : [];
+ var lw55_brtag = lw55_br.length === 1 ? lw55_br[0].tag : "";
+ var lw55_els = lw55_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw55_br[0].value) : [];
+ bind.checkData("S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw55_brtag === "A0" && lw55_els.length === 2) ? "1" : "0");
+ var lw55_feok = lw55_brtag === "A0" && lw55_els.length === 2;
+ var lw55_fobs = [];
+ for (var lw55i = 0; lw55i < lw55_els.length; lw55i++) {
+ if (lw55_els[lw55i].tag !== "BF2F") { lw55_feok = false; continue; }
+ var lw55M = BindEs10xSingleRequest.parseBerTlv(lw55_els[lw55i].value);
+ var lw55_f = {};
+ for (var lw55j = 0; lw55j < lw55M.length; lw55j++) {
+ if (lw55_f[lw55M[lw55j].tag] === undefined) { lw55_f[lw55M[lw55j].tag] = lw55M[lw55j].value; }
+ }
+ if (lw55_f["80"] === undefined) { lw55_feok = false; }
+ lw55_fobs.push(lw55_f);
+ }