源码对照:4.2.5.2.1
ES8+ 存储元数据 / TC_eUICC_ES8+.StoreMetadata
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
689 行 / 34634 字符 / gb18030
-cas 入口
TC_eUICC_ES8_StoreMetadata/Import/TC_eUICC_ES8_StoreMetadata.js
828 行 / 63768 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js689 行 / 34634 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES8_StoreMetadata_01_Nominal_All_Metadata_fields_present_PNG_icon_used_and_PPR1_set + TC_eUICC_ES8_StoreMetadata_02_Nominal_With_JPG_icon + TC_eUICC_ES8_StoreMetadata_03_Nominal_Without_providing_Profile_Class + TC_eUICC_ES8_StoreMetadata_04_Nominal_With_PPR2_set + TC_eUICC_ES8_StoreMetadata_05_Nominal_With_PPR1_and_PPR2_set + TC_eUICC_ES8_StoreMetadata_06_Nominal_With_several_Notification_events_configured + TC_eUICC_ES8_StoreMetadata_07_Error_ICCID_already_present_in_the_eUICC + TC_eUICC_ES8_StoreMetadata_08_Error_Profile_Policy_Rule_is_set_but_Profile_Owner_is_not + TC_eUICC_ES8_StoreMetadata_09_Error_Profile_Owner_is_set_with_a_wildcard_E_digits + TC_eUICC_ES8_StoreMetadata_10_Error_Icon_Type_is_set_but_icon_is_not (extracted verbatim)
2
3function TC_eUICC_ES8_StoreMetadata_01_Nominal_All_Metadata_fields_present_PNG_icon_used_and_PPR1_set()
4{
5 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata所有字段都存在,其中设置了PNG icon和PPR1";
6 curDis.TraceStart(sno++,tracenamestr);
7
8 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
9 Ini_powerOn_eUICC_LPAe_not_activate();
10
11 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
12 TS_MANAGE_CHANNEL_OPEN();
13
14 curLogicChannel = 1;
15
16 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
17 TS_SELECT("Select ISD",ISD_R_AID,"9000");
18
19 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
20 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
21 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
22 Profile_load_procedure.ES10b_GetEUICCInfo1();
23
24
25 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
26 Profile_load_procedure.ES10b_GetEUICCChallenge();
27
28 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
29 Profile_load_procedure.ES10b_AuthenticateServer();
30
31 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
32 Profile_load_procedure.ES10b_PrepareDownload();
33
34 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
35 Profile_load_procedure.ES10b_GetEID();
36
37 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置了所有的参数,其中配置PNG icon 和PPR1;");
38 Profile_load_procedure.serviceProviderName = SP_NAME1;
39 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
40 Profile_load_procedure.iconType = "01";
41 Profile_load_procedure.icon = ICON_OP_PROF1;
42 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
43 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
44 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
45 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
46 Profile_load_procedure.profileClass = "02";
47 Profile_load_procedure.profilePolicyRules = "0640";
48 Profile_load_procedure.mccMnc = MCC_MNC1;
49
50 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
51
52
53 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
54 var proInfoListRequest = new ProfileInfoListRequest();
55 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
56 proInfoListRequest.tagList = "5A9192939495B6B799";
57 proInfoListRequest.GenHexData();
58 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
59
60 var proInfoListResponse = new ProfileInfoListResponse();
61 proInfoListResponse.checkCardResDataFormat(respData);
62
63 try
64 {
65 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
66 curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
67 curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
68 curStrHandle.CheckData("01", proInfoListResponse.profileInfoListOk.arrOfElement[0].iconType, "iconType");
69 curStrHandle.CheckData(ICON_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].icon, "icon");
70 curStrHandle.CheckData("02", proInfoListResponse.profileInfoListOk.arrOfElement[0].profileClass, "profileClass");
71 curStrHandle.CheckData("04F0", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[0].profileManagementOperation, "profileManagementOperation");
72 curStrHandle.CheckData(TEST_DP_ADDRESS1, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[0].notificationAddress, "notificationAddress");
73 curStrHandle.CheckData(MCC_MNC1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileOwner.mccMnc, "mccMnc");
74 curStrHandle.CheckData("0640", proInfoListResponse.profileInfoListOk.arrOfElement[0].profilePolicyRules, "profilePolicyRules");
75
76 }catch(e){
77 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
78 }
79
80
81 RecoverCard();
82}
83
84function TC_eUICC_ES8_StoreMetadata_02_Nominal_With_JPG_icon ()
85{
86 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中iconType为jpg,icon为#ICON_JPG";
87 curDis.TraceStart(sno++,tracenamestr);
88
89 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
90 Ini_powerOn_eUICC_LPAe_not_activate();
91
92 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
93 TS_MANAGE_CHANNEL_OPEN();
94
95 curLogicChannel = 1;
96
97 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
98 TS_SELECT("Select ISD",ISD_R_AID,"9000");
99
100 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
101 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
102 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
103 Profile_load_procedure.ES10b_GetEUICCInfo1();
104
105
106 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
107 Profile_load_procedure.ES10b_GetEUICCChallenge();
108
109 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
110 Profile_load_procedure.ES10b_AuthenticateServer();
111
112 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
113 Profile_load_procedure.ES10b_PrepareDownload();
114
115 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
116 Profile_load_procedure.ES10b_GetEID();
117
118 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置JPG icon;");
119 Profile_load_procedure.serviceProviderName = SP_NAME1;
120 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
121 Profile_load_procedure.iconType = "00";
122 Profile_load_procedure.icon = ICON_JPG;
123 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
124
125
126 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
127 var proInfoListRequest = new ProfileInfoListRequest();
128 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
129 proInfoListRequest.tagList = "5A91929394";
130 proInfoListRequest.GenHexData();
131 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
132
133 var proInfoListResponse = new ProfileInfoListResponse();
134 proInfoListResponse.checkCardResDataFormat(respData);
135
136 try
137 {
138 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
139 curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
140 curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
141 curStrHandle.CheckData("00", proInfoListResponse.profileInfoListOk.arrOfElement[0].iconType, "iconType");
142 curStrHandle.CheckData(ICON_JPG, proInfoListResponse.profileInfoListOk.arrOfElement[0].icon, "icon");
143
144 }catch(e){
145 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
146 }
147
148
149 RecoverCard();
150}
151
152function TC_eUICC_ES8_StoreMetadata_03_Nominal_Without_providing_Profile_Class ()
153{
154 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中未传入Profile Class。在这种情况下,默认Profile Class应该由eUICC设置为'Operational'";
155 curDis.TraceStart(sno++,tracenamestr);
156
157 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
158 Ini_powerOn_eUICC_LPAe_not_activate();
159
160 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
161 TS_MANAGE_CHANNEL_OPEN();
162
163 curLogicChannel = 1;
164
165 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
166 TS_SELECT("Select ISD",ISD_R_AID,"9000");
167
168 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
169 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
170 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
171 Profile_load_procedure.ES10b_GetEUICCInfo1();
172
173
174 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
175 Profile_load_procedure.ES10b_GetEUICCChallenge();
176
177 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
178 Profile_load_procedure.ES10b_AuthenticateServer();
179
180 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
181 Profile_load_procedure.ES10b_PrepareDownload();
182
183 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
184 Profile_load_procedure.ES10b_GetEID();
185
186 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage, Metadata域中没有配置providing Profile Class,eUICC应自动设置默认配置文件类别为「Operational」;");
187 Profile_load_procedure.serviceProviderName = SP_NAME1;
188 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
189
190 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
191 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
192 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
193 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
194
195 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
196
197
198 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
199 var proInfoListRequest = new ProfileInfoListRequest();
200 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
201 proInfoListRequest.tagList = "5A919295B6";
202 proInfoListRequest.GenHexData();
203 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
204
205 var proInfoListResponse = new ProfileInfoListResponse();
206 proInfoListResponse.checkCardResDataFormat(respData);
207
208 try
209 {
210 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
211 curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
212 curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
213 curStrHandle.CheckData("02", proInfoListResponse.profileInfoListOk.arrOfElement[0].profileClass, "profileClass");//Operational
214
215 }catch(e){
216 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
217 }
218
219
220 RecoverCard();
221}
222
223function TC_eUICC_ES8_StoreMetadata_04_Nominal_With_PPR2_set ()
224{
225 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中profilePolicyRules设置为PPR2";
226 curDis.TraceStart(sno++,tracenamestr);
227
228 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
229 Ini_powerOn_eUICC_LPAe_not_activate();
230
231 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
232 TS_MANAGE_CHANNEL_OPEN();
233
234 curLogicChannel = 1;
235
236 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
237 TS_SELECT("Select ISD",ISD_R_AID,"9000");
238
239 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
240 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
241 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
242 Profile_load_procedure.ES10b_GetEUICCInfo1();
243
244
245 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
246 Profile_load_procedure.ES10b_GetEUICCChallenge();
247
248 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
249 Profile_load_procedure.ES10b_AuthenticateServer();
250
251 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
252 Profile_load_procedure.ES10b_PrepareDownload();
253
254 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
255 Profile_load_procedure.ES10b_GetEID();
256
257 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置PPR2");
258 Profile_load_procedure.serviceProviderName = SP_NAME1;
259 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
260 Profile_load_procedure.profilePolicyRules = "0520";
261 Profile_load_procedure.mccMnc = MCC_MNC1;
262
263 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
264
265
266 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
267 var proInfoListRequest = new ProfileInfoListRequest();
268 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
269 proInfoListRequest.tagList = "5A9192B799";
270 proInfoListRequest.GenHexData();
271 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
272
273 var proInfoListResponse = new ProfileInfoListResponse();
274 proInfoListResponse.checkCardResDataFormat(respData);
275
276 try
277 {
278 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
279 curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
280 curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
281 curStrHandle.CheckData(MCC_MNC1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileOwner.mccMnc, "mccMnc");
282 curStrHandle.CheckData("0520", proInfoListResponse.profileInfoListOk.arrOfElement[0].profilePolicyRules, "profilePolicyRules");
283
284 }catch(e){
285 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
286 }
287
288
289 RecoverCard();
290}
291
292function TC_eUICC_ES8_StoreMetadata_05_Nominal_With_PPR1_and_PPR2_set ()
293{
294 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中profilePolicyRules设置为PPR1和PPR2";
295 curDis.TraceStart(sno++,tracenamestr);
296
297 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
298 Ini_powerOn_eUICC_LPAe_not_activate();
299
300 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
301 TS_MANAGE_CHANNEL_OPEN();
302
303 curLogicChannel = 1;
304
305 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
306 TS_SELECT("Select ISD",ISD_R_AID,"9000");
307
308 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
309 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
310 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
311 Profile_load_procedure.ES10b_GetEUICCInfo1();
312
313
314 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
315 Profile_load_procedure.ES10b_GetEUICCChallenge();
316
317 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
318 Profile_load_procedure.ES10b_AuthenticateServer();
319
320 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
321 Profile_load_procedure.ES10b_PrepareDownload();
322
323 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
324 Profile_load_procedure.ES10b_GetEID();
325
326 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置PPR1和PPR2");
327 Profile_load_procedure.serviceProviderName = SP_NAME1;
328 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
329 Profile_load_procedure.profilePolicyRules = "0560";
330 Profile_load_procedure.mccMnc = MCC_MNC1;
331
332 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
333
334
335 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
336 var proInfoListRequest = new ProfileInfoListRequest();
337 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
338 proInfoListRequest.tagList = "5A9192B799";
339 proInfoListRequest.GenHexData();
340 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
341
342 var proInfoListResponse = new ProfileInfoListResponse();
343 proInfoListResponse.checkCardResDataFormat(respData);
344
345 try
346 {
347 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
348 curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
349 curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
350 curStrHandle.CheckData(MCC_MNC1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileOwner.mccMnc, "mccMnc");
351 curStrHandle.CheckData("0560", proInfoListResponse.profileInfoListOk.arrOfElement[0].profilePolicyRules, "profilePolicyRules");
352
353 }catch(e){
354 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
355 }
356
357
358 RecoverCard();
359}
360
361function TC_eUICC_ES8_StoreMetadata_06_Nominal_With_several_Notification_events_configured()
362{
363 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中notificationConfigurationInfo配置多个通知事件";
364 curDis.TraceStart(sno++,tracenamestr);
365
366 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
367 Ini_powerOn_eUICC_LPAe_not_activate();
368
369 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
370 TS_MANAGE_CHANNEL_OPEN();
371
372 curLogicChannel = 1;
373
374 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
375 TS_SELECT("Select ISD",ISD_R_AID,"9000");
376
377
378 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
379 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
380 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
381 Profile_load_procedure.ES10b_GetEUICCInfo1();
382
383 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
384 Profile_load_procedure.ES10b_GetEUICCChallenge();
385
386 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
387 Profile_load_procedure.ES10b_AuthenticateServer();
388
389 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
390 Profile_load_procedure.ES10b_PrepareDownload();
391
392 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
393 Profile_load_procedure.ES10b_GetEID();
394
395 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置多个Notification events;");
396 Profile_load_procedure.serviceProviderName = SP_NAME1;
397 Profile_load_procedure.profileName = NAME_OP_PROF1;
398 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
399 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
400 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0780";
401 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS3;
402
403 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[1] = new NotificationConfigurationInformation();
404 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[1].profileManagementOperation = "0780";
405 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[1].notificationAddress = TEST_DP_ADDRESS2;
406
407 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[2] = new NotificationConfigurationInformation();
408 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[2].profileManagementOperation = "0640";
409 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[2].notificationAddress = TEST_DP_ADDRESS2;
410
411 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[3] = new NotificationConfigurationInformation();
412 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[3].profileManagementOperation = "0640";
413 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[3].notificationAddress = TEST_DP_ADDRESS3;
414
415 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[4] = new NotificationConfigurationInformation();
416 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[4].profileManagementOperation = "0520";
417 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[4].notificationAddress = TEST_DP_ADDRESS3;
418
419 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[5] = new NotificationConfigurationInformation();
420 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[5].profileManagementOperation = "0520";
421 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[5].notificationAddress = TEST_DP_ADDRESS4;
422
423 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[6] = new NotificationConfigurationInformation();
424 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[6].profileManagementOperation = "0410";
425 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[6].notificationAddress = TEST_DP_ADDRESS1;
426
427 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[7] = new NotificationConfigurationInformation();
428 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[7].profileManagementOperation = "0410";
429 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[7].notificationAddress = TEST_DP_ADDRESS3;
430
431 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
432
433
434 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
435 var proInfoListRequest = new ProfileInfoListRequest();
436 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
437 proInfoListRequest.tagList = "5AB6";
438 proInfoListRequest.GenHexData();
439 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
440
441 var proInfoListResponse = new ProfileInfoListResponse();
442 proInfoListResponse.checkCardResDataFormat(respData);
443
444 try
445 {
446 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
447 curStrHandle.CheckData("0780", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[0].profileManagementOperation, "profileManagementOperation");
448 curStrHandle.CheckData(TEST_DP_ADDRESS3, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[0].notificationAddress, "notificationAddress");
449
450 curStrHandle.CheckData("0780", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[1].profileManagementOperation, "profileManagementOperation");
451 curStrHandle.CheckData(TEST_DP_ADDRESS2, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[1].notificationAddress, "notificationAddress");
452
453 curStrHandle.CheckData("0640", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[2].profileManagementOperation, "profileManagementOperation");
454 curStrHandle.CheckData(TEST_DP_ADDRESS2, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[2].notificationAddress, "notificationAddress");
455
456 curStrHandle.CheckData("0640", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[3].profileManagementOperation, "profileManagementOperation");
457 curStrHandle.CheckData(TEST_DP_ADDRESS3, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[3].notificationAddress, "notificationAddress");
458
459 curStrHandle.CheckData("0520", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[4].profileManagementOperation, "profileManagementOperation");
460 curStrHandle.CheckData(TEST_DP_ADDRESS3, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[4].notificationAddress, "notificationAddress");
461
462 curStrHandle.CheckData("0520", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[5].profileManagementOperation, "profileManagementOperation");
463 curStrHandle.CheckData(TEST_DP_ADDRESS4, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[5].notificationAddress, "notificationAddress");
464
465 curStrHandle.CheckData("0410", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[6].profileManagementOperation, "profileManagementOperation");
466 curStrHandle.CheckData(TEST_DP_ADDRESS1, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[6].notificationAddress, "notificationAddress");
467
468 curStrHandle.CheckData("0410", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[7].profileManagementOperation, "profileManagementOperation");
469 curStrHandle.CheckData(TEST_DP_ADDRESS3, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[7].notificationAddress, "notificationAddress");
470
471
472 }catch(e){
473 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
474 }
475
476
477
478 RecoverCard();
479}
480
481function TC_eUICC_ES8_StoreMetadata_07_Error_ICCID_already_present_in_the_eUICC()
482{
483 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
484 var ISD_P_Test01 = curProfile_ISD_P_AID;
485
486 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中iccid设置为卡上已存在的ICCID";
487 curDis.TraceStart(sno++,tracenamestr);
488
489 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
490 Ini_powerOn_eUICC_LPAe_not_activate();
491
492 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
493 TS_MANAGE_CHANNEL_OPEN();
494
495 curLogicChannel = 1;
496
497 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
498 TS_SELECT("Select ISD",ISD_R_AID,"9000");
499
500 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
501 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
502 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
503 Profile_load_procedure.ES10b_GetEUICCInfo1();
504
505
506 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
507 Profile_load_procedure.ES10b_GetEUICCChallenge();
508
509 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
510 Profile_load_procedure.ES10b_AuthenticateServer();
511
512 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
513 Profile_load_procedure.ES10b_PrepareDownload();
514
515 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
516 Profile_load_procedure.ES10b_GetEID();
517
518 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Profile在eUICC上安装失败:该ICCID已存在;");
519 Profile_load_procedure.serviceProviderName = SP_NAME1;
520 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
521 Profile_load_procedure.iconType = "01";
522 Profile_load_procedure.icon = ICON_OP_PROF1;
523 Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
524 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
525 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
526 Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
527 Profile_load_procedure.profileClass = "02";
528 Profile_load_procedure.profilePolicyRules = "0640";
529 Profile_load_procedure.mccMnc = MCC_MNC1;
530
531 Profile_load_procedure.isErrorTest = true;
532 Profile_load_procedure.bppCommandId = BppCommandId.storeMetadata;
533 Profile_load_procedure.errorReason = ErrorReason.installFailedDueToIccidAlreadyExistsOnEuicc;
534
535 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
536
537
538 RecoverCard();
539}
540
541function TC_eUICC_ES8_StoreMetadata_08_Error_Profile_Policy_Rule_is_set_but_Profile_Owner_is_not()
542{
543
544 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中Profile Policy Rule已设置,但Profile Owner未设置";
545 curDis.TraceStart(sno++,tracenamestr);
546
547 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
548 Ini_powerOn_eUICC_LPAe_not_activate();
549
550 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
551 TS_MANAGE_CHANNEL_OPEN();
552
553 curLogicChannel = 1;
554
555 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
556 TS_SELECT("Select ISD",ISD_R_AID,"9000");
557
558 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
559 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
560 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
561 Profile_load_procedure.ES10b_GetEUICCInfo1();
562
563
564 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
565 Profile_load_procedure.ES10b_GetEUICCChallenge();
566
567 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
568 Profile_load_procedure.ES10b_AuthenticateServer();
569
570 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
571 Profile_load_procedure.ES10b_PrepareDownload();
572
573 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
574 Profile_load_procedure.ES10b_GetEID();
575
576 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Profile在eUICC上安装失败:配置文件策略规则已设置,但配置文件所有者未设置;");
577 Profile_load_procedure.serviceProviderName = SP_NAME1;
578 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
579 Profile_load_procedure.profilePolicyRules = "0520";
580 Profile_load_procedure.SetProfileOwner = false;
581
582 Profile_load_procedure.isErrorTest = true;
583 Profile_load_procedure.bppCommandId = BppCommandId.storeMetadata;
584 Profile_load_procedure.errorReason = ErrorReason.scp03tStructureError + "/" + ErrorReason.incorrectInputValues;
585 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
586
587 RecoverCard();
588}
589
590function TC_eUICC_ES8_StoreMetadata_09_Error_Profile_Owner_is_set_with_a_wildcard_E_digits()
591{
592
593 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中Profile Owner设置为’EEEEEE’";
594 curDis.TraceStart(sno++,tracenamestr);
595
596 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
597 Ini_powerOn_eUICC_LPAe_not_activate();
598
599 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
600 TS_MANAGE_CHANNEL_OPEN();
601
602 curLogicChannel = 1;
603
604 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
605 TS_SELECT("Select ISD",ISD_R_AID,"9000");
606
607 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
608 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
609 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
610 Profile_load_procedure.ES10b_GetEUICCInfo1();
611
612
613 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
614 Profile_load_procedure.ES10b_GetEUICCChallenge();
615
616 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
617 Profile_load_procedure.ES10b_AuthenticateServer();
618
619 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
620 Profile_load_procedure.ES10b_PrepareDownload();
621
622 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
623 Profile_load_procedure.ES10b_GetEID();
624
625 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Profile在eUICC上安装失败:Profile Owner中出现字母通配符占位符E;");
626 Profile_load_procedure.serviceProviderName = SP_NAME1;
627 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
628 Profile_load_procedure.profilePolicyRules = "0520";
629 Profile_load_procedure.mccMnc = MCC_MNC_WILDCARD;
630
631 Profile_load_procedure.isErrorTest = true;
632 Profile_load_procedure.bppCommandId = BppCommandId.storeMetadata;
633 Profile_load_procedure.errorReason = "01/07";
634
635 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
636
637
638 RecoverCard();
639}
640
641function TC_eUICC_ES8_StoreMetadata_10_Error_Icon_Type_is_set_but_icon_is_not ()
642{
643
644 tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中Icon Type已设置,但icon未设置。ASN.1中,如果icon type存在,则icon也应存在";
645 curDis.TraceStart(sno++,tracenamestr);
646
647 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
648 Ini_powerOn_eUICC_LPAe_not_activate();
649
650 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
651 TS_MANAGE_CHANNEL_OPEN();
652
653 curLogicChannel = 1;
654
655 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
656 TS_SELECT("Select ISD",ISD_R_AID,"9000");
657
658 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
659 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
660 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
661 Profile_load_procedure.ES10b_GetEUICCInfo1();
662
663
664 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
665 Profile_load_procedure.ES10b_GetEUICCChallenge();
666
667 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
668 Profile_load_procedure.ES10b_AuthenticateServer();
669
670 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
671 Profile_load_procedure.ES10b_PrepareDownload();
672
673 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
674 Profile_load_procedure.ES10b_GetEID();
675
676 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Profile在eUICC上安装失败:设置了Icon Type,但是没设置icon;");
677 Profile_load_procedure.serviceProviderName = SP_NAME1;
678 Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
679 Profile_load_procedure.iconType = "01";
680
681 Profile_load_procedure.isErrorTest = true;
682 Profile_load_procedure.bppCommandId = BppCommandId.storeMetadata;
683 Profile_load_procedure.errorReason = ErrorReason.scp03tStructureError + "/" + ErrorReason.incorrectInputValues;
684 Profile_load_procedure.ES10b_LoadBoundProfilePackage();
685
686
687 RecoverCard();
688}
689
-cas 盲生成TC_eUICC_ES8_StoreMetadata/Import/TC_eUICC_ES8_StoreMetadata.js828 行 / 63768 字符 / gb18030入口函数 @L22
1// Author: 卡思Cas智能体
2// Date: 20261005-152741
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES8+.StoreMetadata,Test Sequence #01–#09(#10 VOID);#01-#06 Nominal、#07-#09 Error,见 steps 前缀,适用性 M。
4// Test points: S4-C1 SW;S5-C1 SW;S6-C1 SW;S7-C1 SW;S7-C2 SW;S7-C2 resp present;S8-C1 SW
5// S8-C2 contains iccid 989209012143658709F5;S12-C1 SW;S13-C1 SW;S14-C1 SW;S15-C1 SW;S15-C2 SW
6// S15-C2 resp present;S16-C1 SW;S16-C2 iconType;S16-C2 icon present;S20-C1 SW;S21-C1 SW;S22-C1 SW
7// S23-C1 SW;S23-C2 SW;S23-C2 resp present;S24-C1 SW;S24-C2 profileClass;S28-C1 SW;S29-C1 SW
8// S30-C1 SW;S31-C1 SW;S31-C2 SW;S31-C2 resp present;S32-C1 SW
9// S32-C2 profilePolicyRules {ppr2} oracle;S36-C1 SW;S37-C1 SW;S38-C1 SW;S39-C1 SW;S39-C2 SW
10// S39-C2 resp present;S40-C1 SW;S40-C2 profilePolicyRules {ppr1,ppr2} oracle;S44-C1 SW;S45-C1 SW
11// S46-C1 SW;S47-C1 SW;S47-C2 SW;S47-C2 resp present;S48-C1 SW
12// S48-C2 notificationConfigurationInfo count 8;S53-C1 SW;S54-C1 SW;S55-C1 SW;S55-C2 SW
13// S55-C2 resp present;S59-C1 SW;S60-C1 SW;S61-C1 SW;S61-C2 SW;S61-C2 resp present;S65-C1 SW
14// S66-C1 SW;S67-C1 SW;S67-C2 SW;S67-C2 resp present
15// 本函数由 CaseIR 4.2.5.2.1 编译生成(fullwave-blindgen-live-70,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
16// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
17// 适用性 M:编译期门,运行时由 harness 环境前置承担。
18// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
19// GIC 通信初始化+ISD-R 选择+相互认证+End User Confirmation+PrepareDownload(#PREP_DOWNLOAD_NO_CC): declared unexpanded (no fabricated bytes; provenance = expansion_source).
20// GIC-sub PROC_EUICC_INITIALIZATION_SEQUENCE(R2 闭合,K_annexC2_procs 表1256:RESET/[SELECT_MF]/[TERMINAL_CAPABILITY_LPAd]/[TERMINAL_PROFILE]): declared unexpanded (no fabricated bytes; provenance = expansion_source).
21// GIC-sub PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR(R2 闭合,K_annexC2_procs 表1258:[MANAGE_CHANNEL_OPEN]/MTD_SELECT(#ISD_R_AID)): declared unexpanded (no fabricated bytes; provenance = expansion_source).
22function TC_eUICC_ES8_StoreMetadata_01_09_10_VOID_01_06_Nominal_07_09_Error_steps() {
23 var bind = curBind;
24
25 // 步骤 1:Seq#01 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
26 // test-tool internal preparation (no APDU face): runtime-domain
27 // values per CaseIR unresolved (G Annex B generation rules);
28 // no fabricated bytes emitted here.
29
30 // 步骤 2:Seq#01 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
31 // BPP synthesized (4.2.5.2.1 seq#1, structural layer, SCP03t-unprotected): 1349 bytes; segments: INIT=191B, A0=22B, A1=340B, A3=796B.
32 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
33 // [SPEC] TC — SGP.23 4.2.5.2.1 seq#1 接线(段选择/注入面)
34 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
35 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
36 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
37 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
38 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
39 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
40 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
41 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
42 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
43 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
44 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
45 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
46 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
47 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
48 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
49 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
50 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
51 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
52 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
53 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
54 // [HYPOTHESIS] BF25/93+94 icon — Annex E 缺席,自定图标
55 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
56 // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
57 // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
58 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
59 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
60 // [SPEC] PE header/version — PITS asn:67-68 2/3
61 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
62 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
63 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
64 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
65 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
66 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
67 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
68 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
69
70 // 步骤 3:Seq#01 IC3: Split the <BPP> into several segments arrays named: <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>(tc_step)
71 // BPP segment declaration (no APDU face): <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>.
72 // Segment partitioning lives in bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651 segment table; single source of segmentation knowledge — wire sends BPP_SEG_INIT first).
73 // Segment bytes are runtime-domain (BPP synthesized at the MTD_GENERATE_BPP step); not injected into this script; load steps follow the SCRIPT data=null contract.
74 // S3-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
75
76 // 步骤 4:Seq#01 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
77 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
78 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
79 var s4 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
80 bind.checkData("S4-C1 SW", "9000", s4.sw);
81
82 // 步骤 5:Seq#01 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
83 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
84 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
85 var s5 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
86 bind.checkData("S5-C1 SW", "9000", s5.sw);
87
88 // 步骤 6:Seq#01 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
89 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
90 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
91 var s6 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
92 bind.checkData("S6-C1 SW", "9000", s6.sw);
93
94 // 步骤 7:Seq#01 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
95 // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
96 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
97 var s7 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
98 bind.checkData("S7-C1 SW", "9000", s7.sw);
99 bind.checkData("S7-C2 SW", "9000", s7.sw);
100 bind.checkData("S7-C2 resp present", "1", s7.resp.length > 0 ? "1" : "0");
101 // S7-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
102
103 // 步骤 8:Seq#01 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071, RQ29_001, RQ29_002)
104 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
105 var s8 = bind.sendApdu(null, "E2", "91", "00", "BF2D19A00C5A0A989209012143658709F55C095A9192939495B6B799", "00", "9000");
106 bind.checkData("S8-C1 SW", "9000", s8.sw);
107 var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
108 var r2has8_0 = false;
109 for (var r2i8_0 = 0; r2i8_0 < r2p8.elements.length; r2i8_0++) {
110 var f = r2p8.elements[r2i8_0].fields;
111 if (f["5A"] === "989209012143658709F5") { r2has8_0 = true; break; }
112 }
113 bind.checkData("S8-C2 contains iccid 989209012143658709F5", "1", (r2p8.branch_tag === "A0" && r2has8_0) ? "1" : "0");
114 // S8-C3: kind 'requirement' pattern 'metadata consistent; PPR contained; class=operational' has no static generation face (corpus vacuum; see CaseIR unresolved).
115 // S8-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
116
117 // 步骤 9:Seq#02 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
118 // test-tool internal preparation (no APDU face): runtime-domain
119 // values per CaseIR unresolved (G Annex B generation rules);
120 // no fabricated bytes emitted here.
121
122 // 步骤 10:Seq#02 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
123 // BPP synthesized (4.2.5.2.1 seq#2, structural layer, SCP03t-unprotected): 1336 bytes; segments: INIT=191B, A0=22B, A1=327B, A3=796B.
124 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
125 // [SPEC] TC — SGP.23 4.2.5.2.1 seq#2 接线(段选择/注入面)
126 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
127 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
128 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
129 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
130 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
131 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
132 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
133 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
134 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
135 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
136 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
137 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
138 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
139 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
140 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
141 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
142 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
143 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
144 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
145 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
146 // [HYPOTHESIS] BF25/93+94 icon — Annex E 缺席,自定图标
147 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
148 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
149 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
150 // [SPEC] PE header/version — PITS asn:67-68 2/3
151 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
152 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
153 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
154 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
155 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
156 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
157 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
158 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
159
160 // 步骤 11:Seq#02 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
161 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
162 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
163 // S11-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
164
165 // 步骤 12:Seq#02 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
166 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
167 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
168 var s12 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
169 bind.checkData("S12-C1 SW", "9000", s12.sw);
170
171 // 步骤 13:Seq#02 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
172 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
173 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
174 var s13 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
175 bind.checkData("S13-C1 SW", "9000", s13.sw);
176
177 // 步骤 14:Seq#02 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
178 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
179 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
180 var s14 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
181 bind.checkData("S14-C1 SW", "9000", s14.sw);
182
183 // 步骤 15:Seq#02 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
184 // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
185 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
186 var s15 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
187 bind.checkData("S15-C1 SW", "9000", s15.sw);
188 bind.checkData("S15-C2 SW", "9000", s15.sw);
189 bind.checkData("S15-C2 resp present", "1", s15.resp.length > 0 ? "1" : "0");
190 // S15-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
191
192 // 步骤 16:Seq#02 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071)
193 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
194 var s16 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
195 bind.checkData("S16-C1 SW", "9000", s16.sw);
196 // Inline ASCII->hex helper (UTF8String expected values; values enter as
197 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
198 function __asciiHex(text) {
199 var out = "";
200 for (var i = 0; i < text.length; i++) {
201 var c = text.charCodeAt(i).toString(16).toUpperCase();
202 out += (c.length === 1 ? "0" + c : c);
203 }
204 return out;
205 }
206 var r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
207 var r2e16 = null;
208 for (var r2i16 = 0; r2i16 < r2p16.elements.length; r2i16++) {
209 if (r2p16.elements[r2i16].fields["5A"] === "989209012143658709F5") { r2e16 = r2p16.elements[r2i16].fields; break; }
210 }
211 bind.checkData("S16-C2 iconType", "00", r2e16 === null ? "absent" : (r2e16["93"] === undefined ? "absent" : r2e16["93"]));
212 bind.checkData("S16-C2 icon present", "1", (r2e16 !== null && r2e16["94"] !== undefined) ? "1" : "0");
213 // S16-C3: kind 'requirement' pattern 'metadata consistent (jpg)' has no static generation face (corpus vacuum; see CaseIR unresolved).
214 // S16-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
215
216 // 步骤 17:Seq#03 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
217 // test-tool internal preparation (no APDU face): runtime-domain
218 // values per CaseIR unresolved (G Annex B generation rules);
219 // no fabricated bytes emitted here.
220
221 // 步骤 18:Seq#03 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
222 // BPP synthesized (4.2.5.2.1 seq#3, structural layer, SCP03t-unprotected): 1064 bytes; segments: INIT=191B, A0=22B, A1=55B, A3=796B.
223 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
224 // [SPEC] TC — SGP.23 4.2.5.2.1 seq#3 接线(段选择/注入面)
225 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
226 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
227 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
228 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
229 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
230 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
231 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
232 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
233 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
234 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
235 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
236 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
237 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
238 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
239 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
240 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
241 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
242 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
243 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
244 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
245 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
246 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
247 // [SPEC] PE header/version — PITS asn:67-68 2/3
248 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
249 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
250 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
251 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
252 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
253 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
254 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
255 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
256
257 // 步骤 19:Seq#03 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
258 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
259 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
260 // S19-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
261
262 // 步骤 20:Seq#03 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
263 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
264 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
265 var s20 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
266 bind.checkData("S20-C1 SW", "9000", s20.sw);
267
268 // 步骤 21:Seq#03 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
269 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
270 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
271 var s21 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
272 bind.checkData("S21-C1 SW", "9000", s21.sw);
273
274 // 步骤 22:Seq#03 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
275 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
276 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
277 var s22 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
278 bind.checkData("S22-C1 SW", "9000", s22.sw);
279
280 // 步骤 23:Seq#03 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
281 // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
282 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
283 var s23 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
284 bind.checkData("S23-C1 SW", "9000", s23.sw);
285 bind.checkData("S23-C2 SW", "9000", s23.sw);
286 bind.checkData("S23-C2 resp present", "1", s23.resp.length > 0 ? "1" : "0");
287 // S23-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
288
289 // 步骤 24:Seq#03 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071, RQ29_001, RQ29_002)
290 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
291 var s24 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
292 bind.checkData("S24-C1 SW", "9000", s24.sw);
293 // Inline ASCII->hex helper (UTF8String expected values; values enter as
294 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
295 function __asciiHex(text) {
296 var out = "";
297 for (var i = 0; i < text.length; i++) {
298 var c = text.charCodeAt(i).toString(16).toUpperCase();
299 out += (c.length === 1 ? "0" + c : c);
300 }
301 return out;
302 }
303 var r2p24 = BindEs10xProcProfile.walkChoiceList(s24.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
304 var r2e24 = null;
305 for (var r2i24 = 0; r2i24 < r2p24.elements.length; r2i24++) {
306 if (r2p24.elements[r2i24].fields["5A"] === "989209012143658709F5") { r2e24 = r2p24.elements[r2i24].fields; break; }
307 }
308 bind.checkData("S24-C2 profileClass", "02", r2e24 === null ? "absent" : (r2e24["95"] === undefined ? "absent" : r2e24["95"]));
309 // S24-C3: kind 'requirement' pattern 'default profileClass=operational' has no static generation face (corpus vacuum; see CaseIR unresolved).
310 // S24-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
311
312 // 步骤 25:Seq#04 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
313 // test-tool internal preparation (no APDU face): runtime-domain
314 // values per CaseIR unresolved (G Annex B generation rules);
315 // no fabricated bytes emitted here.
316
317 // 步骤 26:Seq#04 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
318 // BPP synthesized (4.2.5.2.1 seq#4, structural layer, SCP03t-unprotected): 1080 bytes; segments: INIT=191B, A0=22B, A1=71B, A3=796B.
319 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
320 // [SPEC] TC — SGP.23 4.2.5.2.1 seq#4 接线(段选择/注入面)
321 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
322 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
323 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
324 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
325 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
326 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
327 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
328 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
329 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
330 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
331 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
332 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
333 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
334 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
335 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
336 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
337 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
338 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
339 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
340 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
341 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
342 // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
343 // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
344 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
345 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
346 // [SPEC] PE header/version — PITS asn:67-68 2/3
347 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
348 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
349 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
350 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
351 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
352 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
353 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
354 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
355
356 // 步骤 27:Seq#04 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
357 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
358 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
359 // S27-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
360
361 // 步骤 28:Seq#04 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
362 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
363 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
364 var s28 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
365 bind.checkData("S28-C1 SW", "9000", s28.sw);
366
367 // 步骤 29:Seq#04 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
368 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
369 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
370 var s29 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
371 bind.checkData("S29-C1 SW", "9000", s29.sw);
372
373 // 步骤 30:Seq#04 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
374 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
375 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
376 var s30 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
377 bind.checkData("S30-C1 SW", "9000", s30.sw);
378
379 // 步骤 31:Seq#04 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
380 // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
381 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
382 var s31 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
383 bind.checkData("S31-C1 SW", "9000", s31.sw);
384 bind.checkData("S31-C2 SW", "9000", s31.sw);
385 bind.checkData("S31-C2 resp present", "1", s31.resp.length > 0 ? "1" : "0");
386 // S31-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
387
388 // 步骤 32:Seq#04 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071, RQ29_001, RQ29_002)
389 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
390 var s32 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C025A99", "00", "9000");
391 bind.checkData("S32-C1 SW", "9000", s32.sw);
392 // Inline ASCII->hex helper (UTF8String expected values; values enter as
393 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
394 function __asciiHex(text) {
395 var out = "";
396 for (var i = 0; i < text.length; i++) {
397 var c = text.charCodeAt(i).toString(16).toUpperCase();
398 out += (c.length === 1 ? "0" + c : c);
399 }
400 return out;
401 }
402 var r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
403 var r2e32 = null;
404 for (var r2i32 = 0; r2i32 < r2p32.elements.length; r2i32++) {
405 if (r2p32.elements[r2i32].fields["5A"] === "989209012143658709F5") { r2e32 = r2p32.elements[r2i32].fields; break; }
406 }
407 // S32-C2: profilePolicyRules {ppr2} 等值比对基准 = PprIds BIT STRING 位定位 oracle(模块未入包)
408 // ——运行时无比对操作数,发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
409 bind.checkData("S32-C2 profilePolicyRules {ppr2} oracle", "ppr_bits_oracle_declared", "oracle_absent_ppr_bits_module_vacuum");
410 // S32-C3: kind 'requirement' pattern 'PPR stored in profile' has no static generation face (corpus vacuum; see CaseIR unresolved).
411 // S32-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
412
413 // 步骤 33:Seq#05 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
414 // test-tool internal preparation (no APDU face): runtime-domain
415 // values per CaseIR unresolved (G Annex B generation rules);
416 // no fabricated bytes emitted here.
417
418 // 步骤 34:Seq#05 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
419 // BPP synthesized (4.2.5.2.1 seq#5, structural layer, SCP03t-unprotected): 1080 bytes; segments: INIT=191B, A0=22B, A1=71B, A3=796B.
420 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
421 // [SPEC] TC — SGP.23 4.2.5.2.1 seq#5 接线(段选择/注入面)
422 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
423 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
424 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
425 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
426 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
427 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
428 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
429 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
430 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
431 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
432 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
433 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
434 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
435 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
436 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
437 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
438 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
439 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
440 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
441 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
442 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
443 // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
444 // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
445 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
446 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
447 // [SPEC] PE header/version — PITS asn:67-68 2/3
448 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
449 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
450 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
451 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
452 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
453 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
454 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
455 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
456
457 // 步骤 35:Seq#05 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
458 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
459 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
460 // S35-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
461
462 // 步骤 36:Seq#05 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
463 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
464 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
465 var s36 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
466 bind.checkData("S36-C1 SW", "9000", s36.sw);
467
468 // 步骤 37:Seq#05 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
469 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
470 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
471 var s37 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
472 bind.checkData("S37-C1 SW", "9000", s37.sw);
473
474 // 步骤 38:Seq#05 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
475 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
476 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
477 var s38 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
478 bind.checkData("S38-C1 SW", "9000", s38.sw);
479
480 // 步骤 39:Seq#05 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
481 // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
482 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
483 var s39 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
484 bind.checkData("S39-C1 SW", "9000", s39.sw);
485 bind.checkData("S39-C2 SW", "9000", s39.sw);
486 bind.checkData("S39-C2 resp present", "1", s39.resp.length > 0 ? "1" : "0");
487 // S39-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
488
489 // 步骤 40:Seq#05 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071, RQ29_001, RQ29_002)
490 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
491 var s40 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C025A99", "00", "9000");
492 bind.checkData("S40-C1 SW", "9000", s40.sw);
493 // Inline ASCII->hex helper (UTF8String expected values; values enter as
494 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
495 function __asciiHex(text) {
496 var out = "";
497 for (var i = 0; i < text.length; i++) {
498 var c = text.charCodeAt(i).toString(16).toUpperCase();
499 out += (c.length === 1 ? "0" + c : c);
500 }
501 return out;
502 }
503 var r2p40 = BindEs10xProcProfile.walkChoiceList(s40.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
504 var r2e40 = null;
505 for (var r2i40 = 0; r2i40 < r2p40.elements.length; r2i40++) {
506 if (r2p40.elements[r2i40].fields["5A"] === "989209012143658709F5") { r2e40 = r2p40.elements[r2i40].fields; break; }
507 }
508 // S40-C2: profilePolicyRules {ppr1,ppr2} 等值比对基准 = PprIds BIT STRING 位定位 oracle(模块未入包)
509 // ——运行时无比对操作数,发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
510 bind.checkData("S40-C2 profilePolicyRules {ppr1,ppr2} oracle", "ppr_bits_oracle_declared", "oracle_absent_ppr_bits_module_vacuum");
511 // S40-C3: kind 'requirement' pattern 'PPRs stored' has no static generation face (corpus vacuum; see CaseIR unresolved).
512 // S40-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
513
514 // 步骤 41:Seq#06 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
515 // test-tool internal preparation (no APDU face): runtime-domain
516 // values per CaseIR unresolved (G Annex B generation rules);
517 // no fabricated bytes emitted here.
518
519 // 步骤 42:Seq#06 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
520 // BPP synthesized (4.2.5.2.1 seq#6, structural layer, SCP03t-unprotected): 1101 bytes; segments: INIT=191B, A0=22B, A1=92B, A3=796B.
521 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
522 // [SPEC] TC — SGP.23 4.2.5.2.1 seq#6 接线(段选择/注入面)
523 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
524 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
525 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
526 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
527 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
528 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
529 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
530 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
531 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
532 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
533 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
534 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
535 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
536 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
537 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
538 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
539 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
540 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
541 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
542 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
543 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
544 // [SPEC] BF25/B6 notificationConfigurationInfo — SGP.22 §5.5.3 :7373 [22] SEQUENCE OF NotificationConfigurationInformation(B6/30/03/0C 结构 SPEC;事件位集/FQDN 值 HYPOTHESIS——Annex E 缺席)
545 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
546 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
547 // [SPEC] PE header/version — PITS asn:67-68 2/3
548 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
549 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
550 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
551 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
552 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
553 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
554 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
555 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
556 // [HYPOTHESIS] TC/metadata-notifs — SGP.23 4.2.5.2.1 seq#6 METADATA_WITH_NOTIFS:#B6 notificationConfigurationInfo(SEQUENCE OF)在场;B6/30/03/0C 结构 SPEC(SGP.22 §5.5.3 :7373),事件位集 0xF0(install/enable/disable/delete)与 FQDN 值为占位 HYPOTHESIS(Annex E 缺席)
557
558 // 步骤 43:Seq#06 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
559 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
560 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
561 // S43-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
562
563 // 步骤 44:Seq#06 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
564 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
565 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
566 var s44 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
567 bind.checkData("S44-C1 SW", "9000", s44.sw);
568
569 // 步骤 45:Seq#06 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
570 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
571 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
572 var s45 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
573 bind.checkData("S45-C1 SW", "9000", s45.sw);
574
575 // 步骤 46:Seq#06 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
576 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
577 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
578 var s46 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
579 bind.checkData("S46-C1 SW", "9000", s46.sw);
580
581 // 步骤 47:Seq#06 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
582 // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
583 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
584 var s47 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
585 bind.checkData("S47-C1 SW", "9000", s47.sw);
586 bind.checkData("S47-C2 SW", "9000", s47.sw);
587 bind.checkData("S47-C2 resp present", "1", s47.resp.length > 0 ? "1" : "0");
588 // S47-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
589
590 // 步骤 48:Seq#06 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071)
591 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
592 var s48 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C025AB6", "00", "9000");
593 bind.checkData("S48-C1 SW", "9000", s48.sw);
594 // Inline ASCII->hex helper (UTF8String expected values; values enter as
595 // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
596 function __asciiHex(text) {
597 var out = "";
598 for (var i = 0; i < text.length; i++) {
599 var c = text.charCodeAt(i).toString(16).toUpperCase();
600 out += (c.length === 1 ? "0" + c : c);
601 }
602 return out;
603 }
604 var r2p48 = BindEs10xProcProfile.walkChoiceList(s48.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
605 var r2e48 = null;
606 for (var r2i48 = 0; r2i48 < r2p48.elements.length; r2i48++) {
607 if (r2p48.elements[r2i48].fields["5A"] === "989209012143658709F5") { r2e48 = r2p48.elements[r2i48].fields; break; }
608 }
609 bind.checkData("S48-C2 notificationConfigurationInfo count 8", "8", r2e48 === null ? "absent" : (r2e48["B6"] === undefined ? "absent" : String(BindEs10xProcProfile.parseBerTlv(r2e48["B6"]).length)));
610
611 // 步骤 49:Seq#07 IC1: 通信初始化+选 ISD-R+相互认证+End User Confirmation+#PREP_DOWNLOAD_NO_CC(General IC 前置链)(tc_step;non_wire)
612 // General IC precondition-chain prose reference (no per-line APDU
613 // materialization): sub-commands are execution-side / registered in
614 // initial_conditions; no fabricated bytes emitted here (see CaseIR
615 // unresolved/open_items).
616
617 // 步骤 50:Seq#07 IC2: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
618 // test-tool internal preparation (no APDU face): runtime-domain
619 // values per CaseIR unresolved (G Annex B generation rules);
620 // no fabricated bytes emitted here.
621
622 // 步骤 51:Seq#07 IC3: <BPP> = MTD_GENERATE_BPP(tc_step)
623 // BPP synthesized (4.2.5.2.1 seq#7, structural layer, SCP03t-unprotected): 1349 bytes; segments: INIT=191B, A0=22B, A1=340B, A3=796B.
624 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
625 // [SPEC] TC — SGP.23 4.2.5.2.1 seq#7 接线(段选择/注入面)
626 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
627 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
628 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
629 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
630 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
631 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
632 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
633 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
634 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
635 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
636 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
637 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
638 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
639 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
640 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
641 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
642 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
643 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
644 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
645 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
646 // [HYPOTHESIS] BF25/93+94 icon — Annex E 缺席,自定图标
647 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
648 // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
649 // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
650 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
651 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
652 // [SPEC] PE header/version — PITS asn:67-68 2/3
653 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
654 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
655 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
656 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
657 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
658 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
659 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
660 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
661 // [SPEC] TC/error — SGP.23 4.2.5.2.1 seq#7(E 表 :1890-1911)Error: ICCID already present in the eUICC:初始条件 PROFILE_OPERATIONAL1 已安装且 Disabled;MTD_GENERATE_BPP 第三操作数 #METADATA_OP_PROF1(=#R_GET_METADATA_OP_PROF1 回读面:iccid #ICCID_OP_PROF1、PNG icon、profileClass operational、profileOwner mccMnc、PPR1)的 ICCID 与已装 profile 重复 → A1 末包 R_PIR_ICCID_ALREADY_EXIST(errorReason installFailedDueToIccidAlreadyExistsOnEuicc;RQ55_030/RQ25_017)。结构层名义 BPP(NO_PARAM、零畸形),冲突由 eUICC 卡态触发;meta_iccid_hex 显式声明与已装 ICCID 相同(=DEFAULT_ICCID_EF)。值域 HYPOTHESIS(Annex E 缺席)。
662
663 // 步骤 52:Seq#07 IC4: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
664 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
665 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
666 // S52-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
667
668 // 步骤 53:Seq#07 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
669 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
670 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
671 var s53 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
672 bind.checkData("S53-C1 SW", "9000", s53.sw);
673
674 // 步骤 54:Seq#07 IC6: MTD_STORE_DATA_SCRIPT(tc_step)
675 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
676 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
677 var s54 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
678 bind.checkData("S54-C1 SW", "9000", s54.sw);
679
680 // 步骤 55:Seq#07 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040, RQ25_017, RQ31_166, RQ55_030, RQ55_032, RQ25_024, RQ25_025, RQ25_026)
681 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
682 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
683 var s55 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
684 bind.checkData("S55-C1 SW", "9000", s55.sw);
685 bind.checkData("S55-C2 SW", "9000", s55.sw);
686 bind.checkData("S55-C2 resp present", "1", s55.resp.length > 0 ? "1" : "0");
687 // S55-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
688
689 // 步骤 56:Seq#08 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
690 // test-tool internal preparation (no APDU face): runtime-domain
691 // values per CaseIR unresolved (G Annex B generation rules);
692 // no fabricated bytes emitted here.
693
694 // 步骤 57:Seq#08 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
695 // BPP synthesized (4.2.5.2.1 seq#8, structural layer, SCP03t-unprotected): 1068 bytes; segments: INIT=191B, A0=22B, A1=59B, A3=796B.
696 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
697 // [SPEC] TC — SGP.23 4.2.5.2.1 seq#8 接线(段选择/注入面)
698 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
699 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
700 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
701 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
702 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
703 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
704 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
705 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
706 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
707 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
708 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
709 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
710 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
711 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
712 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
713 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
714 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
715 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
716 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
717 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
718 // [SPEC] BF25/99 profilePolicyRules — PPR 在场而 profileOwner 缺席(SGP.23 4.2.5.2.1 seq#08 #METADATA_PPR_NO_OWNER 拒装变体;SGP.22 :7441 SHALL 被违反)
719 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
720 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
721 // [SPEC] PE header/version — PITS asn:67-68 2/3
722 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
723 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
724 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
725 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
726 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
727 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
728 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
729 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
730 // [SPEC] TC/error — SGP.23 4.2.5.2.1 seq#8(E 表 :1913-1932)Error: Profile Policy Rule is set but Profile Owner is not:初始条件 PROFILE_OPERATIONAL1 未装载;MTD_GENERATE_BPP 第三操作数 #METADATA_PPR_NO_OWNER = StoreMetadataRequest{iccid #ICCID_OP_PROF1, serviceProviderName #SP_NAME1, profileName #NAME_OP_PROF1, profilePolicyRules {ppr2}}(Annex A :17709)——PPR2 在场而 profileOwner 缺席,违反 SGP.22 :7441 profileOwner SHALL 随 profilePolicyRules 在场(RQ55_035)→ A1 末包 R_PIR_METADATA_INVALID(NOTE: errorReason pprNotAllowed/installFailedDueToUnknownError 亦可接受)。结构层故意省略 B7 profileOwner(ppr_without_owner 抑制);iccid/sp/name 沿用本 TC 参数化缺省(HYPOTHESIS,Annex 值域面不作发布断言)。
731
732 // 步骤 58:Seq#08 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
733 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
734 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
735 // S58-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
736
737 // 步骤 59:Seq#08 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
738 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
739 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
740 var s59 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
741 bind.checkData("S59-C1 SW", "9000", s59.sw);
742
743 // 步骤 60:Seq#08 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
744 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
745 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
746 var s60 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
747 bind.checkData("S60-C1 SW", "9000", s60.sw);
748
749 // 步骤 61:Seq#08 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040, RQ31_166, RQ55_030, RQ55_032, RQ25_024, RQ25_025, RQ25_026, RQ25_017)
750 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
751 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
752 var s61 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
753 bind.checkData("S61-C1 SW", "9000", s61.sw);
754 bind.checkData("S61-C2 SW", "9000", s61.sw);
755 bind.checkData("S61-C2 resp present", "1", s61.resp.length > 0 ? "1" : "0");
756 // S61-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
757
758 // 步骤 62:Seq#09 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
759 // test-tool internal preparation (no APDU face): runtime-domain
760 // values per CaseIR unresolved (G Annex B generation rules);
761 // no fabricated bytes emitted here.
762
763 // 步骤 63:Seq#09 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
764 // BPP synthesized (4.2.5.2.1 seq#9, structural layer, SCP03t-unprotected): 1077 bytes; segments: INIT=191B, A0=22B, A1=68B, A3=796B.
765 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
766 // [SPEC] TC — SGP.23 4.2.5.2.1 seq#9 接线(段选择/注入面)
767 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
768 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
769 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
770 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
771 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
772 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
773 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
774 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
775 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
776 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
777 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
778 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
779 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
780 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
781 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
782 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
783 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
784 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
785 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
786 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
787 // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
788 // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
789 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
790 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
791 // [SPEC] PE header/version — PITS asn:67-68 2/3
792 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
793 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
794 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
795 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
796 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
797 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
798 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
799 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
800 // [SPEC] TC/error — SGP.23 4.2.5.2.1 seq#9(E 表 :1934-1953)Error: Profile Owner is set with a wildcard ('E') digits:初始条件 PROFILE_OPERATIONAL1 未装载;MTD_GENERATE_BPP 第三操作数 #METADATA_WILDCARD = StoreMetadataRequest{iccid #ICCID_OP_PROF1, serviceProviderName #SP_NAME1, profileName #NAME_OP_PROF1, profileOwner { mccMnc #MCC_MNC_WILDCARD }, profilePolicyRules {ppr2}}(Annex A :17713);#MCC_MNC_WILDCARD = 0x92 F9 EE(Annex A :16583,24.008 BCD 编码,MNC nibble=E 通配)违反 RQ55_035 mccMnc SHALL 不含通配 'E' 数字 → A1 末包 R_PIR_METADATA_INVALID(NOTE: errorReason pprNotAllowed 亦可接受)。B7 mccMnc 取规范常量 92F9EE(SPEC);iccid/sp/name 沿用本 TC 参数化缺省(HYPOTHESIS)。
801
802 // 步骤 64:Seq#09 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
803 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
804 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
805 // S64-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
806
807 // 步骤 65:Seq#09 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
808 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
809 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
810 var s65 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
811 bind.checkData("S65-C1 SW", "9000", s65.sw);
812
813 // 步骤 66:Seq#09 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
814 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
815 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
816 var s66 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
817 bind.checkData("S66-C1 SW", "9000", s66.sw);
818
819 // 步骤 67:Seq#09 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040, RQ31_166, RQ55_030, RQ55_032, RQ25_024, RQ25_025, RQ25_026, RQ25_017)
820 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
821 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
822 var s67 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
823 bind.checkData("S67-C1 SW", "9000", s67.sw);
824 bind.checkData("S67-C2 SW", "9000", s67.sw);
825 bind.checkData("S67-C2 resp present", "1", s67.resp.length > 0 ? "1" : "0");
826 // S67-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
827}
828
完整 unified diff
行级差异:新增 826 行 / 删除 687 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(1518 行)
--- -man
+++ -cas
@@ -1,689 +1,828 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES8_StoreMetadata_01_Nominal_All_Metadata_fields_present_PNG_icon_used_and_PPR1_set + TC_eUICC_ES8_StoreMetadata_02_Nominal_With_JPG_icon + TC_eUICC_ES8_StoreMetadata_03_Nominal_Without_providing_Profile_Class + TC_eUICC_ES8_StoreMetadata_04_Nominal_With_PPR2_set + TC_eUICC_ES8_StoreMetadata_05_Nominal_With_PPR1_and_PPR2_set + TC_eUICC_ES8_StoreMetadata_06_Nominal_With_several_Notification_events_configured + TC_eUICC_ES8_StoreMetadata_07_Error_ICCID_already_present_in_the_eUICC + TC_eUICC_ES8_StoreMetadata_08_Error_Profile_Policy_Rule_is_set_but_Profile_Owner_is_not + TC_eUICC_ES8_StoreMetadata_09_Error_Profile_Owner_is_set_with_a_wildcard_E_digits + TC_eUICC_ES8_StoreMetadata_10_Error_Icon_Type_is_set_but_icon_is_not (extracted verbatim)
-
-function TC_eUICC_ES8_StoreMetadata_01_Nominal_All_Metadata_fields_present_PNG_icon_used_and_PPR1_set()
-{
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata所有字段都存在,其中设置了PNG icon和PPR1";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置了所有的参数,其中配置PNG icon 和PPR1;");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
- Profile_load_procedure.iconType = "01";
- Profile_load_procedure.icon = ICON_OP_PROF1;
- Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
- Profile_load_procedure.profileClass = "02";
- Profile_load_procedure.profilePolicyRules = "0640";
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A9192939495B6B799";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
- curStrHandle.CheckData("01", proInfoListResponse.profileInfoListOk.arrOfElement[0].iconType, "iconType");
- curStrHandle.CheckData(ICON_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].icon, "icon");
- curStrHandle.CheckData("02", proInfoListResponse.profileInfoListOk.arrOfElement[0].profileClass, "profileClass");
- curStrHandle.CheckData("04F0", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[0].profileManagementOperation, "profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[0].notificationAddress, "notificationAddress");
- curStrHandle.CheckData(MCC_MNC1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileOwner.mccMnc, "mccMnc");
- curStrHandle.CheckData("0640", proInfoListResponse.profileInfoListOk.arrOfElement[0].profilePolicyRules, "profilePolicyRules");
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_StoreMetadata_02_Nominal_With_JPG_icon ()
-{
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中iconType为jpg,icon为#ICON_JPG";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置JPG icon;");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
- Profile_load_procedure.iconType = "00";
- Profile_load_procedure.icon = ICON_JPG;
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A91929394";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
- curStrHandle.CheckData("00", proInfoListResponse.profileInfoListOk.arrOfElement[0].iconType, "iconType");
- curStrHandle.CheckData(ICON_JPG, proInfoListResponse.profileInfoListOk.arrOfElement[0].icon, "icon");
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_StoreMetadata_03_Nominal_Without_providing_Profile_Class ()
-{
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中未传入Profile Class。在这种情况下,默认Profile Class应该由eUICC设置为'Operational'";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage, Metadata域中没有配置providing Profile Class,eUICC应自动设置默认配置文件类别为「Operational」;");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
-
- Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A919295B6";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
- curStrHandle.CheckData("02", proInfoListResponse.profileInfoListOk.arrOfElement[0].profileClass, "profileClass");//Operational
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_StoreMetadata_04_Nominal_With_PPR2_set ()
-{
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中profilePolicyRules设置为PPR2";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置PPR2");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
- Profile_load_procedure.profilePolicyRules = "0520";
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A9192B799";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
- curStrHandle.CheckData(MCC_MNC1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileOwner.mccMnc, "mccMnc");
- curStrHandle.CheckData("0520", proInfoListResponse.profileInfoListOk.arrOfElement[0].profilePolicyRules, "profilePolicyRules");
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_StoreMetadata_05_Nominal_With_PPR1_and_PPR2_set ()
-{
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中profilePolicyRules设置为PPR1和PPR2";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置PPR1和PPR2");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
- Profile_load_procedure.profilePolicyRules = "0560";
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5A9192B799";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(SP_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].serviceProviderName, "serviceProviderName");
- curStrHandle.CheckData(PROFILE_OPERATIONAL1_NAME1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileName, "profileName");
- curStrHandle.CheckData(MCC_MNC1, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileOwner.mccMnc, "mccMnc");
- curStrHandle.CheckData("0560", proInfoListResponse.profileInfoListOk.arrOfElement[0].profilePolicyRules, "profilePolicyRules");
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_StoreMetadata_06_Nominal_With_several_Notification_events_configured()
-{
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中notificationConfigurationInfo配置多个通知事件";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Metadata域中配置多个Notification events;");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = NAME_OP_PROF1;
- Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0780";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS3;
-
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[1] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[1].profileManagementOperation = "0780";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[1].notificationAddress = TEST_DP_ADDRESS2;
-
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[2] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[2].profileManagementOperation = "0640";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[2].notificationAddress = TEST_DP_ADDRESS2;
-
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[3] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[3].profileManagementOperation = "0640";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[3].notificationAddress = TEST_DP_ADDRESS3;
-
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[4] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[4].profileManagementOperation = "0520";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[4].notificationAddress = TEST_DP_ADDRESS3;
-
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[5] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[5].profileManagementOperation = "0520";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[5].notificationAddress = TEST_DP_ADDRESS4;
-
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[6] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[6].profileManagementOperation = "0410";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[6].notificationAddress = TEST_DP_ADDRESS1;
-
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[7] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[7].profileManagementOperation = "0410";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[7].notificationAddress = TEST_DP_ADDRESS3;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile信息;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "5AB6";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData("0780", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[0].profileManagementOperation, "profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS3, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[0].notificationAddress, "notificationAddress");
-
- curStrHandle.CheckData("0780", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[1].profileManagementOperation, "profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS2, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[1].notificationAddress, "notificationAddress");
-
- curStrHandle.CheckData("0640", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[2].profileManagementOperation, "profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS2, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[2].notificationAddress, "notificationAddress");
-
- curStrHandle.CheckData("0640", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[3].profileManagementOperation, "profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS3, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[3].notificationAddress, "notificationAddress");
-
- curStrHandle.CheckData("0520", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[4].profileManagementOperation, "profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS3, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[4].notificationAddress, "notificationAddress");
-
- curStrHandle.CheckData("0520", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[5].profileManagementOperation, "profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS4, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[5].notificationAddress, "notificationAddress");
-
- curStrHandle.CheckData("0410", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[6].profileManagementOperation, "profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS1, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[6].notificationAddress, "notificationAddress");
-
- curStrHandle.CheckData("0410", proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[7].profileManagementOperation, "profileManagementOperation");
- curStrHandle.CheckData(TEST_DP_ADDRESS3, proInfoListResponse.profileInfoListOk.arrOfElement[0].notificationConfigurationInfo.arrOfElement[7].notificationAddress, "notificationAddress");
-
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_StoreMetadata_07_Error_ICCID_already_present_in_the_eUICC()
-{
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中iccid设置为卡上已存在的ICCID";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Profile在eUICC上安装失败:该ICCID已存在;");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
- Profile_load_procedure.iconType = "01";
- Profile_load_procedure.icon = ICON_OP_PROF1;
- Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
- Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
- Profile_load_procedure.profileClass = "02";
- Profile_load_procedure.profilePolicyRules = "0640";
- Profile_load_procedure.mccMnc = MCC_MNC1;
-
- Profile_load_procedure.isErrorTest = true;
- Profile_load_procedure.bppCommandId = BppCommandId.storeMetadata;
- Profile_load_procedure.errorReason = ErrorReason.installFailedDueToIccidAlreadyExistsOnEuicc;
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_StoreMetadata_08_Error_Profile_Policy_Rule_is_set_but_Profile_Owner_is_not()
-{
-
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中Profile Policy Rule已设置,但Profile Owner未设置";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Profile在eUICC上安装失败:配置文件策略规则已设置,但配置文件所有者未设置;");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
- Profile_load_procedure.profilePolicyRules = "0520";
- Profile_load_procedure.SetProfileOwner = false;
-
- Profile_load_procedure.isErrorTest = true;
- Profile_load_procedure.bppCommandId = BppCommandId.storeMetadata;
- Profile_load_procedure.errorReason = ErrorReason.scp03tStructureError + "/" + ErrorReason.incorrectInputValues;
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_StoreMetadata_09_Error_Profile_Owner_is_set_with_a_wildcard_E_digits()
-{
-
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中Profile Owner设置为’EEEEEE’";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Profile在eUICC上安装失败:Profile Owner中出现字母通配符占位符E;");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
- Profile_load_procedure.profilePolicyRules = "0520";
- Profile_load_procedure.mccMnc = MCC_MNC_WILDCARD;
-
- Profile_load_procedure.isErrorTest = true;
- Profile_load_procedure.bppCommandId = BppCommandId.storeMetadata;
- Profile_load_procedure.errorReason = "01/07";
-
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_StoreMetadata_10_Error_Icon_Type_is_set_but_icon_is_not ()
-{
-
- tracenamestr = "测试目的:下载PROFILE_OPERATIONAL1,Metadata中Icon Type已设置,但icon未设置。ASN.1中,如果icon type存在,则icon也应存在";
- curDis.TraceStart(sno++,tracenamestr);
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage,Profile在eUICC上安装失败:设置了Icon Type,但是没设置icon;");
- Profile_load_procedure.serviceProviderName = SP_NAME1;
- Profile_load_procedure.profileName = PROFILE_OPERATIONAL1_NAME1;
- Profile_load_procedure.iconType = "01";
-
- Profile_load_procedure.isErrorTest = true;
- Profile_load_procedure.bppCommandId = BppCommandId.storeMetadata;
- Profile_load_procedure.errorReason = ErrorReason.scp03tStructureError + "/" + ErrorReason.incorrectInputValues;
- Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261005-152741
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES8+.StoreMetadata,Test Sequence #01–#09(#10 VOID);#01-#06 Nominal、#07-#09 Error,见 steps 前缀,适用性 M。
+// Test points: S4-C1 SW;S5-C1 SW;S6-C1 SW;S7-C1 SW;S7-C2 SW;S7-C2 resp present;S8-C1 SW
+// S8-C2 contains iccid 989209012143658709F5;S12-C1 SW;S13-C1 SW;S14-C1 SW;S15-C1 SW;S15-C2 SW
+// S15-C2 resp present;S16-C1 SW;S16-C2 iconType;S16-C2 icon present;S20-C1 SW;S21-C1 SW;S22-C1 SW
+// S23-C1 SW;S23-C2 SW;S23-C2 resp present;S24-C1 SW;S24-C2 profileClass;S28-C1 SW;S29-C1 SW
+// S30-C1 SW;S31-C1 SW;S31-C2 SW;S31-C2 resp present;S32-C1 SW
+// S32-C2 profilePolicyRules {ppr2} oracle;S36-C1 SW;S37-C1 SW;S38-C1 SW;S39-C1 SW;S39-C2 SW
+// S39-C2 resp present;S40-C1 SW;S40-C2 profilePolicyRules {ppr1,ppr2} oracle;S44-C1 SW;S45-C1 SW
+// S46-C1 SW;S47-C1 SW;S47-C2 SW;S47-C2 resp present;S48-C1 SW
+// S48-C2 notificationConfigurationInfo count 8;S53-C1 SW;S54-C1 SW;S55-C1 SW;S55-C2 SW
+// S55-C2 resp present;S59-C1 SW;S60-C1 SW;S61-C1 SW;S61-C2 SW;S61-C2 resp present;S65-C1 SW
+// S66-C1 SW;S67-C1 SW;S67-C2 SW;S67-C2 resp present
+// 本函数由 CaseIR 4.2.5.2.1 编译生成(fullwave-blindgen-live-70,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 环境前置承担。
+// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
+// GIC 通信初始化+ISD-R 选择+相互认证+End User Confirmation+PrepareDownload(#PREP_DOWNLOAD_NO_CC): declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// GIC-sub PROC_EUICC_INITIALIZATION_SEQUENCE(R2 闭合,K_annexC2_procs 表1256:RESET/[SELECT_MF]/[TERMINAL_CAPABILITY_LPAd]/[TERMINAL_PROFILE]): declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// GIC-sub PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR(R2 闭合,K_annexC2_procs 表1258:[MANAGE_CHANNEL_OPEN]/MTD_SELECT(#ISD_R_AID)): declared unexpanded (no fabricated bytes; provenance = expansion_source).
+function TC_eUICC_ES8_StoreMetadata_01_09_10_VOID_01_06_Nominal_07_09_Error_steps() {
+ var bind = curBind;
+
+ // 步骤 1:Seq#01 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 2:Seq#01 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.5.2.1 seq#1, structural layer, SCP03t-unprotected): 1349 bytes; segments: INIT=191B, A0=22B, A1=340B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.5.2.1 seq#1 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [HYPOTHESIS] BF25/93+94 icon — Annex E 缺席,自定图标
+ // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
+ // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
+ // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+
+ // 步骤 3:Seq#01 IC3: Split the <BPP> into several segments arrays named: <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>(tc_step)
+ // BPP segment declaration (no APDU face): <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>.
+ // Segment partitioning lives in bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651 segment table; single source of segmentation knowledge — wire sends BPP_SEG_INIT first).
+ // Segment bytes are runtime-domain (BPP synthesized at the MTD_GENERATE_BPP step); not injected into this script; load steps follow the SCRIPT data=null contract.
+ // S3-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 4:Seq#01 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s4 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S4-C1 SW", "9000", s4.sw);
+
+ // 步骤 5:Seq#01 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s5 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S5-C1 SW", "9000", s5.sw);
+
+ // 步骤 6:Seq#01 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s6 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S6-C1 SW", "9000", s6.sw);
+
+ // 步骤 7:Seq#01 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
+ // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s7 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S7-C1 SW", "9000", s7.sw);
+ bind.checkData("S7-C2 SW", "9000", s7.sw);
+ bind.checkData("S7-C2 resp present", "1", s7.resp.length > 0 ? "1" : "0");
+ // S7-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 8:Seq#01 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071, RQ29_001, RQ29_002)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s8 = bind.sendApdu(null, "E2", "91", "00", "BF2D19A00C5A0A989209012143658709F55C095A9192939495B6B799", "00", "9000");
+ bind.checkData("S8-C1 SW", "9000", s8.sw);
+ var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has8_0 = false;
+ for (var r2i8_0 = 0; r2i8_0 < r2p8.elements.length; r2i8_0++) {
+ var f = r2p8.elements[r2i8_0].fields;
+ if (f["5A"] === "989209012143658709F5") { r2has8_0 = true; break; }
+ }
+ bind.checkData("S8-C2 contains iccid 989209012143658709F5", "1", (r2p8.branch_tag === "A0" && r2has8_0) ? "1" : "0");
+ // S8-C3: kind 'requirement' pattern 'metadata consistent; PPR contained; class=operational' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S8-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
+
+ // 步骤 9:Seq#02 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 10:Seq#02 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.5.2.1 seq#2, structural layer, SCP03t-unprotected): 1336 bytes; segments: INIT=191B, A0=22B, A1=327B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.5.2.1 seq#2 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [HYPOTHESIS] BF25/93+94 icon — Annex E 缺席,自定图标
+ // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+
+ // 步骤 11:Seq#02 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S11-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 12:Seq#02 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s12 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S12-C1 SW", "9000", s12.sw);
+
+ // 步骤 13:Seq#02 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s13 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S13-C1 SW", "9000", s13.sw);
+
+ // 步骤 14:Seq#02 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s14 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S14-C1 SW", "9000", s14.sw);
+
+ // 步骤 15:Seq#02 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
+ // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s15 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s15.sw);
+ bind.checkData("S15-C2 SW", "9000", s15.sw);
+ bind.checkData("S15-C2 resp present", "1", s15.resp.length > 0 ? "1" : "0");
+ // S15-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 16:Seq#02 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s16 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S16-C1 SW", "9000", s16.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 r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e16 = null;
+ for (var r2i16 = 0; r2i16 < r2p16.elements.length; r2i16++) {
+ if (r2p16.elements[r2i16].fields["5A"] === "989209012143658709F5") { r2e16 = r2p16.elements[r2i16].fields; break; }
+ }
+ bind.checkData("S16-C2 iconType", "00", r2e16 === null ? "absent" : (r2e16["93"] === undefined ? "absent" : r2e16["93"]));
+ bind.checkData("S16-C2 icon present", "1", (r2e16 !== null && r2e16["94"] !== undefined) ? "1" : "0");
+ // S16-C3: kind 'requirement' pattern 'metadata consistent (jpg)' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S16-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
+
+ // 步骤 17:Seq#03 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 18:Seq#03 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.5.2.1 seq#3, structural layer, SCP03t-unprotected): 1064 bytes; segments: INIT=191B, A0=22B, A1=55B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.5.2.1 seq#3 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+
+ // 步骤 19:Seq#03 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S19-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 20:Seq#03 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s20 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S20-C1 SW", "9000", s20.sw);
+
+ // 步骤 21:Seq#03 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s21 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S21-C1 SW", "9000", s21.sw);
+
+ // 步骤 22:Seq#03 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s22 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S22-C1 SW", "9000", s22.sw);
+
+ // 步骤 23:Seq#03 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
+ // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s23 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S23-C1 SW", "9000", s23.sw);
+ bind.checkData("S23-C2 SW", "9000", s23.sw);
+ bind.checkData("S23-C2 resp present", "1", s23.resp.length > 0 ? "1" : "0");
+ // S23-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 24:Seq#03 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071, RQ29_001, RQ29_002)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s24 = bind.sendApdu(null, "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 = null;
+ for (var r2i24 = 0; r2i24 < r2p24.elements.length; r2i24++) {
+ if (r2p24.elements[r2i24].fields["5A"] === "989209012143658709F5") { r2e24 = r2p24.elements[r2i24].fields; break; }
+ }
+ bind.checkData("S24-C2 profileClass", "02", r2e24 === null ? "absent" : (r2e24["95"] === undefined ? "absent" : r2e24["95"]));
+ // S24-C3: kind 'requirement' pattern 'default profileClass=operational' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S24-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
+
+ // 步骤 25:Seq#04 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 26:Seq#04 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.5.2.1 seq#4, structural layer, SCP03t-unprotected): 1080 bytes; segments: INIT=191B, A0=22B, A1=71B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.5.2.1 seq#4 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
+ // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
+ // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+
+ // 步骤 27:Seq#04 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S27-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 28:Seq#04 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s28 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S28-C1 SW", "9000", s28.sw);
+
+ // 步骤 29:Seq#04 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s29 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S29-C1 SW", "9000", s29.sw);
+
+ // 步骤 30:Seq#04 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s30 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S30-C1 SW", "9000", s30.sw);
+
+ // 步骤 31:Seq#04 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
+ // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s31 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S31-C1 SW", "9000", s31.sw);
+ bind.checkData("S31-C2 SW", "9000", s31.sw);
+ bind.checkData("S31-C2 resp present", "1", s31.resp.length > 0 ? "1" : "0");
+ // S31-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 32:Seq#04 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071, RQ29_001, RQ29_002)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s32 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C025A99", "00", "9000");
+ bind.checkData("S32-C1 SW", "9000", s32.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 r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e32 = null;
+ for (var r2i32 = 0; r2i32 < r2p32.elements.length; r2i32++) {
+ if (r2p32.elements[r2i32].fields["5A"] === "989209012143658709F5") { r2e32 = r2p32.elements[r2i32].fields; break; }
+ }
+ // S32-C2: profilePolicyRules {ppr2} 等值比对基准 = PprIds BIT STRING 位定位 oracle(模块未入包)
+ // ——运行时无比对操作数,发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
+ bind.checkData("S32-C2 profilePolicyRules {ppr2} oracle", "ppr_bits_oracle_declared", "oracle_absent_ppr_bits_module_vacuum");
+ // S32-C3: kind 'requirement' pattern 'PPR stored in profile' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S32-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
+
+ // 步骤 33:Seq#05 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 34:Seq#05 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.5.2.1 seq#5, structural layer, SCP03t-unprotected): 1080 bytes; segments: INIT=191B, A0=22B, A1=71B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.5.2.1 seq#5 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
+ // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
+ // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+
+ // 步骤 35:Seq#05 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S35-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 36:Seq#05 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s36 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S36-C1 SW", "9000", s36.sw);
+
+ // 步骤 37:Seq#05 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s37 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S37-C1 SW", "9000", s37.sw);
+
+ // 步骤 38:Seq#05 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s38 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S38-C1 SW", "9000", s38.sw);
+
+ // 步骤 39:Seq#05 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
+ // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s39 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S39-C1 SW", "9000", s39.sw);
+ bind.checkData("S39-C2 SW", "9000", s39.sw);
+ bind.checkData("S39-C2 resp present", "1", s39.resp.length > 0 ? "1" : "0");
+ // S39-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 40:Seq#05 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071, RQ29_001, RQ29_002)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s40 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C025A99", "00", "9000");
+ bind.checkData("S40-C1 SW", "9000", s40.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 r2p40 = BindEs10xProcProfile.walkChoiceList(s40.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e40 = null;
+ for (var r2i40 = 0; r2i40 < r2p40.elements.length; r2i40++) {
+ if (r2p40.elements[r2i40].fields["5A"] === "989209012143658709F5") { r2e40 = r2p40.elements[r2i40].fields; break; }
+ }
+ // S40-C2: profilePolicyRules {ppr1,ppr2} 等值比对基准 = PprIds BIT STRING 位定位 oracle(模块未入包)
+ // ——运行时无比对操作数,发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
+ bind.checkData("S40-C2 profilePolicyRules {ppr1,ppr2} oracle", "ppr_bits_oracle_declared", "oracle_absent_ppr_bits_module_vacuum");
+ // S40-C3: kind 'requirement' pattern 'PPRs stored' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S40-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
+
+ // 步骤 41:Seq#06 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 42:Seq#06 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.5.2.1 seq#6, structural layer, SCP03t-unprotected): 1101 bytes; segments: INIT=191B, A0=22B, A1=92B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.5.2.1 seq#6 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
+ // [SPEC] BF25/B6 notificationConfigurationInfo — SGP.22 §5.5.3 :7373 [22] SEQUENCE OF NotificationConfigurationInformation(B6/30/03/0C 结构 SPEC;事件位集/FQDN 值 HYPOTHESIS——Annex E 缺席)
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+ // [HYPOTHESIS] TC/metadata-notifs — SGP.23 4.2.5.2.1 seq#6 METADATA_WITH_NOTIFS:#B6 notificationConfigurationInfo(SEQUENCE OF)在场;B6/30/03/0C 结构 SPEC(SGP.22 §5.5.3 :7373),事件位集 0xF0(install/enable/disable/delete)与 FQDN 值为占位 HYPOTHESIS(Annex E 缺席)
+
+ // 步骤 43:Seq#06 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S43-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 44:Seq#06 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s44 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S44-C1 SW", "9000", s44.sw);
+
+ // 步骤 45:Seq#06 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s45 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S45-C1 SW", "9000", s45.sw);
+
+ // 步骤 46:Seq#06 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_166, RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s46 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S46-C1 SW", "9000", s46.sw);
+
+ // 步骤 47:Seq#06 2: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
+ // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s47 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S47-C1 SW", "9000", s47.sw);
+ bind.checkData("S47-C2 SW", "9000", s47.sw);
+ bind.checkData("S47-C2 resp present", "1", s47.resp.length > 0 ? "1" : "0");
+ // S47-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 48:Seq#06 3: MTD_STORE_DATA(tc_step;REQ: RQ32_071)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s48 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C025AB6", "00", "9000");
+ bind.checkData("S48-C1 SW", "9000", s48.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 r2p48 = BindEs10xProcProfile.walkChoiceList(s48.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e48 = null;
+ for (var r2i48 = 0; r2i48 < r2p48.elements.length; r2i48++) {
+ if (r2p48.elements[r2i48].fields["5A"] === "989209012143658709F5") { r2e48 = r2p48.elements[r2i48].fields; break; }
+ }
+ bind.checkData("S48-C2 notificationConfigurationInfo count 8", "8", r2e48 === null ? "absent" : (r2e48["B6"] === undefined ? "absent" : String(BindEs10xProcProfile.parseBerTlv(r2e48["B6"]).length)));
+
+ // 步骤 49:Seq#07 IC1: 通信初始化+选 ISD-R+相互认证+End User Confirmation+#PREP_DOWNLOAD_NO_CC(General IC 前置链)(tc_step;non_wire)
+ // General IC precondition-chain prose reference (no per-line APDU
+ // materialization): sub-commands are execution-side / registered in
+ // initial_conditions; no fabricated bytes emitted here (see CaseIR
+ // unresolved/open_items).
+
+ // 步骤 50:Seq#07 IC2: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 51:Seq#07 IC3: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.5.2.1 seq#7, structural layer, SCP03t-unprotected): 1349 bytes; segments: INIT=191B, A0=22B, A1=340B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.5.2.1 seq#7 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [HYPOTHESIS] BF25/93+94 icon — Annex E 缺席,自定图标
+ // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
+ // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
+ // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+ // [SPEC] TC/error — SGP.23 4.2.5.2.1 seq#7(E 表 :1890-1911)Error: ICCID already present in the eUICC:初始条件 PROFILE_OPERATIONAL1 已安装且 Disabled;MTD_GENERATE_BPP 第三操作数 #METADATA_OP_PROF1(=#R_GET_METADATA_OP_PROF1 回读面:iccid #ICCID_OP_PROF1、PNG icon、profileClass operational、profileOwner mccMnc、PPR1)的 ICCID 与已装 profile 重复 → A1 末包 R_PIR_ICCID_ALREADY_EXIST(errorReason installFailedDueToIccidAlreadyExistsOnEuicc;RQ55_030/RQ25_017)。结构层名义 BPP(NO_PARAM、零畸形),冲突由 eUICC 卡态触发;meta_iccid_hex 显式声明与已装 ICCID 相同(=DEFAULT_ICCID_EF)。值域 HYPOTHESIS(Annex E 缺席)。
+
+ // 步骤 52:Seq#07 IC4: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S52-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 53:Seq#07 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s53 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S53-C1 SW", "9000", s53.sw);
+
+ // 步骤 54:Seq#07 IC6: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s54 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S54-C1 SW", "9000", s54.sw);
+
+ // 步骤 55:Seq#07 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040, RQ25_017, RQ31_166, RQ55_030, RQ55_032, RQ25_024, RQ25_025, RQ25_026)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s55 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S55-C1 SW", "9000", s55.sw);
+ bind.checkData("S55-C2 SW", "9000", s55.sw);
+ bind.checkData("S55-C2 resp present", "1", s55.resp.length > 0 ? "1" : "0");
+ // S55-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 56:Seq#08 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 57:Seq#08 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.5.2.1 seq#8, structural layer, SCP03t-unprotected): 1068 bytes; segments: INIT=191B, A0=22B, A1=59B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.5.2.1 seq#8 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [SPEC] BF25/99 profilePolicyRules — PPR 在场而 profileOwner 缺席(SGP.23 4.2.5.2.1 seq#08 #METADATA_PPR_NO_OWNER 拒装变体;SGP.22 :7441 SHALL 被违反)
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+ // [SPEC] TC/error — SGP.23 4.2.5.2.1 seq#8(E 表 :1913-1932)Error: Profile Policy Rule is set but Profile Owner is not:初始条件 PROFILE_OPERATIONAL1 未装载;MTD_GENERATE_BPP 第三操作数 #METADATA_PPR_NO_OWNER = StoreMetadataRequest{iccid #ICCID_OP_PROF1, serviceProviderName #SP_NAME1, profileName #NAME_OP_PROF1, profilePolicyRules {ppr2}}(Annex A :17709)——PPR2 在场而 profileOwner 缺席,违反 SGP.22 :7441 profileOwner SHALL 随 profilePolicyRules 在场(RQ55_035)→ A1 末包 R_PIR_METADATA_INVALID(NOTE: errorReason pprNotAllowed/installFailedDueToUnknownError 亦可接受)。结构层故意省略 B7 profileOwner(ppr_without_owner 抑制);iccid/sp/name 沿用本 TC 参数化缺省(HYPOTHESIS,Annex 值域面不作发布断言)。
+
+ // 步骤 58:Seq#08 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S58-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 59:Seq#08 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s59 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S59-C1 SW", "9000", s59.sw);
+
+ // 步骤 60:Seq#08 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s60 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S60-C1 SW", "9000", s60.sw);
+
+ // 步骤 61:Seq#08 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040, RQ31_166, RQ55_030, RQ55_032, RQ25_024, RQ25_025, RQ25_026, RQ25_017)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s61 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S61-C1 SW", "9000", s61.sw);
+ bind.checkData("S61-C2 SW", "9000", s61.sw);
+ bind.checkData("S61-C2 resp present", "1", s61.resp.length > 0 ? "1" : "0");
+ // S61-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 62:Seq#09 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 63:Seq#09 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.5.2.1 seq#9, structural layer, SCP03t-unprotected): 1077 bytes; segments: INIT=191B, A0=22B, A1=68B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.5.2.1 seq#9 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [HYPOTHESIS] BF25/B7 profileOwner — OperatorId mccMnc 值(3GPP 24.008 编码面 SPEC,值 HYPOTHESIS)
+ // [SPEC] BF25/99 profilePolicyRules — SGP.22 :1438 PprIds BIT STRING 编码面
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+ // [SPEC] TC/error — SGP.23 4.2.5.2.1 seq#9(E 表 :1934-1953)Error: Profile Owner is set with a wildcard ('E') digits:初始条件 PROFILE_OPERATIONAL1 未装载;MTD_GENERATE_BPP 第三操作数 #METADATA_WILDCARD = StoreMetadataRequest{iccid #ICCID_OP_PROF1, serviceProviderName #SP_NAME1, profileName #NAME_OP_PROF1, profileOwner { mccMnc #MCC_MNC_WILDCARD }, profilePolicyRules {ppr2}}(Annex A :17713);#MCC_MNC_WILDCARD = 0x92 F9 EE(Annex A :16583,24.008 BCD 编码,MNC nibble=E 通配)违反 RQ55_035 mccMnc SHALL 不含通配 'E' 数字 → A1 末包 R_PIR_METADATA_INVALID(NOTE: errorReason pprNotAllowed 亦可接受)。B7 mccMnc 取规范常量 92F9EE(SPEC);iccid/sp/name 沿用本 TC 参数化缺省(HYPOTHESIS)。
+
+ // 步骤 64:Seq#09 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S64-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 65:Seq#09 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s65 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S65-C1 SW", "9000", s65.sw);
+
+ // 步骤 66:Seq#09 IC5: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s66 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S66-C1 SW", "9000", s66.sw);
+
+ // 步骤 67:Seq#09 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_167, RQ55_029, RQ55_031, RQ55_033, RQ55_035, RQ24_028, RQ57_040, RQ31_166, RQ55_030, RQ55_032, RQ25_024, RQ25_025, RQ25_026, RQ25_017)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s67 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S67-C1 SW", "9000", s67.sw);
+ bind.checkData("S67-C2 SW", "9000", s67.sw);
+ bind.checkData("S67-C2 resp present", "1", s67.resp.length > 0 ? "1" : "0");
+ // S67-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
}