源码对照:4.2.26.2.1
ES10c 设置 Profile 昵称 / TC_eUICC_ES10c.SetNickname
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
545 行 / 23070 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_SetNickname/Import/TC_eUICC_ES10c_SetNickname.js
519 行 / 39795 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js545 行 / 23070 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_SetNickname_01 + TC_eUICC_ES10c_SetNickname_02 + TC_eUICC_ES10c_SetNickname_03 + TC_eUICC_ES10c_SetNickname_04 + TC_eUICC_ES10c_SetNickname_05 + TC_eUICC_ES10c_SetNickname_06 + TC_eUICC_ES10c_SetNickname_07 + TC_eUICC_ES10c_SetNickname_08 + TC_eUICC_ES10c_SetNickname_09 (extracted verbatim)
2
3function TC_eUICC_ES10c_SetNickname_01()
4{
5 initial_condition_Start();
6 initial_condition_Install_PROFILE_OPERATIONAL1();
7
8 tracenamestr = "测试目的:Operational Profile(未激活)没有Nickname,添加Nickname";
9 curDis.TraceStart(sno++,tracenamestr);
10
11 curLogicChannel = 0;
12 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
13 Ini_powerOn_eUICC_LPAe_not_activate();
14
15 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
16 TS_MANAGE_CHANNEL_OPEN();
17
18 curLogicChannel = 1;
19
20 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
21 TS_SELECT("Select ISD",ISD_R_AID,"9000");
22
23 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
24 var setNicknameRequest = new SetNicknameRequest();
25 setNicknameRequest.iccid = ICCID_OP_PROF1;
26 setNicknameRequest.profileNickname = NICKNAME2;
27 setNicknameRequest.GenHexData();
28 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
29 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
30
31
32 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
33 var proInfoListRequest = new ProfileInfoListRequest();
34 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
35 proInfoListRequest.GenHexData();
36 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
37 var proInfoListResponse = new ProfileInfoListResponse();
38 proInfoListResponse.checkCardResDataFormat(respData);
39
40 try
41 {
42 var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
43 curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
44
45 var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
46
47 curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
48 curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
49 curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
50 curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
51 curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
52 curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
53 curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
54 curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
55 curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
56 }catch(e){
57 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
58 }
59
60
61 RecoverCard();
62}
63
64function TC_eUICC_ES10c_SetNickname_02()
65{
66 initial_condition_Start();
67 initial_condition_Install_PROFILE_OPERATIONAL1();
68 initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
69
70 tracenamestr = "测试目的:Operational Profile(未激活)有Nickname,更新其Nickname";
71 curDis.TraceStart(sno++,tracenamestr);
72
73 curLogicChannel = 0;
74 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
75 Ini_powerOn_eUICC_LPAe_not_activate();
76
77 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
78 TS_MANAGE_CHANNEL_OPEN();
79
80 curLogicChannel = 1;
81
82 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
83 TS_SELECT("Select ISD",ISD_R_AID,"9000");
84
85 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
86 var setNicknameRequest = new SetNicknameRequest();
87 setNicknameRequest.iccid = ICCID_OP_PROF1;
88 setNicknameRequest.profileNickname = NICKNAME2;
89 setNicknameRequest.GenHexData();
90 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
91
92 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
93
94
95 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
96 var proInfoListRequest = new ProfileInfoListRequest();
97 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
98 proInfoListRequest.GenHexData();
99 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
100
101 var proInfoListResponse = new ProfileInfoListResponse();
102 proInfoListResponse.checkCardResDataFormat(respData);
103
104 try
105 {
106 var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
107 curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
108
109 var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
110
111 curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
112 curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
113 curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
114 curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
115 curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
116 curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
117 curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
118 curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
119 curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
120 }catch(e){
121 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
122 }
123
124
125 RecoverCard();
126}
127
128function TC_eUICC_ES10c_SetNickname_03()
129{
130 initial_condition_Start();
131 initial_condition_Install_PROFILE_OPERATIONAL1();
132 initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
133
134 tracenamestr = "测试目的:Operational Profile(未激活)有Nickname,删除其Nickname";
135 curDis.TraceStart(sno++,tracenamestr);
136
137 curLogicChannel = 0;
138 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
139 Ini_powerOn_eUICC_LPAe_not_activate();
140
141 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
142 TS_MANAGE_CHANNEL_OPEN();
143
144 curLogicChannel = 1;
145
146 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
147 TS_SELECT("Select ISD",ISD_R_AID,"9000");
148
149 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
150 var setNicknameRequest = new SetNicknameRequest();
151 setNicknameRequest.iccid = ICCID_OP_PROF1;
152 setNicknameRequest.profileNickname = "";
153 setNicknameRequest.GenHexData();
154 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
155 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
156
157
158 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
159 var proInfoListRequest = new ProfileInfoListRequest();
160 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
161 proInfoListRequest.GenHexData();
162 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
163
164 var proInfoListResponse = new ProfileInfoListResponse();
165 proInfoListResponse.checkCardResDataFormat(respData);
166
167 try
168 {
169 var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
170 curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
171
172 var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
173
174 curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
175 curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
176 curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
177 curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
178 curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
179 curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
180 curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
181 curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
182 curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
183 }catch(e){
184 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
185 }
186
187 RecoverCard();
188}
189
190function TC_eUICC_ES10c_SetNickname_04()
191{
192 initial_condition_Start();
193 initial_condition_Install_PROFILE_OPERATIONAL1();
194
195 tracenamestr = "测试目的:Operational Profile(未激活)没有Nickname,删除Nickname";
196 curDis.TraceStart(sno++,tracenamestr);
197
198 curLogicChannel = 0;
199 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
200 Ini_powerOn_eUICC_LPAe_not_activate();
201
202 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
203 TS_MANAGE_CHANNEL_OPEN();
204
205 curLogicChannel = 1;
206
207 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
208 TS_SELECT("Select ISD",ISD_R_AID,"9000");
209
210 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
211 var setNicknameRequest = new SetNicknameRequest();
212 setNicknameRequest.iccid = ICCID_OP_PROF1;
213 setNicknameRequest.profileNickname = "";
214 setNicknameRequest.GenHexData();
215 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
216
217 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
218
219
220 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
221 var proInfoListRequest = new ProfileInfoListRequest();
222 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
223 proInfoListRequest.GenHexData();
224 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
225
226 var proInfoListResponse = new ProfileInfoListResponse();
227 proInfoListResponse.checkCardResDataFormat(respData);
228
229 try
230 {
231 var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
232 curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
233
234 var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
235
236 curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
237 curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
238 curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
239 curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
240 curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
241 curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
242 curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
243 curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
244 curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
245 }catch(e){
246 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
247 }
248
249
250 RecoverCard();
251}
252
253function TC_eUICC_ES10c_SetNickname_05()
254{
255 initial_condition_Start();
256 initial_condition_Install_PROFILE_OPERATIONAL1();
257 initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
258
259 tracenamestr = "测试目的:Operational Profile(已激活)没有Nickname,添加Nickname";
260 curDis.TraceStart(sno++,tracenamestr);
261
262 curLogicChannel = 0;
263 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
264 Ini_powerOn_eUICC_LPAe_not_activate();
265
266 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
267 TS_MANAGE_CHANNEL_OPEN();
268
269 curLogicChannel = 1;
270
271 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
272 TS_SELECT("Select ISD",ISD_R_AID,"9000");
273
274 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
275 var setNicknameRequest = new SetNicknameRequest();
276 setNicknameRequest.iccid = ICCID_OP_PROF1;
277 setNicknameRequest.profileNickname = NICKNAME2;
278 setNicknameRequest.GenHexData();
279 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
280
281 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
282
283
284 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
285 var proInfoListRequest = new ProfileInfoListRequest();
286 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
287 proInfoListRequest.GenHexData();
288 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
289
290 var proInfoListResponse = new ProfileInfoListResponse();
291 proInfoListResponse.checkCardResDataFormat(respData);
292
293 try
294 {
295 var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
296 curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
297
298 var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
299
300 curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
301 curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
302 curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
303 curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
304 curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
305 curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
306 curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
307 curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
308 curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
309 }catch(e){
310 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
311 }
312
313
314 RecoverCard();
315}
316
317function TC_eUICC_ES10c_SetNickname_06()
318{
319 initial_condition_Start();
320 initial_condition_Install_PROFILE_OPERATIONAL1();
321 initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
322
323 initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
324
325 tracenamestr = "测试目的:Operational Profile(已激活)有Nickname,更新其Nickname";
326 curDis.TraceStart(sno++,tracenamestr);
327
328 curLogicChannel = 0;
329 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
330 Ini_powerOn_eUICC_LPAe_not_activate();
331
332 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
333 TS_MANAGE_CHANNEL_OPEN();
334
335 curLogicChannel = 1;
336
337 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
338 TS_SELECT("Select ISD",ISD_R_AID,"9000");
339
340 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
341 var setNicknameRequest = new SetNicknameRequest();
342 setNicknameRequest.iccid = ICCID_OP_PROF1;
343 setNicknameRequest.profileNickname = NICKNAME2;
344 setNicknameRequest.GenHexData();
345 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
346
347 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
348
349
350 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
351 var proInfoListRequest = new ProfileInfoListRequest();
352 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
353 proInfoListRequest.GenHexData();
354 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
355
356 var proInfoListResponse = new ProfileInfoListResponse();
357 proInfoListResponse.checkCardResDataFormat(respData);
358
359 try
360 {
361 var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
362 curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
363
364 var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
365
366 curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
367 curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
368 curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
369 curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
370 curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
371 curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
372 curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
373 curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
374 curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
375 }catch(e){
376 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
377 }
378
379
380 RecoverCard();
381}
382
383function TC_eUICC_ES10c_SetNickname_07()
384{
385 initial_condition_Start();
386 initial_condition_Install_PROFILE_OPERATIONAL1();
387 initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
388
389 initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
390
391 tracenamestr = "测试目的:Operational Profile(已激活)有Nickname,删除其Nickname";
392 curDis.TraceStart(sno++,tracenamestr);
393
394 curLogicChannel = 0;
395 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
396 Ini_powerOn_eUICC_LPAe_not_activate();
397
398 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
399 TS_MANAGE_CHANNEL_OPEN();
400
401 curLogicChannel = 1;
402
403 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
404 TS_SELECT("Select ISD",ISD_R_AID,"9000");
405
406 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
407 var setNicknameRequest = new SetNicknameRequest();
408 setNicknameRequest.iccid = ICCID_OP_PROF1;
409 setNicknameRequest.profileNickname = "";
410 setNicknameRequest.GenHexData();
411 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
412
413 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
414
415
416 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
417 var proInfoListRequest = new ProfileInfoListRequest();
418 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
419 proInfoListRequest.GenHexData();
420 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
421
422 var proInfoListResponse = new ProfileInfoListResponse();
423 proInfoListResponse.checkCardResDataFormat(respData);
424
425 try
426 {
427 var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
428 curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
429
430 var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
431
432 curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
433 curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
434 curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
435 curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
436 curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
437 curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
438 curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
439 curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
440 curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
441 }catch(e){
442 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
443 }
444
445
446 RecoverCard();
447}
448
449function TC_eUICC_ES10c_SetNickname_08()
450{
451 initial_condition_Start();
452 initial_condition_Install_PROFILE_OPERATIONAL1();
453 initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
454
455 tracenamestr = "测试目的:Operational Profile(已激活)没有Nickname,删除Nickname";
456 curDis.TraceStart(sno++,tracenamestr);
457
458 curLogicChannel = 0;
459 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
460 Ini_powerOn_eUICC_LPAe_not_activate();
461
462 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
463 TS_MANAGE_CHANNEL_OPEN();
464
465 curLogicChannel = 1;
466
467 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
468 TS_SELECT("Select ISD",ISD_R_AID,"9000");
469
470 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
471 var setNicknameRequest = new SetNicknameRequest();
472 setNicknameRequest.iccid = ICCID_OP_PROF1;
473 setNicknameRequest.profileNickname = "";
474 setNicknameRequest.GenHexData();
475 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
476
477 curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
478
479
480 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
481 var proInfoListRequest = new ProfileInfoListRequest();
482 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
483 proInfoListRequest.GenHexData();
484 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
485
486 var proInfoListResponse = new ProfileInfoListResponse();
487 proInfoListResponse.checkCardResDataFormat(respData);
488
489 try
490 {
491 var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
492 curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
493
494 var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
495
496 curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
497 curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
498 curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
499 curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
500 curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
501 curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
502 curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
503 curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
504 curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
505 }catch(e){
506 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
507 }
508
509
510 RecoverCard();
511}
512
513function TC_eUICC_ES10c_SetNickname_09()
514{
515 initial_condition_Start();
516 initial_condition_Install_PROFILE_OPERATIONAL1();
517
518 tracenamestr = "测试目的:确保方法ES10c.SetNickname在中返回错误在eUICC上不存在目标配置文件的情况下";
519 curDis.TraceStart(sno++,tracenamestr);
520
521 curLogicChannel = 0;
522 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
523 Ini_powerOn_eUICC_LPAe_not_activate();
524
525 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
526 TS_MANAGE_CHANNEL_OPEN();
527
528 curLogicChannel = 1;
529
530 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
531 TS_SELECT("Select ISD",ISD_R_AID,"9000");
532
533 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME_ICCID_UNKNOWN");
534 var setNicknameRequest = new SetNicknameRequest();
535 setNicknameRequest.iccid = ICCID_UNKNOWN;
536 setNicknameRequest.profileNickname = NICKNAME2;
537 setNicknameRequest.GenHexData();
538 var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
539
540 curStrHandle.CheckData("BF2903800101", respData,"SetNickname Response");
541
542
543 RecoverCard();
544}
545
-cas 盲生成TC_eUICC_ES10c_SetNickname/Import/TC_eUICC_ES10c_SetNickname.js519 行 / 39795 字符 / gb18030入口函数 @L35
1// Author: 卡思Cas智能体
2// Date: 20261004-021957
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.SetNickname,Test Sequence #01-#09 (Nominal: Add/Update/Remove/Remove-non-existing × Disabled/Enabled;Error: ICCID not found),适用性 M。
4// Test points: IC1-IC1-K1-C1 ATR_present;IC1-IC1-K2-C2 FCP_Template;IC1-IC1-K2-C4 SW
5// IC1-IC1-K3-C4 SW;IC1-IC1-K4-C4 final SW;IC2-IC2-K1-C4 SW;IC2-IC2-K1-C3 CHANNEL_NUMBER extracted
6// IC2-IC2-K2-C4 SW;S3-C1 SW;S3-C2 setNicknameResult ok;S4-C1 SW;S4-C2 profileNickname Nickname 2
7// IC5-IC1-K1-C1 ATR_present;IC5-IC1-K2-C2 FCP_Template;IC5-IC1-K2-C4 SW;IC5-IC1-K3-C4 SW
8// IC5-IC1-K4-C4 final SW;IC6-IC2-K1-C4 SW;IC6-IC2-K1-C3 CHANNEL_NUMBER extracted;IC6-IC2-K2-C4 SW
9// S7-C1 SW;S7-C2 setNicknameResult ok;S8-C1 SW;S8-C2 profileNickname Nickname 2
10// IC9-IC1-K1-C1 ATR_present;IC9-IC1-K2-C2 FCP_Template;IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW
11// IC9-IC1-K4-C4 final SW;IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted
12// IC10-IC2-K2-C4 SW;S11-C1 SW;S11-C2 setNicknameResult ok;S12-C1 SW;S12-C2 profileNickname absent
13// IC13-IC1-K1-C1 ATR_present;IC13-IC1-K2-C2 FCP_Template;IC13-IC1-K2-C4 SW;IC13-IC1-K3-C4 SW
14// IC13-IC1-K4-C4 final SW;IC14-IC2-K1-C4 SW;IC14-IC2-K1-C3 CHANNEL_NUMBER extracted
15// IC14-IC2-K2-C4 SW;S15-C1 SW;S15-C2 setNicknameResult ok;S16-C1 SW;S16-C2 profileNickname absent
16// IC17-IC1-K1-C1 ATR_present;IC17-IC1-K2-C2 FCP_Template;IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW
17// IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW;IC18-IC2-K1-C3 CHANNEL_NUMBER extracted
18// IC18-IC2-K2-C4 SW;S19-C1 SW;S19-C2 setNicknameResult ok;S20-C1 SW
19// S20-C2 profileNickname Nickname 2;IC21-IC1-K1-C1 ATR_present;IC21-IC1-K2-C2 FCP_Template
20// IC21-IC1-K2-C4 SW;IC21-IC1-K3-C4 SW;IC21-IC1-K4-C4 final SW;IC22-IC2-K1-C4 SW
21// IC22-IC2-K1-C3 CHANNEL_NUMBER extracted;IC22-IC2-K2-C4 SW;S23-C1 SW;S23-C2 setNicknameResult ok
22// S24-C1 SW;S24-C2 profileNickname Nickname 2;IC25-IC1-K1-C1 ATR_present
23// IC25-IC1-K2-C2 FCP_Template;IC25-IC1-K2-C4 SW;IC25-IC1-K3-C4 SW;IC25-IC1-K4-C4 final SW
24// IC26-IC2-K1-C4 SW;IC26-IC2-K1-C3 CHANNEL_NUMBER extracted;IC26-IC2-K2-C4 SW;S27-C1 SW
25// S27-C2 setNicknameResult ok;S28-C1 SW;S28-C2 profileNickname absent;IC29-IC1-K1-C1 ATR_present
26// IC29-IC1-K2-C2 FCP_Template;IC29-IC1-K2-C4 SW;IC29-IC1-K3-C4 SW;IC29-IC1-K4-C4 final SW
27// IC30-IC2-K1-C4 SW;IC30-IC2-K1-C3 CHANNEL_NUMBER extracted;IC30-IC2-K2-C4 SW;S31-C1 SW
28// S31-C2 setNicknameResult ok;S32-C1 SW;S32-C2 profileNickname absent;IC33-IC1-K1-C1 ATR_present
29// IC33-IC1-K2-C2 FCP_Template;IC33-IC1-K2-C4 SW;IC33-IC1-K3-C4 SW;IC33-IC1-K4-C4 final SW
30// IC34-IC2-K1-C4 SW;IC34-IC2-K1-C3 CHANNEL_NUMBER extracted;IC34-IC2-K2-C4 SW;S35-C1 SW
31// S35-C2 setNicknameResult iccidNotFound
32// 本函数由 CaseIR 4.2.26.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
33// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
34// 适用性 M:编译期门,运行时由 harness 环境前置承担。
35function TC_eUICC_ES10c_SetNickname_01_09_merged() {
36 var bind = curBind;
37 // GIC-1 卡态编排:PROFILE_OPERATIONAL1 已装载到 eUICC: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
38 // S1/S4-IC PROF1 Disabled;Nickname 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
39 // S2/S3-IC PROF1 Disabled;Nickname = #NICKNAME1(Nickname 1,F_annexA_constants): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
40 // S5/S8-IC PROF1 Enabled;Nickname 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
41 // S9-IC PROF1 Disabled;#ICCID_UNKNOWN(0x98 92 01 0A 21 43 65 87 09 F8,F_annexA_constants)标识的 Profile 不存在: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
42
43 // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
44 var s36 = bind.resetAndAtr();
45 bind.checkData("IC1-IC1-K1-C1 ATR_present", "1", s36.atr_hex !== "" ? "1" : "0");
46
47 // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
48 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
49 var s37 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
50 bind.checkData("IC1-IC1-K2-C2 FCP_Template", "1", s37.resp.length > 0 ? "1" : "0");
51 bind.checkData("IC1-IC1-K2-C4 SW", "9000", s37.sw);
52
53 // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
54 var s38 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
55 bind.checkData("IC1-IC1-K3-C4 SW", "9000", s38.sw);
56
57 // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
58 var steady39 = bind.runToSteadyState(function () {
59 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
60 });
61 bind.checkData("IC1-IC1-K4-C4 final SW", "9000", steady39.final.sw);
62
63 // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
64 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
65 var s40 = bind.manageChannelOpen("9000");
66 bind.checkData("IC2-IC2-K1-C4 SW", "9000", s40.sw);
67 bind.checkData("IC2-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s40.chan !== null ? "1" : "0");
68
69 // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
70 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
71 var s41 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
72 // 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.
73 bind.checkData("IC2-IC2-K2-C4 SW", "9000", s41.sw);
74
75 // 步骤 3:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
76 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
77 var sdCla3 = s40.chan !== null ? (s40.chan <= 3 ? 128 + s40.chan : 188 + s40.chan).toString(16).toUpperCase() : null;
78 var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
79 bind.checkData("S3-C1 SW", "9000", s3.sw);
80 var r2w3 = BindGecaProc.parseGecaResponse(s3.resp, {outer: "BF29", required: ["80"]});
81 bind.checkData("S3-C2 setNicknameResult ok", "00", (r2w3.ok && r2w3.fields["80"] === "00") ? "00" : (r2w3.fields["80"] || "absent"));
82
83 // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
84 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
85 var sdCla4 = s40.chan !== null ? (s40.chan <= 3 ? 128 + s40.chan : 188 + s40.chan).toString(16).toUpperCase() : null;
86 var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
87 bind.checkData("S4-C1 SW", "9000", s4.sw);
88 // Inline ASCII->hex helper (UTF8String expected values; values enter as
89 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
90 function __asciiHex(text) {
91 var out = "";
92 for (var i = 0; i < text.length; i++) {
93 var c = text.charCodeAt(i).toString(16).toUpperCase();
94 out += (c.length === 1 ? "0" + c : c);
95 }
96 return out;
97 }
98 var r2p4 = BindEs10xProcProfile.walkChoiceList(s4.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
99 var r2e4 = (r2p4.elements.length === 1) ? r2p4.elements[0].fields : null;
100 var r2v4 = __asciiHex("Nickname 2");
101 bind.checkData("S4-C2 profileNickname Nickname 2", r2v4, r2e4 === null ? "absent" : (r2e4["90"] === undefined ? "absent" : r2e4["90"]));
102
103 // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
104 var s42 = bind.resetAndAtr();
105 bind.checkData("IC5-IC1-K1-C1 ATR_present", "1", s42.atr_hex !== "" ? "1" : "0");
106
107 // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
108 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
109 var s43 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
110 bind.checkData("IC5-IC1-K2-C2 FCP_Template", "1", s43.resp.length > 0 ? "1" : "0");
111 bind.checkData("IC5-IC1-K2-C4 SW", "9000", s43.sw);
112
113 // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
114 var s44 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
115 bind.checkData("IC5-IC1-K3-C4 SW", "9000", s44.sw);
116
117 // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
118 var steady45 = bind.runToSteadyState(function () {
119 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
120 });
121 bind.checkData("IC5-IC1-K4-C4 final SW", "9000", steady45.final.sw);
122
123 // IC ref inline @E 步骤 6(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
124 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
125 var s46 = bind.manageChannelOpen("9000");
126 bind.checkData("IC6-IC2-K1-C4 SW", "9000", s46.sw);
127 bind.checkData("IC6-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s46.chan !== null ? "1" : "0");
128
129 // IC ref inline @E 步骤 6(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
130 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
131 var s47 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
132 // 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.
133 bind.checkData("IC6-IC2-K2-C4 SW", "9000", s47.sw);
134
135 // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
136 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
137 var sdCla7 = s46.chan !== null ? (s46.chan <= 3 ? 128 + s46.chan : 188 + s46.chan).toString(16).toUpperCase() : null;
138 var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
139 bind.checkData("S7-C1 SW", "9000", s7.sw);
140 var r2w7 = BindGecaProc.parseGecaResponse(s7.resp, {outer: "BF29", required: ["80"]});
141 bind.checkData("S7-C2 setNicknameResult ok", "00", (r2w7.ok && r2w7.fields["80"] === "00") ? "00" : (r2w7.fields["80"] || "absent"));
142
143 // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
144 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
145 var sdCla8 = s46.chan !== null ? (s46.chan <= 3 ? 128 + s46.chan : 188 + s46.chan).toString(16).toUpperCase() : null;
146 var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
147 bind.checkData("S8-C1 SW", "9000", s8.sw);
148 // Inline ASCII->hex helper (UTF8String expected values; values enter as
149 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
150 function __asciiHex(text) {
151 var out = "";
152 for (var i = 0; i < text.length; i++) {
153 var c = text.charCodeAt(i).toString(16).toUpperCase();
154 out += (c.length === 1 ? "0" + c : c);
155 }
156 return out;
157 }
158 var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
159 var r2e8 = (r2p8.elements.length === 1) ? r2p8.elements[0].fields : null;
160 var r2v8 = __asciiHex("Nickname 2");
161 bind.checkData("S8-C2 profileNickname Nickname 2", r2v8, r2e8 === null ? "absent" : (r2e8["90"] === undefined ? "absent" : r2e8["90"]));
162
163 // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
164 var s48 = bind.resetAndAtr();
165 bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s48.atr_hex !== "" ? "1" : "0");
166
167 // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
168 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
169 var s49 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
170 bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s49.resp.length > 0 ? "1" : "0");
171 bind.checkData("IC9-IC1-K2-C4 SW", "9000", s49.sw);
172
173 // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
174 var s50 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
175 bind.checkData("IC9-IC1-K3-C4 SW", "9000", s50.sw);
176
177 // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
178 var steady51 = bind.runToSteadyState(function () {
179 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
180 });
181 bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady51.final.sw);
182
183 // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
184 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
185 var s52 = bind.manageChannelOpen("9000");
186 bind.checkData("IC10-IC2-K1-C4 SW", "9000", s52.sw);
187 bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s52.chan !== null ? "1" : "0");
188
189 // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
190 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
191 var s53 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
192 // 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.
193 bind.checkData("IC10-IC2-K2-C4 SW", "9000", s53.sw);
194
195 // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
196 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
197 var sdCla11 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
198 var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
199 bind.checkData("S11-C1 SW", "9000", s11.sw);
200 var r2w11 = BindGecaProc.parseGecaResponse(s11.resp, {outer: "BF29", required: ["80"]});
201 bind.checkData("S11-C2 setNicknameResult ok", "00", (r2w11.ok && r2w11.fields["80"] === "00") ? "00" : (r2w11.fields["80"] || "absent"));
202
203 // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ57_175)
204 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
205 var sdCla12 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
206 var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
207 bind.checkData("S12-C1 SW", "9000", s12.sw);
208 var r2p12 = BindEs10xProcProfile.walkChoiceList(s12.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
209 var r2e12 = (r2p12.elements.length === 1) ? r2p12.elements[0].fields : null;
210 bind.checkData("S12-C2 profileNickname absent", "absent", r2e12 === null ? "no_element" : (r2e12["90"] === undefined ? "absent" : r2e12["90"]));
211
212 // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
213 var s54 = bind.resetAndAtr();
214 bind.checkData("IC13-IC1-K1-C1 ATR_present", "1", s54.atr_hex !== "" ? "1" : "0");
215
216 // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
217 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
218 var s55 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
219 bind.checkData("IC13-IC1-K2-C2 FCP_Template", "1", s55.resp.length > 0 ? "1" : "0");
220 bind.checkData("IC13-IC1-K2-C4 SW", "9000", s55.sw);
221
222 // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
223 var s56 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
224 bind.checkData("IC13-IC1-K3-C4 SW", "9000", s56.sw);
225
226 // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
227 var steady57 = bind.runToSteadyState(function () {
228 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
229 });
230 bind.checkData("IC13-IC1-K4-C4 final SW", "9000", steady57.final.sw);
231
232 // IC ref inline @E 步骤 14(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
233 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
234 var s58 = bind.manageChannelOpen("9000");
235 bind.checkData("IC14-IC2-K1-C4 SW", "9000", s58.sw);
236 bind.checkData("IC14-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s58.chan !== null ? "1" : "0");
237
238 // IC ref inline @E 步骤 14(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
239 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
240 var s59 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
241 // 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.
242 bind.checkData("IC14-IC2-K2-C4 SW", "9000", s59.sw);
243
244 // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
245 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
246 var sdCla15 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
247 var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
248 bind.checkData("S15-C1 SW", "9000", s15.sw);
249 var r2w15 = BindGecaProc.parseGecaResponse(s15.resp, {outer: "BF29", required: ["80"]});
250 bind.checkData("S15-C2 setNicknameResult ok", "00", (r2w15.ok && r2w15.fields["80"] === "00") ? "00" : (r2w15.fields["80"] || "absent"));
251
252 // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ57_176)
253 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
254 var sdCla16 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
255 var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
256 bind.checkData("S16-C1 SW", "9000", s16.sw);
257 var r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
258 var r2e16 = (r2p16.elements.length === 1) ? r2p16.elements[0].fields : null;
259 bind.checkData("S16-C2 profileNickname absent", "absent", r2e16 === null ? "no_element" : (r2e16["90"] === undefined ? "absent" : r2e16["90"]));
260
261 // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
262 var s60 = bind.resetAndAtr();
263 bind.checkData("IC17-IC1-K1-C1 ATR_present", "1", s60.atr_hex !== "" ? "1" : "0");
264
265 // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
266 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
267 var s61 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
268 bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s61.resp.length > 0 ? "1" : "0");
269 bind.checkData("IC17-IC1-K2-C4 SW", "9000", s61.sw);
270
271 // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
272 var s62 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
273 bind.checkData("IC17-IC1-K3-C4 SW", "9000", s62.sw);
274
275 // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
276 var steady63 = bind.runToSteadyState(function () {
277 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
278 });
279 bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady63.final.sw);
280
281 // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
282 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
283 var s64 = bind.manageChannelOpen("9000");
284 bind.checkData("IC18-IC2-K1-C4 SW", "9000", s64.sw);
285 bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s64.chan !== null ? "1" : "0");
286
287 // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
288 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
289 var s65 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
290 // 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.
291 bind.checkData("IC18-IC2-K2-C4 SW", "9000", s65.sw);
292
293 // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
294 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
295 var sdCla19 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
296 var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
297 bind.checkData("S19-C1 SW", "9000", s19.sw);
298 var r2w19 = BindGecaProc.parseGecaResponse(s19.resp, {outer: "BF29", required: ["80"]});
299 bind.checkData("S19-C2 setNicknameResult ok", "00", (r2w19.ok && r2w19.fields["80"] === "00") ? "00" : (r2w19.fields["80"] || "absent"));
300
301 // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
302 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
303 var sdCla20 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
304 var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
305 bind.checkData("S20-C1 SW", "9000", s20.sw);
306 // Inline ASCII->hex helper (UTF8String expected values; values enter as
307 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
308 function __asciiHex(text) {
309 var out = "";
310 for (var i = 0; i < text.length; i++) {
311 var c = text.charCodeAt(i).toString(16).toUpperCase();
312 out += (c.length === 1 ? "0" + c : c);
313 }
314 return out;
315 }
316 var r2p20 = BindEs10xProcProfile.walkChoiceList(s20.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
317 var r2e20 = (r2p20.elements.length === 1) ? r2p20.elements[0].fields : null;
318 var r2v20 = __asciiHex("Nickname 2");
319 bind.checkData("S20-C2 profileNickname Nickname 2", r2v20, r2e20 === null ? "absent" : (r2e20["90"] === undefined ? "absent" : r2e20["90"]));
320
321 // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
322 var s66 = bind.resetAndAtr();
323 bind.checkData("IC21-IC1-K1-C1 ATR_present", "1", s66.atr_hex !== "" ? "1" : "0");
324
325 // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
326 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
327 var s67 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
328 bind.checkData("IC21-IC1-K2-C2 FCP_Template", "1", s67.resp.length > 0 ? "1" : "0");
329 bind.checkData("IC21-IC1-K2-C4 SW", "9000", s67.sw);
330
331 // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
332 var s68 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
333 bind.checkData("IC21-IC1-K3-C4 SW", "9000", s68.sw);
334
335 // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
336 var steady69 = bind.runToSteadyState(function () {
337 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
338 });
339 bind.checkData("IC21-IC1-K4-C4 final SW", "9000", steady69.final.sw);
340
341 // IC ref inline @E 步骤 22(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
342 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
343 var s70 = bind.manageChannelOpen("9000");
344 bind.checkData("IC22-IC2-K1-C4 SW", "9000", s70.sw);
345 bind.checkData("IC22-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s70.chan !== null ? "1" : "0");
346
347 // IC ref inline @E 步骤 22(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
348 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
349 var s71 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
350 // 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.
351 bind.checkData("IC22-IC2-K2-C4 SW", "9000", s71.sw);
352
353 // 步骤 23:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
354 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
355 var sdCla23 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
356 var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
357 bind.checkData("S23-C1 SW", "9000", s23.sw);
358 var r2w23 = BindGecaProc.parseGecaResponse(s23.resp, {outer: "BF29", required: ["80"]});
359 bind.checkData("S23-C2 setNicknameResult ok", "00", (r2w23.ok && r2w23.fields["80"] === "00") ? "00" : (r2w23.fields["80"] || "absent"));
360
361 // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
362 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
363 var sdCla24 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
364 var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
365 bind.checkData("S24-C1 SW", "9000", s24.sw);
366 // Inline ASCII->hex helper (UTF8String expected values; values enter as
367 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
368 function __asciiHex(text) {
369 var out = "";
370 for (var i = 0; i < text.length; i++) {
371 var c = text.charCodeAt(i).toString(16).toUpperCase();
372 out += (c.length === 1 ? "0" + c : c);
373 }
374 return out;
375 }
376 var r2p24 = BindEs10xProcProfile.walkChoiceList(s24.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
377 var r2e24 = (r2p24.elements.length === 1) ? r2p24.elements[0].fields : null;
378 var r2v24 = __asciiHex("Nickname 2");
379 bind.checkData("S24-C2 profileNickname Nickname 2", r2v24, r2e24 === null ? "absent" : (r2e24["90"] === undefined ? "absent" : r2e24["90"]));
380
381 // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
382 var s72 = bind.resetAndAtr();
383 bind.checkData("IC25-IC1-K1-C1 ATR_present", "1", s72.atr_hex !== "" ? "1" : "0");
384
385 // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
386 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
387 var s73 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
388 bind.checkData("IC25-IC1-K2-C2 FCP_Template", "1", s73.resp.length > 0 ? "1" : "0");
389 bind.checkData("IC25-IC1-K2-C4 SW", "9000", s73.sw);
390
391 // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
392 var s74 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
393 bind.checkData("IC25-IC1-K3-C4 SW", "9000", s74.sw);
394
395 // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
396 var steady75 = bind.runToSteadyState(function () {
397 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
398 });
399 bind.checkData("IC25-IC1-K4-C4 final SW", "9000", steady75.final.sw);
400
401 // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
402 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
403 var s76 = bind.manageChannelOpen("9000");
404 bind.checkData("IC26-IC2-K1-C4 SW", "9000", s76.sw);
405 bind.checkData("IC26-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s76.chan !== null ? "1" : "0");
406
407 // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
408 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
409 var s77 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
410 // 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.
411 bind.checkData("IC26-IC2-K2-C4 SW", "9000", s77.sw);
412
413 // 步骤 27:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
414 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
415 var sdCla27 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
416 var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
417 bind.checkData("S27-C1 SW", "9000", s27.sw);
418 var r2w27 = BindGecaProc.parseGecaResponse(s27.resp, {outer: "BF29", required: ["80"]});
419 bind.checkData("S27-C2 setNicknameResult ok", "00", (r2w27.ok && r2w27.fields["80"] === "00") ? "00" : (r2w27.fields["80"] || "absent"));
420
421 // 步骤 28:MTD_STORE_DATA(tc_step;REQ: RQ57_175)
422 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
423 var sdCla28 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
424 var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
425 bind.checkData("S28-C1 SW", "9000", s28.sw);
426 var r2p28 = BindEs10xProcProfile.walkChoiceList(s28.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
427 var r2e28 = (r2p28.elements.length === 1) ? r2p28.elements[0].fields : null;
428 bind.checkData("S28-C2 profileNickname absent", "absent", r2e28 === null ? "no_element" : (r2e28["90"] === undefined ? "absent" : r2e28["90"]));
429
430 // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
431 var s78 = bind.resetAndAtr();
432 bind.checkData("IC29-IC1-K1-C1 ATR_present", "1", s78.atr_hex !== "" ? "1" : "0");
433
434 // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
435 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
436 var s79 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
437 bind.checkData("IC29-IC1-K2-C2 FCP_Template", "1", s79.resp.length > 0 ? "1" : "0");
438 bind.checkData("IC29-IC1-K2-C4 SW", "9000", s79.sw);
439
440 // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
441 var s80 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
442 bind.checkData("IC29-IC1-K3-C4 SW", "9000", s80.sw);
443
444 // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
445 var steady81 = bind.runToSteadyState(function () {
446 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
447 });
448 bind.checkData("IC29-IC1-K4-C4 final SW", "9000", steady81.final.sw);
449
450 // IC ref inline @E 步骤 30(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
451 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
452 var s82 = bind.manageChannelOpen("9000");
453 bind.checkData("IC30-IC2-K1-C4 SW", "9000", s82.sw);
454 bind.checkData("IC30-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s82.chan !== null ? "1" : "0");
455
456 // IC ref inline @E 步骤 30(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
457 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
458 var s83 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
459 // 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.
460 bind.checkData("IC30-IC2-K2-C4 SW", "9000", s83.sw);
461
462 // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
463 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
464 var sdCla31 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
465 var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
466 bind.checkData("S31-C1 SW", "9000", s31.sw);
467 var r2w31 = BindGecaProc.parseGecaResponse(s31.resp, {outer: "BF29", required: ["80"]});
468 bind.checkData("S31-C2 setNicknameResult ok", "00", (r2w31.ok && r2w31.fields["80"] === "00") ? "00" : (r2w31.fields["80"] || "absent"));
469
470 // 步骤 32:MTD_STORE_DATA(tc_step;REQ: RQ57_176)
471 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
472 var sdCla32 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
473 var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
474 bind.checkData("S32-C1 SW", "9000", s32.sw);
475 var r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
476 var r2e32 = (r2p32.elements.length === 1) ? r2p32.elements[0].fields : null;
477 bind.checkData("S32-C2 profileNickname absent", "absent", r2e32 === null ? "no_element" : (r2e32["90"] === undefined ? "absent" : r2e32["90"]));
478
479 // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
480 var s84 = bind.resetAndAtr();
481 bind.checkData("IC33-IC1-K1-C1 ATR_present", "1", s84.atr_hex !== "" ? "1" : "0");
482
483 // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
484 // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
485 var s85 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
486 bind.checkData("IC33-IC1-K2-C2 FCP_Template", "1", s85.resp.length > 0 ? "1" : "0");
487 bind.checkData("IC33-IC1-K2-C4 SW", "9000", s85.sw);
488
489 // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
490 var s86 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
491 bind.checkData("IC33-IC1-K3-C4 SW", "9000", s86.sw);
492
493 // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
494 var steady87 = bind.runToSteadyState(function () {
495 return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
496 });
497 bind.checkData("IC33-IC1-K4-C4 final SW", "9000", steady87.final.sw);
498
499 // IC ref inline @E 步骤 34(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
500 // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
501 var s88 = bind.manageChannelOpen("9000");
502 bind.checkData("IC34-IC2-K1-C4 SW", "9000", s88.sw);
503 bind.checkData("IC34-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s88.chan !== null ? "1" : "0");
504
505 // IC ref inline @E 步骤 34(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
506 // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
507 var s89 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
508 // 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.
509 bind.checkData("IC34-IC2-K2-C4 SW", "9000", s89.sw);
510
511 // 步骤 35:MTD_STORE_DATA(tc_step;REQ: RQ57_173, RQ57_178)
512 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
513 var sdCla35 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
514 var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF29185A0A9892010A2143658709F8900A4E69636B6E616D652032", "00", "9000");
515 bind.checkData("S35-C1 SW", "9000", s35.sw);
516 var r2w35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF29", required: ["80"]});
517 bind.checkData("S35-C2 setNicknameResult iccidNotFound", "01", (r2w35.ok && r2w35.fields["80"] === "01") ? "01" : (r2w35.fields["80"] || "absent"));
518}
519
完整 unified diff
行级差异:新增 517 行 / 删除 543 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(1065 行)
--- -man
+++ -cas
@@ -1,545 +1,519 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_SetNickname_01 + TC_eUICC_ES10c_SetNickname_02 + TC_eUICC_ES10c_SetNickname_03 + TC_eUICC_ES10c_SetNickname_04 + TC_eUICC_ES10c_SetNickname_05 + TC_eUICC_ES10c_SetNickname_06 + TC_eUICC_ES10c_SetNickname_07 + TC_eUICC_ES10c_SetNickname_08 + TC_eUICC_ES10c_SetNickname_09 (extracted verbatim)
-
-function TC_eUICC_ES10c_SetNickname_01()
-{
- initial_condition_Start();
- initial_condition_Install_PROFILE_OPERATIONAL1();
-
- tracenamestr = "测试目的:Operational Profile(未激活)没有Nickname,添加Nickname";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF1;
- setNicknameRequest.profileNickname = NICKNAME2;
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
- curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-
- var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-
- curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
- curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
- curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
- curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
- curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
- curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
- curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
- curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_02()
-{
- initial_condition_Start();
- initial_condition_Install_PROFILE_OPERATIONAL1();
- initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
-
- tracenamestr = "测试目的:Operational Profile(未激活)有Nickname,更新其Nickname";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF1;
- setNicknameRequest.profileNickname = NICKNAME2;
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
- curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-
- var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-
- curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
- curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
- curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
- curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
- curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
- curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
- curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
- curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_03()
-{
- initial_condition_Start();
- initial_condition_Install_PROFILE_OPERATIONAL1();
- initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
-
- tracenamestr = "测试目的:Operational Profile(未激活)有Nickname,删除其Nickname";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF1;
- setNicknameRequest.profileNickname = "";
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
- curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-
- var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-
- curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
- curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
- curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
- curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
- curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
- curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
- curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
- curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_04()
-{
- initial_condition_Start();
- initial_condition_Install_PROFILE_OPERATIONAL1();
-
- tracenamestr = "测试目的:Operational Profile(未激活)没有Nickname,删除Nickname";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF1;
- setNicknameRequest.profileNickname = "";
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
- curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-
- var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-
- curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
- curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
- curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
- curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
- curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
- curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
- curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
- curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_05()
-{
- initial_condition_Start();
- initial_condition_Install_PROFILE_OPERATIONAL1();
- initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
-
- tracenamestr = "测试目的:Operational Profile(已激活)没有Nickname,添加Nickname";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF1;
- setNicknameRequest.profileNickname = NICKNAME2;
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
- curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-
- var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-
- curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
- curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
- curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
- curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
- curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
- curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
- curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
- curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_06()
-{
- initial_condition_Start();
- initial_condition_Install_PROFILE_OPERATIONAL1();
- initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
-
- initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
-
- tracenamestr = "测试目的:Operational Profile(已激活)有Nickname,更新其Nickname";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF1;
- setNicknameRequest.profileNickname = NICKNAME2;
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
- curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-
- var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-
- curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
- curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
- curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
- curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
- curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
- curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
- curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
- curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_07()
-{
- initial_condition_Start();
- initial_condition_Install_PROFILE_OPERATIONAL1();
- initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
-
- initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
-
- tracenamestr = "测试目的:Operational Profile(已激活)有Nickname,删除其Nickname";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF1;
- setNicknameRequest.profileNickname = "";
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
- curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-
- var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-
- curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
- curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
- curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
- curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
- curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
- curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
- curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
- curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_08()
-{
- initial_condition_Start();
- initial_condition_Install_PROFILE_OPERATIONAL1();
- initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
-
- tracenamestr = "测试目的:Operational Profile(已激活)没有Nickname,删除Nickname";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_OP_PROF1;
- setNicknameRequest.profileNickname = "";
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-
- curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
- curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-
- var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-
- curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
- curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
- curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
- curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
- curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
- curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
- curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
- curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_09()
-{
- initial_condition_Start();
- initial_condition_Install_PROFILE_OPERATIONAL1();
-
- tracenamestr = "测试目的:确保方法ES10c.SetNickname在中返回错误在eUICC上不存在目标配置文件的情况下";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME_ICCID_UNKNOWN");
- var setNicknameRequest = new SetNicknameRequest();
- setNicknameRequest.iccid = ICCID_UNKNOWN;
- setNicknameRequest.profileNickname = NICKNAME2;
- setNicknameRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-
- curStrHandle.CheckData("BF2903800101", respData,"SetNickname Response");
-
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261004-021957
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.SetNickname,Test Sequence #01-#09 (Nominal: Add/Update/Remove/Remove-non-existing × Disabled/Enabled;Error: ICCID not found),适用性 M。
+// Test points: IC1-IC1-K1-C1 ATR_present;IC1-IC1-K2-C2 FCP_Template;IC1-IC1-K2-C4 SW
+// IC1-IC1-K3-C4 SW;IC1-IC1-K4-C4 final SW;IC2-IC2-K1-C4 SW;IC2-IC2-K1-C3 CHANNEL_NUMBER extracted
+// IC2-IC2-K2-C4 SW;S3-C1 SW;S3-C2 setNicknameResult ok;S4-C1 SW;S4-C2 profileNickname Nickname 2
+// IC5-IC1-K1-C1 ATR_present;IC5-IC1-K2-C2 FCP_Template;IC5-IC1-K2-C4 SW;IC5-IC1-K3-C4 SW
+// IC5-IC1-K4-C4 final SW;IC6-IC2-K1-C4 SW;IC6-IC2-K1-C3 CHANNEL_NUMBER extracted;IC6-IC2-K2-C4 SW
+// S7-C1 SW;S7-C2 setNicknameResult ok;S8-C1 SW;S8-C2 profileNickname Nickname 2
+// IC9-IC1-K1-C1 ATR_present;IC9-IC1-K2-C2 FCP_Template;IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW
+// IC9-IC1-K4-C4 final SW;IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted
+// IC10-IC2-K2-C4 SW;S11-C1 SW;S11-C2 setNicknameResult ok;S12-C1 SW;S12-C2 profileNickname absent
+// IC13-IC1-K1-C1 ATR_present;IC13-IC1-K2-C2 FCP_Template;IC13-IC1-K2-C4 SW;IC13-IC1-K3-C4 SW
+// IC13-IC1-K4-C4 final SW;IC14-IC2-K1-C4 SW;IC14-IC2-K1-C3 CHANNEL_NUMBER extracted
+// IC14-IC2-K2-C4 SW;S15-C1 SW;S15-C2 setNicknameResult ok;S16-C1 SW;S16-C2 profileNickname absent
+// IC17-IC1-K1-C1 ATR_present;IC17-IC1-K2-C2 FCP_Template;IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW
+// IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW;IC18-IC2-K1-C3 CHANNEL_NUMBER extracted
+// IC18-IC2-K2-C4 SW;S19-C1 SW;S19-C2 setNicknameResult ok;S20-C1 SW
+// S20-C2 profileNickname Nickname 2;IC21-IC1-K1-C1 ATR_present;IC21-IC1-K2-C2 FCP_Template
+// IC21-IC1-K2-C4 SW;IC21-IC1-K3-C4 SW;IC21-IC1-K4-C4 final SW;IC22-IC2-K1-C4 SW
+// IC22-IC2-K1-C3 CHANNEL_NUMBER extracted;IC22-IC2-K2-C4 SW;S23-C1 SW;S23-C2 setNicknameResult ok
+// S24-C1 SW;S24-C2 profileNickname Nickname 2;IC25-IC1-K1-C1 ATR_present
+// IC25-IC1-K2-C2 FCP_Template;IC25-IC1-K2-C4 SW;IC25-IC1-K3-C4 SW;IC25-IC1-K4-C4 final SW
+// IC26-IC2-K1-C4 SW;IC26-IC2-K1-C3 CHANNEL_NUMBER extracted;IC26-IC2-K2-C4 SW;S27-C1 SW
+// S27-C2 setNicknameResult ok;S28-C1 SW;S28-C2 profileNickname absent;IC29-IC1-K1-C1 ATR_present
+// IC29-IC1-K2-C2 FCP_Template;IC29-IC1-K2-C4 SW;IC29-IC1-K3-C4 SW;IC29-IC1-K4-C4 final SW
+// IC30-IC2-K1-C4 SW;IC30-IC2-K1-C3 CHANNEL_NUMBER extracted;IC30-IC2-K2-C4 SW;S31-C1 SW
+// S31-C2 setNicknameResult ok;S32-C1 SW;S32-C2 profileNickname absent;IC33-IC1-K1-C1 ATR_present
+// IC33-IC1-K2-C2 FCP_Template;IC33-IC1-K2-C4 SW;IC33-IC1-K3-C4 SW;IC33-IC1-K4-C4 final SW
+// IC34-IC2-K1-C4 SW;IC34-IC2-K1-C3 CHANNEL_NUMBER extracted;IC34-IC2-K2-C4 SW;S35-C1 SW
+// S35-C2 setNicknameResult iccidNotFound
+// 本函数由 CaseIR 4.2.26.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 M:编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10c_SetNickname_01_09_merged() {
+ var bind = curBind;
+ // GIC-1 卡态编排:PROFILE_OPERATIONAL1 已装载到 eUICC: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // S1/S4-IC PROF1 Disabled;Nickname 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // S2/S3-IC PROF1 Disabled;Nickname = #NICKNAME1(Nickname 1,F_annexA_constants): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // S5/S8-IC PROF1 Enabled;Nickname 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // S9-IC PROF1 Disabled;#ICCID_UNKNOWN(0x98 92 01 0A 21 43 65 87 09 F8,F_annexA_constants)标识的 Profile 不存在: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+
+ // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s36 = bind.resetAndAtr();
+ bind.checkData("IC1-IC1-K1-C1 ATR_present", "1", s36.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s37 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC1-IC1-K2-C2 FCP_Template", "1", s37.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC1-IC1-K2-C4 SW", "9000", s37.sw);
+
+ // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s38 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC1-IC1-K3-C4 SW", "9000", s38.sw);
+
+ // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady39 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC1-IC1-K4-C4 final SW", "9000", steady39.final.sw);
+
+ // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s40 = bind.manageChannelOpen("9000");
+ bind.checkData("IC2-IC2-K1-C4 SW", "9000", s40.sw);
+ bind.checkData("IC2-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s40.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s41 = 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("IC2-IC2-K2-C4 SW", "9000", s41.sw);
+
+ // 步骤 3:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla3 = s40.chan !== null ? (s40.chan <= 3 ? 128 + s40.chan : 188 + s40.chan).toString(16).toUpperCase() : null;
+ var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
+ bind.checkData("S3-C1 SW", "9000", s3.sw);
+ var r2w3 = BindGecaProc.parseGecaResponse(s3.resp, {outer: "BF29", required: ["80"]});
+ bind.checkData("S3-C2 setNicknameResult ok", "00", (r2w3.ok && r2w3.fields["80"] === "00") ? "00" : (r2w3.fields["80"] || "absent"));
+
+ // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla4 = s40.chan !== null ? (s40.chan <= 3 ? 128 + s40.chan : 188 + s40.chan).toString(16).toUpperCase() : null;
+ var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S4-C1 SW", "9000", s4.sw);
+ // Inline ASCII->hex helper (UTF8String expected values; values enter as
+ // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+ function __asciiHex(text) {
+ var out = "";
+ for (var i = 0; i < text.length; i++) {
+ var c = text.charCodeAt(i).toString(16).toUpperCase();
+ out += (c.length === 1 ? "0" + c : c);
+ }
+ return out;
+ }
+ var r2p4 = BindEs10xProcProfile.walkChoiceList(s4.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e4 = (r2p4.elements.length === 1) ? r2p4.elements[0].fields : null;
+ var r2v4 = __asciiHex("Nickname 2");
+ bind.checkData("S4-C2 profileNickname Nickname 2", r2v4, r2e4 === null ? "absent" : (r2e4["90"] === undefined ? "absent" : r2e4["90"]));
+
+ // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s42 = bind.resetAndAtr();
+ bind.checkData("IC5-IC1-K1-C1 ATR_present", "1", s42.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s43 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC5-IC1-K2-C2 FCP_Template", "1", s43.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC5-IC1-K2-C4 SW", "9000", s43.sw);
+
+ // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s44 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC5-IC1-K3-C4 SW", "9000", s44.sw);
+
+ // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady45 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC5-IC1-K4-C4 final SW", "9000", steady45.final.sw);
+
+ // IC ref inline @E 步骤 6(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s46 = bind.manageChannelOpen("9000");
+ bind.checkData("IC6-IC2-K1-C4 SW", "9000", s46.sw);
+ bind.checkData("IC6-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s46.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 6(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s47 = 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("IC6-IC2-K2-C4 SW", "9000", s47.sw);
+
+ // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla7 = s46.chan !== null ? (s46.chan <= 3 ? 128 + s46.chan : 188 + s46.chan).toString(16).toUpperCase() : null;
+ var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
+ bind.checkData("S7-C1 SW", "9000", s7.sw);
+ var r2w7 = BindGecaProc.parseGecaResponse(s7.resp, {outer: "BF29", required: ["80"]});
+ bind.checkData("S7-C2 setNicknameResult ok", "00", (r2w7.ok && r2w7.fields["80"] === "00") ? "00" : (r2w7.fields["80"] || "absent"));
+
+ // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla8 = s46.chan !== null ? (s46.chan <= 3 ? 128 + s46.chan : 188 + s46.chan).toString(16).toUpperCase() : null;
+ var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S8-C1 SW", "9000", s8.sw);
+ // Inline ASCII->hex helper (UTF8String expected values; values enter as
+ // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+ function __asciiHex(text) {
+ var out = "";
+ for (var i = 0; i < text.length; i++) {
+ var c = text.charCodeAt(i).toString(16).toUpperCase();
+ out += (c.length === 1 ? "0" + c : c);
+ }
+ return out;
+ }
+ var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e8 = (r2p8.elements.length === 1) ? r2p8.elements[0].fields : null;
+ var r2v8 = __asciiHex("Nickname 2");
+ bind.checkData("S8-C2 profileNickname Nickname 2", r2v8, r2e8 === null ? "absent" : (r2e8["90"] === undefined ? "absent" : r2e8["90"]));
+
+ // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s48 = bind.resetAndAtr();
+ bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s48.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s49 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s49.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC9-IC1-K2-C4 SW", "9000", s49.sw);
+
+ // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s50 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC9-IC1-K3-C4 SW", "9000", s50.sw);
+
+ // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady51 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady51.final.sw);
+
+ // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s52 = bind.manageChannelOpen("9000");
+ bind.checkData("IC10-IC2-K1-C4 SW", "9000", s52.sw);
+ bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s52.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s53 = 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("IC10-IC2-K2-C4 SW", "9000", s53.sw);
+
+ // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla11 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+ var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
+ bind.checkData("S11-C1 SW", "9000", s11.sw);
+ var r2w11 = BindGecaProc.parseGecaResponse(s11.resp, {outer: "BF29", required: ["80"]});
+ bind.checkData("S11-C2 setNicknameResult ok", "00", (r2w11.ok && r2w11.fields["80"] === "00") ? "00" : (r2w11.fields["80"] || "absent"));
+
+ // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ57_175)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla12 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+ var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S12-C1 SW", "9000", s12.sw);
+ var r2p12 = BindEs10xProcProfile.walkChoiceList(s12.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e12 = (r2p12.elements.length === 1) ? r2p12.elements[0].fields : null;
+ bind.checkData("S12-C2 profileNickname absent", "absent", r2e12 === null ? "no_element" : (r2e12["90"] === undefined ? "absent" : r2e12["90"]));
+
+ // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s54 = bind.resetAndAtr();
+ bind.checkData("IC13-IC1-K1-C1 ATR_present", "1", s54.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s55 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC13-IC1-K2-C2 FCP_Template", "1", s55.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC13-IC1-K2-C4 SW", "9000", s55.sw);
+
+ // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s56 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC13-IC1-K3-C4 SW", "9000", s56.sw);
+
+ // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady57 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC13-IC1-K4-C4 final SW", "9000", steady57.final.sw);
+
+ // IC ref inline @E 步骤 14(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s58 = bind.manageChannelOpen("9000");
+ bind.checkData("IC14-IC2-K1-C4 SW", "9000", s58.sw);
+ bind.checkData("IC14-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s58.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 14(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s59 = 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("IC14-IC2-K2-C4 SW", "9000", s59.sw);
+
+ // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla15 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
+ var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s15.sw);
+ var r2w15 = BindGecaProc.parseGecaResponse(s15.resp, {outer: "BF29", required: ["80"]});
+ bind.checkData("S15-C2 setNicknameResult ok", "00", (r2w15.ok && r2w15.fields["80"] === "00") ? "00" : (r2w15.fields["80"] || "absent"));
+
+ // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ57_176)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla16 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
+ var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S16-C1 SW", "9000", s16.sw);
+ var r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e16 = (r2p16.elements.length === 1) ? r2p16.elements[0].fields : null;
+ bind.checkData("S16-C2 profileNickname absent", "absent", r2e16 === null ? "no_element" : (r2e16["90"] === undefined ? "absent" : r2e16["90"]));
+
+ // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s60 = bind.resetAndAtr();
+ bind.checkData("IC17-IC1-K1-C1 ATR_present", "1", s60.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s61 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s61.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC17-IC1-K2-C4 SW", "9000", s61.sw);
+
+ // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s62 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC17-IC1-K3-C4 SW", "9000", s62.sw);
+
+ // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady63 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady63.final.sw);
+
+ // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s64 = bind.manageChannelOpen("9000");
+ bind.checkData("IC18-IC2-K1-C4 SW", "9000", s64.sw);
+ bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s64.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s65 = 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("IC18-IC2-K2-C4 SW", "9000", s65.sw);
+
+ // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla19 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
+ var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
+ bind.checkData("S19-C1 SW", "9000", s19.sw);
+ var r2w19 = BindGecaProc.parseGecaResponse(s19.resp, {outer: "BF29", required: ["80"]});
+ bind.checkData("S19-C2 setNicknameResult ok", "00", (r2w19.ok && r2w19.fields["80"] === "00") ? "00" : (r2w19.fields["80"] || "absent"));
+
+ // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla20 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
+ var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S20-C1 SW", "9000", s20.sw);
+ // Inline ASCII->hex helper (UTF8String expected values; values enter as
+ // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+ function __asciiHex(text) {
+ var out = "";
+ for (var i = 0; i < text.length; i++) {
+ var c = text.charCodeAt(i).toString(16).toUpperCase();
+ out += (c.length === 1 ? "0" + c : c);
+ }
+ return out;
+ }
+ var r2p20 = BindEs10xProcProfile.walkChoiceList(s20.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e20 = (r2p20.elements.length === 1) ? r2p20.elements[0].fields : null;
+ var r2v20 = __asciiHex("Nickname 2");
+ bind.checkData("S20-C2 profileNickname Nickname 2", r2v20, r2e20 === null ? "absent" : (r2e20["90"] === undefined ? "absent" : r2e20["90"]));
+
+ // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s66 = bind.resetAndAtr();
+ bind.checkData("IC21-IC1-K1-C1 ATR_present", "1", s66.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s67 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC21-IC1-K2-C2 FCP_Template", "1", s67.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC21-IC1-K2-C4 SW", "9000", s67.sw);
+
+ // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s68 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC21-IC1-K3-C4 SW", "9000", s68.sw);
+
+ // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady69 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC21-IC1-K4-C4 final SW", "9000", steady69.final.sw);
+
+ // IC ref inline @E 步骤 22(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s70 = bind.manageChannelOpen("9000");
+ bind.checkData("IC22-IC2-K1-C4 SW", "9000", s70.sw);
+ bind.checkData("IC22-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s70.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 22(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s71 = 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("IC22-IC2-K2-C4 SW", "9000", s71.sw);
+
+ // 步骤 23:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla23 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
+ var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
+ bind.checkData("S23-C1 SW", "9000", s23.sw);
+ var r2w23 = BindGecaProc.parseGecaResponse(s23.resp, {outer: "BF29", required: ["80"]});
+ bind.checkData("S23-C2 setNicknameResult ok", "00", (r2w23.ok && r2w23.fields["80"] === "00") ? "00" : (r2w23.fields["80"] || "absent"));
+
+ // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla24 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
+ var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S24-C1 SW", "9000", s24.sw);
+ // Inline ASCII->hex helper (UTF8String expected values; values enter as
+ // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+ function __asciiHex(text) {
+ var out = "";
+ for (var i = 0; i < text.length; i++) {
+ var c = text.charCodeAt(i).toString(16).toUpperCase();
+ out += (c.length === 1 ? "0" + c : c);
+ }
+ return out;
+ }
+ var r2p24 = BindEs10xProcProfile.walkChoiceList(s24.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e24 = (r2p24.elements.length === 1) ? r2p24.elements[0].fields : null;
+ var r2v24 = __asciiHex("Nickname 2");
+ bind.checkData("S24-C2 profileNickname Nickname 2", r2v24, r2e24 === null ? "absent" : (r2e24["90"] === undefined ? "absent" : r2e24["90"]));
+
+ // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s72 = bind.resetAndAtr();
+ bind.checkData("IC25-IC1-K1-C1 ATR_present", "1", s72.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s73 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC25-IC1-K2-C2 FCP_Template", "1", s73.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC25-IC1-K2-C4 SW", "9000", s73.sw);
+
+ // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s74 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC25-IC1-K3-C4 SW", "9000", s74.sw);
+
+ // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady75 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC25-IC1-K4-C4 final SW", "9000", steady75.final.sw);
+
+ // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s76 = bind.manageChannelOpen("9000");
+ bind.checkData("IC26-IC2-K1-C4 SW", "9000", s76.sw);
+ bind.checkData("IC26-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s76.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s77 = 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("IC26-IC2-K2-C4 SW", "9000", s77.sw);
+
+ // 步骤 27:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla27 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
+ var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
+ bind.checkData("S27-C1 SW", "9000", s27.sw);
+ var r2w27 = BindGecaProc.parseGecaResponse(s27.resp, {outer: "BF29", required: ["80"]});
+ bind.checkData("S27-C2 setNicknameResult ok", "00", (r2w27.ok && r2w27.fields["80"] === "00") ? "00" : (r2w27.fields["80"] || "absent"));
+
+ // 步骤 28:MTD_STORE_DATA(tc_step;REQ: RQ57_175)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla28 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
+ var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S28-C1 SW", "9000", s28.sw);
+ var r2p28 = BindEs10xProcProfile.walkChoiceList(s28.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e28 = (r2p28.elements.length === 1) ? r2p28.elements[0].fields : null;
+ bind.checkData("S28-C2 profileNickname absent", "absent", r2e28 === null ? "no_element" : (r2e28["90"] === undefined ? "absent" : r2e28["90"]));
+
+ // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s78 = bind.resetAndAtr();
+ bind.checkData("IC29-IC1-K1-C1 ATR_present", "1", s78.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s79 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC29-IC1-K2-C2 FCP_Template", "1", s79.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC29-IC1-K2-C4 SW", "9000", s79.sw);
+
+ // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s80 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC29-IC1-K3-C4 SW", "9000", s80.sw);
+
+ // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady81 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC29-IC1-K4-C4 final SW", "9000", steady81.final.sw);
+
+ // IC ref inline @E 步骤 30(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s82 = bind.manageChannelOpen("9000");
+ bind.checkData("IC30-IC2-K1-C4 SW", "9000", s82.sw);
+ bind.checkData("IC30-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s82.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 30(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s83 = 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("IC30-IC2-K2-C4 SW", "9000", s83.sw);
+
+ // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla31 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+ var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
+ bind.checkData("S31-C1 SW", "9000", s31.sw);
+ var r2w31 = BindGecaProc.parseGecaResponse(s31.resp, {outer: "BF29", required: ["80"]});
+ bind.checkData("S31-C2 setNicknameResult ok", "00", (r2w31.ok && r2w31.fields["80"] === "00") ? "00" : (r2w31.fields["80"] || "absent"));
+
+ // 步骤 32:MTD_STORE_DATA(tc_step;REQ: RQ57_176)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla32 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+ var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S32-C1 SW", "9000", s32.sw);
+ var r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e32 = (r2p32.elements.length === 1) ? r2p32.elements[0].fields : null;
+ bind.checkData("S32-C2 profileNickname absent", "absent", r2e32 === null ? "no_element" : (r2e32["90"] === undefined ? "absent" : r2e32["90"]));
+
+ // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+ var s84 = bind.resetAndAtr();
+ bind.checkData("IC33-IC1-K1-C1 ATR_present", "1", s84.atr_hex !== "" ? "1" : "0");
+
+ // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+ // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+ var s85 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+ bind.checkData("IC33-IC1-K2-C2 FCP_Template", "1", s85.resp.length > 0 ? "1" : "0");
+ bind.checkData("IC33-IC1-K2-C4 SW", "9000", s85.sw);
+
+ // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+ var s86 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+ bind.checkData("IC33-IC1-K3-C4 SW", "9000", s86.sw);
+
+ // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+ var steady87 = bind.runToSteadyState(function () {
+ return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+ });
+ bind.checkData("IC33-IC1-K4-C4 final SW", "9000", steady87.final.sw);
+
+ // IC ref inline @E 步骤 34(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+ // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s88 = bind.manageChannelOpen("9000");
+ bind.checkData("IC34-IC2-K1-C4 SW", "9000", s88.sw);
+ bind.checkData("IC34-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s88.chan !== null ? "1" : "0");
+
+ // IC ref inline @E 步骤 34(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+ // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+ var s89 = 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("IC34-IC2-K2-C4 SW", "9000", s89.sw);
+
+ // 步骤 35:MTD_STORE_DATA(tc_step;REQ: RQ57_173, RQ57_178)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var sdCla35 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
+ var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF29185A0A9892010A2143658709F8900A4E69636B6E616D652032", "00", "9000");
+ bind.checkData("S35-C1 SW", "9000", s35.sw);
+ var r2w35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF29", required: ["80"]});
+ bind.checkData("S35-C2 setNicknameResult iccidNotFound", "01", (r2w35.ok && r2w35.fields["80"] === "01") ? "01" : (r2w35.fields["80"] || "absent"));
}