源码对照:4.2.19.2.2
ES10b 取消会话(Brainpool) / TC_eUICC_ES10b.CancelSessionBRP
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
448 行 / 17372 字符 / gb18030
-cas 入口
TC_eUICC_ES10b_CancelSessionBRP/Import/TC_eUICC_ES10b_CancelSessionBRP.js
413 行 / 33738 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js448 行 / 17372 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10b_CancelSessionBRP_01_Nominal_End_User_Rejection + TC_eUICC_ES10b_CancelSessionBRP_02_Nominal_End_User_Postponed + TC_eUICC_ES10b_CancelSessionBRP_03_Nominal_Timeout + TC_eUICC_ES10b_CancelSessionBRP_04_Nominal_PPR_not_allowed + TC_eUICC_ES10b_CancelSessionBRP_05_Nominal_Metadata_Mismatch + TC_eUICC_ES10b_CancelSessionBRP_06_Nominal_BPP_Parsing_Error + TC_eUICC_ES10b_CancelSessionBRP_07_Nominal_Load_BPP_Execution_Error + TC_eUICC_ES10b_CancelSessionBRP_08_Nominal_Undefined_Reason (extracted verbatim)
2
3function TC_eUICC_ES10b_CancelSessionBRP_01_Nominal_End_User_Rejection()
4{
5 //测试入口条件
6 if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
7 return;
8
9 tracenamestr = "测试目的:终端用户拒绝";
10 curDis.TraceStart(sno++,tracenamestr);
11
12 curDis.TestStepStart("eUICC卡片初始化;");
13 Ini_powerOn_eUICC_LPAe_not_activate();
14
15 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
16 TS_MANAGE_CHANNEL_OPEN();
17
18 curLogicChannel = 1;
19
20 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
21 TS_SELECT("Select ISD",ISD_R_AID,"9000");
22
23 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
24 pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
25 pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
26
27 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
28 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
29 Profile_load_procedure.ES10b_GetEUICCInfo1();
30
31 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
32 Profile_load_procedure.ES10b_GetEUICCChallenge();
33
34 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
35 Profile_load_procedure.ES10b_AuthenticateServer();
36
37 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
38 Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.endUserRejection);
39
40 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
41 Profile_load_procedure.PrepareDownloadisErrorTest = true;
42 Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
43 Profile_load_procedure.ES10b_PrepareDownload();
44
45 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
46 Profile_load_procedure.ES10b_GetEID();
47
48 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
49 Profile_load_procedure.isErrorTest = true;
50 euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
51 Profile_load_procedure.ES10b_AuthenticateServer();
52
53 RecoverCard();
54}
55
56function TC_eUICC_ES10b_CancelSessionBRP_02_Nominal_End_User_Postponed()
57{
58 //测试入口条件
59 if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
60 return;
61
62 tracenamestr = "测试目的:终端用户推迟";
63 curDis.TraceStart(sno++,tracenamestr);
64
65 curDis.TestStepStart("eUICC卡片初始化;");
66 Ini_powerOn_eUICC_LPAe_not_activate();
67
68 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
69 TS_MANAGE_CHANNEL_OPEN();
70
71 curLogicChannel = 1;
72
73 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
74 TS_SELECT("Select ISD",ISD_R_AID,"9000");
75
76 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
77 pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
78 pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
79
80 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
81 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
82 Profile_load_procedure.ES10b_GetEUICCInfo1();
83
84
85 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
86 Profile_load_procedure.ES10b_GetEUICCChallenge();
87
88 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
89 Profile_load_procedure.ES10b_AuthenticateServer();
90
91 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
92 Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.postponed);
93
94 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
95 Profile_load_procedure.PrepareDownloadisErrorTest = true;
96 Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
97 Profile_load_procedure.ES10b_PrepareDownload();
98
99 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
100 Profile_load_procedure.ES10b_GetEID();
101
102 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
103 Profile_load_procedure.isErrorTest = true;
104 euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
105 Profile_load_procedure.ES10b_AuthenticateServer();
106
107 RecoverCard();
108}
109
110function TC_eUICC_ES10b_CancelSessionBRP_03_Nominal_Timeout()
111{
112 //测试入口条件
113 if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
114 return;
115
116 tracenamestr = "测试目的:超时";
117 curDis.TraceStart(sno++,tracenamestr);
118
119 curDis.TestStepStart("eUICC卡片初始化;");
120 Ini_powerOn_eUICC_LPAe_not_activate();
121
122 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
123 TS_MANAGE_CHANNEL_OPEN();
124
125 curLogicChannel = 1;
126
127 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
128 TS_SELECT("Select ISD",ISD_R_AID,"9000");
129
130 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
131 pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
132 pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
133
134 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
135 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
136 Profile_load_procedure.ES10b_GetEUICCInfo1();
137
138 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
139 Profile_load_procedure.ES10b_GetEUICCChallenge();
140
141 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
142 Profile_load_procedure.ES10b_AuthenticateServer();
143
144 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
145 Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.timeout);
146
147 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
148 Profile_load_procedure.PrepareDownloadisErrorTest = true;
149 Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
150 Profile_load_procedure.ES10b_PrepareDownload();
151
152 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
153 Profile_load_procedure.ES10b_GetEID();
154
155 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
156 Profile_load_procedure.isErrorTest = true;
157 euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
158 Profile_load_procedure.ES10b_AuthenticateServer();
159
160 RecoverCard();
161}
162
163function TC_eUICC_ES10b_CancelSessionBRP_04_Nominal_PPR_not_allowed ()
164{
165 //测试入口条件
166 if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
167 return;
168
169 tracenamestr = "测试目的: PPR不被允许";
170 curDis.TraceStart(sno++,tracenamestr);
171
172 curDis.TestStepStart("eUICC卡片初始化;");
173 Ini_powerOn_eUICC_LPAe_not_activate();
174
175 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
176 TS_MANAGE_CHANNEL_OPEN();
177
178 curLogicChannel = 1;
179
180 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
181 TS_SELECT("Select ISD",ISD_R_AID,"9000");
182
183 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
184 pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
185 pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
186
187 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
188 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
189 Profile_load_procedure.ES10b_GetEUICCInfo1();
190
191 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
192 Profile_load_procedure.ES10b_GetEUICCChallenge();
193
194 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
195 Profile_load_procedure.ES10b_AuthenticateServer();
196
197 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
198 Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.pprNotAllowed);
199
200 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
201 Profile_load_procedure.PrepareDownloadisErrorTest = true;
202 Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
203 Profile_load_procedure.ES10b_PrepareDownload();
204
205 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
206 Profile_load_procedure.ES10b_GetEID();
207
208 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
209 Profile_load_procedure.isErrorTest = true;
210 euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
211 Profile_load_procedure.ES10b_AuthenticateServer();
212
213 RecoverCard();
214}
215
216function TC_eUICC_ES10b_CancelSessionBRP_05_Nominal_Metadata_Mismatch()
217{
218 //测试入口条件
219 if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
220 return;
221
222 tracenamestr = "测试目的:元数据不匹配";
223 curDis.TraceStart(sno++,tracenamestr);
224
225 curDis.TestStepStart("eUICC卡片初始化;");
226 Ini_powerOn_eUICC_LPAe_not_activate();
227
228 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
229 TS_MANAGE_CHANNEL_OPEN();
230
231 curLogicChannel = 1;
232
233 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
234 TS_SELECT("Select ISD",ISD_R_AID,"9000");
235
236 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
237 pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
238 pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
239
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 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
245 Profile_load_procedure.ES10b_GetEUICCChallenge();
246
247 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
248 Profile_load_procedure.ES10b_AuthenticateServer();
249
250 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
251 Profile_load_procedure.ES10b_PrepareDownload();
252
253 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
254 Profile_load_procedure.ES10b_GetEID();
255
256 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
257 Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.metadataMismatch);
258
259 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
260 Profile_load_procedure.NoSessionContextInitialiseSecureChannel();
261
262 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
263 Profile_load_procedure.PrepareDownloadisErrorTest = true;
264 Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
265 Profile_load_procedure.ES10b_PrepareDownload();
266
267 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
268 Profile_load_procedure.isErrorTest = true;
269 euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
270 Profile_load_procedure.ES10b_AuthenticateServer();
271
272 RecoverCard();
273}
274
275function TC_eUICC_ES10b_CancelSessionBRP_06_Nominal_BPP_Parsing_Error()
276{
277 //测试入口条件
278 if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
279 return;
280
281 tracenamestr = "测试目的:BPP解析错误";
282 curDis.TraceStart(sno++,tracenamestr);
283
284 curDis.TestStepStart("eUICC卡片初始化;");
285 Ini_powerOn_eUICC_LPAe_not_activate();
286
287 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
288 TS_MANAGE_CHANNEL_OPEN();
289
290 curLogicChannel = 1;
291
292 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
293 TS_SELECT("Select ISD",ISD_R_AID,"9000");
294
295 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
296 pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
297 pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
298
299 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
300 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
301 Profile_load_procedure.ES10b_GetEUICCInfo1();
302
303 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
304 Profile_load_procedure.ES10b_GetEUICCChallenge();
305
306 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
307 Profile_load_procedure.ES10b_AuthenticateServer();
308
309 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
310 Profile_load_procedure.ES10b_PrepareDownload();
311
312 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
313 Profile_load_procedure.ES10b_GetEID();
314
315 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
316 Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.loadBppExecutionError);
317
318 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
319 Profile_load_procedure.NoSessionContextInitialiseSecureChannel();
320
321 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
322 Profile_load_procedure.PrepareDownloadisErrorTest = true;
323 Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
324 Profile_load_procedure.ES10b_PrepareDownload();
325
326 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
327 Profile_load_procedure.isErrorTest = true;
328 euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
329 Profile_load_procedure.ES10b_AuthenticateServer();
330
331 RecoverCard();
332}
333
334function TC_eUICC_ES10b_CancelSessionBRP_07_Nominal_Load_BPP_Execution_Error()
335{
336 //测试入口条件
337 if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
338 return;
339
340 tracenamestr = "测试目的:下载BPP执行错误";
341 curDis.TraceStart(sno++,tracenamestr);
342
343 curDis.TestStepStart("eUICC卡片初始化;");
344 Ini_powerOn_eUICC_LPAe_not_activate();
345
346 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
347 TS_MANAGE_CHANNEL_OPEN();
348
349 curLogicChannel = 1;
350
351 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
352 TS_SELECT("Select ISD",ISD_R_AID,"9000");
353
354 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
355 pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
356 pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
357
358 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
359 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
360 Profile_load_procedure.ES10b_GetEUICCInfo1();
361
362 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
363 Profile_load_procedure.ES10b_GetEUICCChallenge();
364
365 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
366 Profile_load_procedure.ES10b_AuthenticateServer();
367
368 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
369 Profile_load_procedure.ES10b_PrepareDownload();
370
371 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
372 Profile_load_procedure.ES10b_GetEID();
373
374 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
375 Profile_load_procedure.InitialiseSecureChannel();
376
377 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
378 Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.loadBppExecutionError);
379
380 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
381 Profile_load_procedure.NoSessionContextConfigureISDP();
382
383 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
384 Profile_load_procedure.PrepareDownloadisErrorTest = true;
385 Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
386 Profile_load_procedure.ES10b_PrepareDownload();
387
388 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
389 Profile_load_procedure.isErrorTest = true;
390 euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
391 Profile_load_procedure.ES10b_AuthenticateServer();
392
393 RecoverCard();
394}
395
396function TC_eUICC_ES10b_CancelSessionBRP_08_Nominal_Undefined_Reason ()
397{
398 //测试入口条件
399 if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
400 return;
401
402 tracenamestr = "测试目的:08 Nominal: 未定义原因";
403 curDis.TraceStart(sno++,tracenamestr);
404
405 curDis.TestStepStart("eUICC卡片初始化;");
406 Ini_powerOn_eUICC_LPAe_not_activate();
407
408 curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
409 TS_MANAGE_CHANNEL_OPEN();
410
411 curLogicChannel = 1;
412
413 curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
414 TS_SELECT("Select ISD",ISD_R_AID,"9000");
415
416 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
417 pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
418 pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
419
420 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
421 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
422 Profile_load_procedure.ES10b_GetEUICCInfo1();
423
424 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
425 Profile_load_procedure.ES10b_GetEUICCChallenge();
426
427 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
428 Profile_load_procedure.ES10b_AuthenticateServer();
429
430 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
431 Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.undefinedReason);
432
433 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
434 Profile_load_procedure.PrepareDownloadisErrorTest = true;
435 Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
436 Profile_load_procedure.ES10b_PrepareDownload();
437
438 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
439 Profile_load_procedure.ES10b_GetEID();
440
441 curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
442 Profile_load_procedure.isErrorTest = true;
443 euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
444 Profile_load_procedure.ES10b_AuthenticateServer();
445
446 RecoverCard();
447}
448
-cas 盲生成TC_eUICC_ES10b_CancelSessionBRP/Import/TC_eUICC_ES10b_CancelSessionBRP.js413 行 / 33738 字符 / gb18030入口函数 @L29
1// Author: 卡思Cas智能体
2// Date: 20261004-143915
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10b.CancelSessionBRP,Test Sequence #01-#08 (8 Nominal sequences;各序列 SHALL be the same as 4.2.19.2.1 对应序列,唯全部密钥与证书基于 BrainpoolP256r1),适用性 C002。
4// Test points: S1-C1 assemble;S1-C2 assemble;S1-C3 assemble;S1-C4 assemble;S1-C1 SW
5// S1-C2 cancelSessionResponseOk structure;S1-C3 cancelSessionResponseOk structure
6// S1-C4 transactionId echo;S2-C1 proc state;S2-C2 proc state;S3-C1 assemble;S3-C2 assemble
7// S3-C3 assemble;S3-C4 assemble;S3-C1 SW;S3-C2 cancelSessionResponseOk structure
8// S3-C3 cancelSessionResponseOk structure;S3-C4 transactionId echo;S4-C1 proc state
9// S4-C2 proc state;S5-C1 assemble;S5-C2 assemble;S5-C3 assemble;S5-C4 assemble;S5-C1 SW
10// S5-C2 cancelSessionResponseOk structure;S5-C3 cancelSessionResponseOk structure
11// S5-C4 transactionId echo;S6-C1 proc state;S6-C2 proc state;S7-C1 assemble;S7-C2 assemble
12// S7-C3 assemble;S7-C4 assemble;S7-C1 SW;S7-C2 cancelSessionResponseOk structure
13// S7-C3 cancelSessionResponseOk structure;S7-C4 transactionId echo;S8-C1 proc state
14// S8-C2 proc state;S9-C1 assemble;S9-C2 assemble;S9-C3 assemble;S9-C4 assemble;S9-C1 SW
15// S9-C2 cancelSessionResponseOk structure;S9-C3 cancelSessionResponseOk structure
16// S9-C4 transactionId echo;S13-C1 SW in 6985/6A88;S14-C1 proc state;S14-C2 proc state
17// S15-C1 assemble;S15-C2 assemble;S15-C3 assemble;S15-C4 assemble;S15-C1 SW
18// S15-C2 cancelSessionResponseOk structure;S15-C3 cancelSessionResponseOk structure
19// S15-C4 transactionId echo;S19-C1 SW in 6985/6A88;S20-C1 proc state;S20-C2 proc state;S24-C1 SW
20// S25-C1 assemble;S25-C2 assemble;S25-C3 assemble;S25-C4 assemble;S25-C1 SW
21// S25-C2 cancelSessionResponseOk structure;S25-C3 cancelSessionResponseOk structure
22// S25-C4 transactionId echo;S26-C1 SW in 6985/6A88;S27-C1 proc state;S27-C2 proc state
23// S28-C1 assemble;S28-C2 assemble;S28-C3 assemble;S28-C4 assemble;S28-C1 SW
24// S28-C2 cancelSessionResponseOk structure;S28-C3 cancelSessionResponseOk structure
25// S28-C4 transactionId echo;S29-C1 proc state;S29-C2 proc state
26// 本函数由 CaseIR 4.2.19.2.2 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
27// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
28// 适用性 C002:编译期门,运行时由 harness 环境前置承担。
29function TC_eUICC_ES10b_CancelSessionBRP_01_08_merged() {
30 var bind = curBind;
31 var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10b_CancelSessionBRP_01_08_merged");
32 // GIC-1 卡态编排:PROFILE_OPERATIONAL1 未装载到 eUICC(非 PROC_ 展开,属卡态前提): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
33 // GIC-2 Common Mutual Authentication procedure 已成功执行(同一基于 BrainpoolP256r1 的 GSMA CI 用于签名与验签)——展开不在语料包内: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
34 // GIC-3 #GET_EUICC_INFO1、#GET_EUICC_CHALLENGE、#AUTHENTICATE_SMDP 已发送至 eUICC: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
35 // S5/S6/S7-IC Sub-procedure Profile Download and Installation – End User Confirmation 已成功执行(#PREP_DOWNLOAD_NO_CC 已发送);子过程展开不在语料包内: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
36
37 var cs1Tid = "";
38 for (var cs1Ri = 0; cs1Ri < 16; cs1Ri++) {
39 cs1Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
40 }
41 // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 00}——tid 运行时随机 16B;reason S22:9140 枚举
42 var cs1Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs1Tid, reason: "00"});
43 if (cs1Asm.error) {
44 bind.checkData("S1-C1 assemble", "1", "0");
45 bind.checkData("S1-C2 assemble", "1", "0");
46 bind.checkData("S1-C3 assemble", "1", "0");
47 bind.checkData("S1-C4 assemble", "1", "0");
48 } else {
49 var s1 = bind.sendApdu(null, "E2", "91", "00", cs1Asm.request_hex, "00", "9000");
50 bind.checkData("S1-C1 SW", "9000", s1.sw);
51 var cs1Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s1.resp);
52 bind.checkData("S1-C2 cancelSessionResponseOk structure", "1", (cs1Ex.branch === "ok" && cs1Ex.ok && cs1Ex.ok.missing.length === 0 && cs1Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
53 bind.checkData("S1-C3 cancelSessionResponseOk structure", "1", (cs1Ex.branch === "ok" && cs1Ex.ok && cs1Ex.ok.missing.length === 0 && cs1Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
54 bind.checkData("S1-C4 transactionId echo", cs1Tid, cs1Ex.branch === "ok" ? cs1Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
55 }
56
57 // 步骤 2:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
58 // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
59 // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
60 bind.checkData("S2-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
61 bind.checkData("S2-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
62
63 var cs3Tid = "";
64 for (var cs3Ri = 0; cs3Ri < 16; cs3Ri++) {
65 cs3Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
66 }
67 // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 01}——tid 运行时随机 16B;reason S22:9140 枚举
68 var cs3Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs3Tid, reason: "01"});
69 if (cs3Asm.error) {
70 bind.checkData("S3-C1 assemble", "1", "0");
71 bind.checkData("S3-C2 assemble", "1", "0");
72 bind.checkData("S3-C3 assemble", "1", "0");
73 bind.checkData("S3-C4 assemble", "1", "0");
74 } else {
75 var s3 = bind.sendApdu(null, "E2", "91", "00", cs3Asm.request_hex, "00", "9000");
76 bind.checkData("S3-C1 SW", "9000", s3.sw);
77 var cs3Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s3.resp);
78 bind.checkData("S3-C2 cancelSessionResponseOk structure", "1", (cs3Ex.branch === "ok" && cs3Ex.ok && cs3Ex.ok.missing.length === 0 && cs3Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
79 bind.checkData("S3-C3 cancelSessionResponseOk structure", "1", (cs3Ex.branch === "ok" && cs3Ex.ok && cs3Ex.ok.missing.length === 0 && cs3Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
80 bind.checkData("S3-C4 transactionId echo", cs3Tid, cs3Ex.branch === "ok" ? cs3Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
81 }
82
83 // 步骤 4:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
84 // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
85 // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
86 bind.checkData("S4-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
87 bind.checkData("S4-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
88
89 var cs5Tid = "";
90 for (var cs5Ri = 0; cs5Ri < 16; cs5Ri++) {
91 cs5Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
92 }
93 // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 02}——tid 运行时随机 16B;reason S22:9140 枚举
94 var cs5Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs5Tid, reason: "02"});
95 if (cs5Asm.error) {
96 bind.checkData("S5-C1 assemble", "1", "0");
97 bind.checkData("S5-C2 assemble", "1", "0");
98 bind.checkData("S5-C3 assemble", "1", "0");
99 bind.checkData("S5-C4 assemble", "1", "0");
100 } else {
101 var s5 = bind.sendApdu(null, "E2", "91", "00", cs5Asm.request_hex, "00", "9000");
102 bind.checkData("S5-C1 SW", "9000", s5.sw);
103 var cs5Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s5.resp);
104 bind.checkData("S5-C2 cancelSessionResponseOk structure", "1", (cs5Ex.branch === "ok" && cs5Ex.ok && cs5Ex.ok.missing.length === 0 && cs5Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
105 bind.checkData("S5-C3 cancelSessionResponseOk structure", "1", (cs5Ex.branch === "ok" && cs5Ex.ok && cs5Ex.ok.missing.length === 0 && cs5Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
106 bind.checkData("S5-C4 transactionId echo", cs5Tid, cs5Ex.branch === "ok" ? cs5Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
107 }
108
109 // 步骤 6:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
110 // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
111 // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
112 bind.checkData("S6-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
113 bind.checkData("S6-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
114
115 var cs7Tid = "";
116 for (var cs7Ri = 0; cs7Ri < 16; cs7Ri++) {
117 cs7Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
118 }
119 // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 03}——tid 运行时随机 16B;reason S22:9140 枚举
120 var cs7Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs7Tid, reason: "03"});
121 if (cs7Asm.error) {
122 bind.checkData("S7-C1 assemble", "1", "0");
123 bind.checkData("S7-C2 assemble", "1", "0");
124 bind.checkData("S7-C3 assemble", "1", "0");
125 bind.checkData("S7-C4 assemble", "1", "0");
126 } else {
127 var s7 = bind.sendApdu(null, "E2", "91", "00", cs7Asm.request_hex, "00", "9000");
128 bind.checkData("S7-C1 SW", "9000", s7.sw);
129 var cs7Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s7.resp);
130 bind.checkData("S7-C2 cancelSessionResponseOk structure", "1", (cs7Ex.branch === "ok" && cs7Ex.ok && cs7Ex.ok.missing.length === 0 && cs7Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
131 bind.checkData("S7-C3 cancelSessionResponseOk structure", "1", (cs7Ex.branch === "ok" && cs7Ex.ok && cs7Ex.ok.missing.length === 0 && cs7Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
132 bind.checkData("S7-C4 transactionId echo", cs7Tid, cs7Ex.branch === "ok" ? cs7Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
133 }
134
135 // 步骤 8:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
136 // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
137 // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
138 bind.checkData("S8-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
139 bind.checkData("S8-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
140
141 var cs9Tid = "";
142 for (var cs9Ri = 0; cs9Ri < 16; cs9Ri++) {
143 cs9Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
144 }
145 // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 04}——tid 运行时随机 16B;reason S22:9140 枚举
146 var cs9Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs9Tid, reason: "04"});
147 if (cs9Asm.error) {
148 bind.checkData("S9-C1 assemble", "1", "0");
149 bind.checkData("S9-C2 assemble", "1", "0");
150 bind.checkData("S9-C3 assemble", "1", "0");
151 bind.checkData("S9-C4 assemble", "1", "0");
152 } else {
153 var s9 = bind.sendApdu(null, "E2", "91", "00", cs9Asm.request_hex, "00", "9000");
154 bind.checkData("S9-C1 SW", "9000", s9.sw);
155 var cs9Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s9.resp);
156 bind.checkData("S9-C2 cancelSessionResponseOk structure", "1", (cs9Ex.branch === "ok" && cs9Ex.ok && cs9Ex.ok.missing.length === 0 && cs9Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
157 bind.checkData("S9-C3 cancelSessionResponseOk structure", "1", (cs9Ex.branch === "ok" && cs9Ex.ok && cs9Ex.ok.missing.length === 0 && cs9Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
158 bind.checkData("S9-C4 transactionId echo", cs9Tid, cs9Ex.branch === "ok" ? cs9Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
159 }
160
161 // 步骤 10:Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
162 // test-tool internal preparation (no APDU face): runtime-domain
163 // values per CaseIR unresolved (G Annex B generation rules);
164 // no fabricated bytes emitted here.
165
166 // 步骤 11:<BPP> = MTD_GENERATE_BPP(tc_step)
167 // BPP synthesized (4.2.19.2.2 seq#1, structural layer, SCP03t-unprotected): 1067 bytes; segments: INIT=191B, A0=22B, A1=58B, A3=796B.
168 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
169 // [SPEC] TC — SGP.23 4.2.19.2.2 seq#1 接线(段选择/注入面)
170 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
171 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
172 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
173 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
174 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
175 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
176 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
177 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
178 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
179 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
180 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
181 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
182 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
183 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
184 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
185 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
186 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
187 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
188 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
189 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
190 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
191 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
192 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
193 // [SPEC] PE header/version — PITS asn:67-68 2/3
194 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
195 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
196 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
197 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
198 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
199 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
200 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
201 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
202 // [SPEC] TC/curve — E 表 :92 曲线族=brainpoolP256r1(OID 1.3.36.3.3.2.8.1.1.7);密钥/证书族常量锚=黄金切片 VarDef_eSIM.js :25-126(BRP 族 CERT_*/PK_*/SK_* 对),属 AUTH/PrepareDownload 面后续接线(OTPK/签名运行时动态,结构层不落字节)
203
204 // 步骤 12:Split the <BPP> into several segments arrays named: <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>(tc_step)
205 // BPP segment declaration (no APDU face): <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>.
206 // 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).
207 // 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.
208
209 // 步骤 13:MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ57_113, RQ57_041_1)
210 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
211 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
212 var s13 = bind.sendApdu(null, "E2", "00", "00", null, "00", "6985/6A88");
213 bind.checkData("S13-C1 SW in 6985/6A88", "1", (s13.sw === "6985" || s13.sw === "6A88") ? "1" : "0");
214
215 // 步骤 14:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
216 // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
217 // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
218 bind.checkData("S14-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
219 bind.checkData("S14-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
220
221 var cs15Tid = "";
222 for (var cs15Ri = 0; cs15Ri < 16; cs15Ri++) {
223 cs15Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
224 }
225 // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 05}——tid 运行时随机 16B;reason S22:9140 枚举
226 var cs15Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs15Tid, reason: "05"});
227 if (cs15Asm.error) {
228 bind.checkData("S15-C1 assemble", "1", "0");
229 bind.checkData("S15-C2 assemble", "1", "0");
230 bind.checkData("S15-C3 assemble", "1", "0");
231 bind.checkData("S15-C4 assemble", "1", "0");
232 } else {
233 var s15 = bind.sendApdu(null, "E2", "91", "00", cs15Asm.request_hex, "00", "9000");
234 bind.checkData("S15-C1 SW", "9000", s15.sw);
235 var cs15Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s15.resp);
236 bind.checkData("S15-C2 cancelSessionResponseOk structure", "1", (cs15Ex.branch === "ok" && cs15Ex.ok && cs15Ex.ok.missing.length === 0 && cs15Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
237 bind.checkData("S15-C3 cancelSessionResponseOk structure", "1", (cs15Ex.branch === "ok" && cs15Ex.ok && cs15Ex.ok.missing.length === 0 && cs15Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
238 bind.checkData("S15-C4 transactionId echo", cs15Tid, cs15Ex.branch === "ok" ? cs15Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
239 }
240
241 // 步骤 16:Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
242 // test-tool internal preparation (no APDU face): runtime-domain
243 // values per CaseIR unresolved (G Annex B generation rules);
244 // no fabricated bytes emitted here.
245
246 // 步骤 17:<BPP> = MTD_GENERATE_BPP(tc_step)
247 // BPP synthesized (4.2.19.2.2 seq#1, structural layer, SCP03t-unprotected): 1067 bytes; segments: INIT=191B, A0=22B, A1=58B, A3=796B.
248 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
249 // [SPEC] TC — SGP.23 4.2.19.2.2 seq#1 接线(段选择/注入面)
250 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
251 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
252 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
253 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
254 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
255 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
256 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
257 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
258 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
259 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
260 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
261 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
262 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
263 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
264 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
265 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
266 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
267 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
268 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
269 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
270 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
271 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
272 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
273 // [SPEC] PE header/version — PITS asn:67-68 2/3
274 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
275 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
276 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
277 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
278 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
279 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
280 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
281 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
282 // [SPEC] TC/curve — E 表 :92 曲线族=brainpoolP256r1(OID 1.3.36.3.3.2.8.1.1.7);密钥/证书族常量锚=黄金切片 VarDef_eSIM.js :25-126(BRP 族 CERT_*/PK_*/SK_* 对),属 AUTH/PrepareDownload 面后续接线(OTPK/签名运行时动态,结构层不落字节)
283
284 // 步骤 18:Split the <BPP> into several segments arrays named: <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>(tc_step)
285 // BPP segment declaration (no APDU face): <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>.
286 // 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).
287 // 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.
288
289 // 步骤 19:MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ57_113)
290 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
291 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
292 var s19 = bind.sendApdu(null, "E2", "00", "00", null, "00", "6985/6A88");
293 bind.checkData("S19-C1 SW in 6985/6A88", "1", (s19.sw === "6985" || s19.sw === "6A88") ? "1" : "0");
294
295 // 步骤 20:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
296 // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
297 // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
298 bind.checkData("S20-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
299 bind.checkData("S20-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
300
301 // 步骤 21:IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
302 // test-tool internal preparation (no APDU face): runtime-domain
303 // values per CaseIR unresolved (G Annex B generation rules);
304 // no fabricated bytes emitted here.
305
306 // 步骤 22:IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
307 // BPP synthesized (4.2.19.2.2 seq#1, structural layer, SCP03t-unprotected): 1067 bytes; segments: INIT=191B, A0=22B, A1=58B, A3=796B.
308 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
309 // [SPEC] TC — SGP.23 4.2.19.2.2 seq#1 接线(段选择/注入面)
310 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
311 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
312 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
313 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
314 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
315 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
316 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
317 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
318 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
319 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
320 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
321 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
322 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
323 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
324 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
325 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
326 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
327 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
328 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
329 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
330 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
331 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
332 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
333 // [SPEC] PE header/version — PITS asn:67-68 2/3
334 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
335 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
336 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
337 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
338 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
339 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
340 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
341 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
342 // [SPEC] TC/curve — E 表 :92 曲线族=brainpoolP256r1(OID 1.3.36.3.3.2.8.1.1.7);密钥/证书族常量锚=黄金切片 VarDef_eSIM.js :25-126(BRP 族 CERT_*/PK_*/SK_* 对),属 AUTH/PrepareDownload 面后续接线(OTPK/签名运行时动态,结构层不落字节)
343
344 // 步骤 23:IC3: Split the <BPP> into several segments arrays named: <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>(tc_step)
345 // BPP segment declaration (no APDU face): <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>.
346 // 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).
347 // 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.
348
349 // 步骤 24:IC4: MTD_STORE_DATA_SCRIPT(tc_step)
350 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
351 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
352 var s24 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
353 bind.checkData("S24-C1 SW", "9000", s24.sw);
354
355 var cs25Tid = "";
356 for (var cs25Ri = 0; cs25Ri < 16; cs25Ri++) {
357 cs25Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
358 }
359 // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 05}——tid 运行时随机 16B;reason S22:9140 枚举
360 var cs25Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs25Tid, reason: "05"});
361 if (cs25Asm.error) {
362 bind.checkData("S25-C1 assemble", "1", "0");
363 bind.checkData("S25-C2 assemble", "1", "0");
364 bind.checkData("S25-C3 assemble", "1", "0");
365 bind.checkData("S25-C4 assemble", "1", "0");
366 } else {
367 var s25 = bind.sendApdu(null, "E2", "91", "00", cs25Asm.request_hex, "00", "9000");
368 bind.checkData("S25-C1 SW", "9000", s25.sw);
369 var cs25Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s25.resp);
370 bind.checkData("S25-C2 cancelSessionResponseOk structure", "1", (cs25Ex.branch === "ok" && cs25Ex.ok && cs25Ex.ok.missing.length === 0 && cs25Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
371 bind.checkData("S25-C3 cancelSessionResponseOk structure", "1", (cs25Ex.branch === "ok" && cs25Ex.ok && cs25Ex.ok.missing.length === 0 && cs25Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
372 bind.checkData("S25-C4 transactionId echo", cs25Tid, cs25Ex.branch === "ok" ? cs25Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
373 }
374
375 // 步骤 26:MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ57_113)
376 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
377 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
378 var s26 = bind.sendApdu(null, "E2", "00", "00", null, "00", "6985/6A88");
379 bind.checkData("S26-C1 SW in 6985/6A88", "1", (s26.sw === "6985" || s26.sw === "6A88") ? "1" : "0");
380
381 // 步骤 27:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
382 // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
383 // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
384 bind.checkData("S27-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
385 bind.checkData("S27-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
386
387 var cs28Tid = "";
388 for (var cs28Ri = 0; cs28Ri < 16; cs28Ri++) {
389 cs28Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
390 }
391 // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 7F}——tid 运行时随机 16B;reason S22:9140 枚举
392 var cs28Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs28Tid, reason: "7F"});
393 if (cs28Asm.error) {
394 bind.checkData("S28-C1 assemble", "1", "0");
395 bind.checkData("S28-C2 assemble", "1", "0");
396 bind.checkData("S28-C3 assemble", "1", "0");
397 bind.checkData("S28-C4 assemble", "1", "0");
398 } else {
399 var s28 = bind.sendApdu(null, "E2", "91", "00", cs28Asm.request_hex, "00", "9000");
400 bind.checkData("S28-C1 SW", "9000", s28.sw);
401 var cs28Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s28.resp);
402 bind.checkData("S28-C2 cancelSessionResponseOk structure", "1", (cs28Ex.branch === "ok" && cs28Ex.ok && cs28Ex.ok.missing.length === 0 && cs28Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
403 bind.checkData("S28-C3 cancelSessionResponseOk structure", "1", (cs28Ex.branch === "ok" && cs28Ex.ok && cs28Ex.ok.missing.length === 0 && cs28Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
404 bind.checkData("S28-C4 transactionId echo", cs28Tid, cs28Ex.branch === "ok" ? cs28Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
405 }
406
407 // 步骤 29:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
408 // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
409 // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
410 bind.checkData("S29-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
411 bind.checkData("S29-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
412}
413
完整 unified diff
行级差异:新增 411 行 / 删除 446 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(862 行)
--- -man
+++ -cas
@@ -1,448 +1,413 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10b_CancelSessionBRP_01_Nominal_End_User_Rejection + TC_eUICC_ES10b_CancelSessionBRP_02_Nominal_End_User_Postponed + TC_eUICC_ES10b_CancelSessionBRP_03_Nominal_Timeout + TC_eUICC_ES10b_CancelSessionBRP_04_Nominal_PPR_not_allowed + TC_eUICC_ES10b_CancelSessionBRP_05_Nominal_Metadata_Mismatch + TC_eUICC_ES10b_CancelSessionBRP_06_Nominal_BPP_Parsing_Error + TC_eUICC_ES10b_CancelSessionBRP_07_Nominal_Load_BPP_Execution_Error + TC_eUICC_ES10b_CancelSessionBRP_08_Nominal_Undefined_Reason (extracted verbatim)
-
-function TC_eUICC_ES10b_CancelSessionBRP_01_Nominal_End_User_Rejection()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
- return;
-
- tracenamestr = "测试目的:终端用户拒绝";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
- pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
- Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.endUserRejection);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.PrepareDownloadisErrorTest = true;
- Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.isErrorTest = true;
- euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_CancelSessionBRP_02_Nominal_End_User_Postponed()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
- return;
-
- tracenamestr = "测试目的:终端用户推迟";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
- pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
- Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.postponed);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.PrepareDownloadisErrorTest = true;
- Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.isErrorTest = true;
- euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_CancelSessionBRP_03_Nominal_Timeout()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
- return;
-
- tracenamestr = "测试目的:超时";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
- pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
- Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.timeout);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.PrepareDownloadisErrorTest = true;
- Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.isErrorTest = true;
- euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_CancelSessionBRP_04_Nominal_PPR_not_allowed ()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
- return;
-
- tracenamestr = "测试目的: PPR不被允许";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
- pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
- Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.pprNotAllowed);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.PrepareDownloadisErrorTest = true;
- Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.isErrorTest = true;
- euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_CancelSessionBRP_05_Nominal_Metadata_Mismatch()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
- return;
-
- tracenamestr = "测试目的:元数据不匹配";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
- pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
- Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.metadataMismatch);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- Profile_load_procedure.NoSessionContextInitialiseSecureChannel();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.PrepareDownloadisErrorTest = true;
- Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.isErrorTest = true;
- euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_CancelSessionBRP_06_Nominal_BPP_Parsing_Error()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
- return;
-
- tracenamestr = "测试目的:BPP解析错误";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
- pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
- Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.loadBppExecutionError);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- Profile_load_procedure.NoSessionContextInitialiseSecureChannel();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.PrepareDownloadisErrorTest = true;
- Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.isErrorTest = true;
- euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_CancelSessionBRP_07_Nominal_Load_BPP_Execution_Error()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
- return;
-
- tracenamestr = "测试目的:下载BPP执行错误";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
- pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- Profile_load_procedure.InitialiseSecureChannel();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
- Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.loadBppExecutionError);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
- Profile_load_procedure.NoSessionContextConfigureISDP();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.PrepareDownloadisErrorTest = true;
- Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.isErrorTest = true;
- euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- RecoverCard();
-}
-
-function TC_eUICC_ES10b_CancelSessionBRP_08_Nominal_Undefined_Reason ()
-{
- //测试入口条件
- if(!check_Applicability_of_tests_RSP_SGP23_test("C002"))
- return;
-
- tracenamestr = "测试目的:08 Nominal: 未定义原因";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart("eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- pkId_CI_ForVerification = pkId_CI_ECDSA_BRP;
- pkId_CI_ForSigning = pkId_CI_ECDSA_BRP;
-
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行CancelSession;");
- Profile_load_procedure.ES10b_CancelSession(CancelSessionReason.undefinedReason);
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.PrepareDownloadisErrorTest = true;
- Profile_load_procedure.preparedownloadErrorCode = DownloadErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.isErrorTest = true;
- euiccAuthenticateErrorCode=AuthenticateErrorCode.noSessionContext;
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261004-143915
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10b.CancelSessionBRP,Test Sequence #01-#08 (8 Nominal sequences;各序列 SHALL be the same as 4.2.19.2.1 对应序列,唯全部密钥与证书基于 BrainpoolP256r1),适用性 C002。
+// Test points: S1-C1 assemble;S1-C2 assemble;S1-C3 assemble;S1-C4 assemble;S1-C1 SW
+// S1-C2 cancelSessionResponseOk structure;S1-C3 cancelSessionResponseOk structure
+// S1-C4 transactionId echo;S2-C1 proc state;S2-C2 proc state;S3-C1 assemble;S3-C2 assemble
+// S3-C3 assemble;S3-C4 assemble;S3-C1 SW;S3-C2 cancelSessionResponseOk structure
+// S3-C3 cancelSessionResponseOk structure;S3-C4 transactionId echo;S4-C1 proc state
+// S4-C2 proc state;S5-C1 assemble;S5-C2 assemble;S5-C3 assemble;S5-C4 assemble;S5-C1 SW
+// S5-C2 cancelSessionResponseOk structure;S5-C3 cancelSessionResponseOk structure
+// S5-C4 transactionId echo;S6-C1 proc state;S6-C2 proc state;S7-C1 assemble;S7-C2 assemble
+// S7-C3 assemble;S7-C4 assemble;S7-C1 SW;S7-C2 cancelSessionResponseOk structure
+// S7-C3 cancelSessionResponseOk structure;S7-C4 transactionId echo;S8-C1 proc state
+// S8-C2 proc state;S9-C1 assemble;S9-C2 assemble;S9-C3 assemble;S9-C4 assemble;S9-C1 SW
+// S9-C2 cancelSessionResponseOk structure;S9-C3 cancelSessionResponseOk structure
+// S9-C4 transactionId echo;S13-C1 SW in 6985/6A88;S14-C1 proc state;S14-C2 proc state
+// S15-C1 assemble;S15-C2 assemble;S15-C3 assemble;S15-C4 assemble;S15-C1 SW
+// S15-C2 cancelSessionResponseOk structure;S15-C3 cancelSessionResponseOk structure
+// S15-C4 transactionId echo;S19-C1 SW in 6985/6A88;S20-C1 proc state;S20-C2 proc state;S24-C1 SW
+// S25-C1 assemble;S25-C2 assemble;S25-C3 assemble;S25-C4 assemble;S25-C1 SW
+// S25-C2 cancelSessionResponseOk structure;S25-C3 cancelSessionResponseOk structure
+// S25-C4 transactionId echo;S26-C1 SW in 6985/6A88;S27-C1 proc state;S27-C2 proc state
+// S28-C1 assemble;S28-C2 assemble;S28-C3 assemble;S28-C4 assemble;S28-C1 SW
+// S28-C2 cancelSessionResponseOk structure;S28-C3 cancelSessionResponseOk structure
+// S28-C4 transactionId echo;S29-C1 proc state;S29-C2 proc state
+// 本函数由 CaseIR 4.2.19.2.2 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 C002:编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10b_CancelSessionBRP_01_08_merged() {
+ var bind = curBind;
+ var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10b_CancelSessionBRP_01_08_merged");
+ // GIC-1 卡态编排:PROFILE_OPERATIONAL1 未装载到 eUICC(非 PROC_ 展开,属卡态前提): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // GIC-2 Common Mutual Authentication procedure 已成功执行(同一基于 BrainpoolP256r1 的 GSMA CI 用于签名与验签)——展开不在语料包内: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // GIC-3 #GET_EUICC_INFO1、#GET_EUICC_CHALLENGE、#AUTHENTICATE_SMDP 已发送至 eUICC: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+ // S5/S6/S7-IC Sub-procedure Profile Download and Installation – End User Confirmation 已成功执行(#PREP_DOWNLOAD_NO_CC 已发送);子过程展开不在语料包内: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+
+ var cs1Tid = "";
+ for (var cs1Ri = 0; cs1Ri < 16; cs1Ri++) {
+ cs1Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
+ }
+ // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 00}——tid 运行时随机 16B;reason S22:9140 枚举
+ var cs1Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs1Tid, reason: "00"});
+ if (cs1Asm.error) {
+ bind.checkData("S1-C1 assemble", "1", "0");
+ bind.checkData("S1-C2 assemble", "1", "0");
+ bind.checkData("S1-C3 assemble", "1", "0");
+ bind.checkData("S1-C4 assemble", "1", "0");
+ } else {
+ var s1 = bind.sendApdu(null, "E2", "91", "00", cs1Asm.request_hex, "00", "9000");
+ bind.checkData("S1-C1 SW", "9000", s1.sw);
+ var cs1Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s1.resp);
+ bind.checkData("S1-C2 cancelSessionResponseOk structure", "1", (cs1Ex.branch === "ok" && cs1Ex.ok && cs1Ex.ok.missing.length === 0 && cs1Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S1-C3 cancelSessionResponseOk structure", "1", (cs1Ex.branch === "ok" && cs1Ex.ok && cs1Ex.ok.missing.length === 0 && cs1Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S1-C4 transactionId echo", cs1Tid, cs1Ex.branch === "ok" ? cs1Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
+ }
+
+ // 步骤 2:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
+ // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
+ // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
+ bind.checkData("S2-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
+ bind.checkData("S2-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
+
+ var cs3Tid = "";
+ for (var cs3Ri = 0; cs3Ri < 16; cs3Ri++) {
+ cs3Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
+ }
+ // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 01}——tid 运行时随机 16B;reason S22:9140 枚举
+ var cs3Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs3Tid, reason: "01"});
+ if (cs3Asm.error) {
+ bind.checkData("S3-C1 assemble", "1", "0");
+ bind.checkData("S3-C2 assemble", "1", "0");
+ bind.checkData("S3-C3 assemble", "1", "0");
+ bind.checkData("S3-C4 assemble", "1", "0");
+ } else {
+ var s3 = bind.sendApdu(null, "E2", "91", "00", cs3Asm.request_hex, "00", "9000");
+ bind.checkData("S3-C1 SW", "9000", s3.sw);
+ var cs3Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s3.resp);
+ bind.checkData("S3-C2 cancelSessionResponseOk structure", "1", (cs3Ex.branch === "ok" && cs3Ex.ok && cs3Ex.ok.missing.length === 0 && cs3Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S3-C3 cancelSessionResponseOk structure", "1", (cs3Ex.branch === "ok" && cs3Ex.ok && cs3Ex.ok.missing.length === 0 && cs3Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S3-C4 transactionId echo", cs3Tid, cs3Ex.branch === "ok" ? cs3Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
+ }
+
+ // 步骤 4:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
+ // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
+ // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
+ bind.checkData("S4-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
+ bind.checkData("S4-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
+
+ var cs5Tid = "";
+ for (var cs5Ri = 0; cs5Ri < 16; cs5Ri++) {
+ cs5Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
+ }
+ // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 02}——tid 运行时随机 16B;reason S22:9140 枚举
+ var cs5Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs5Tid, reason: "02"});
+ if (cs5Asm.error) {
+ bind.checkData("S5-C1 assemble", "1", "0");
+ bind.checkData("S5-C2 assemble", "1", "0");
+ bind.checkData("S5-C3 assemble", "1", "0");
+ bind.checkData("S5-C4 assemble", "1", "0");
+ } else {
+ var s5 = bind.sendApdu(null, "E2", "91", "00", cs5Asm.request_hex, "00", "9000");
+ bind.checkData("S5-C1 SW", "9000", s5.sw);
+ var cs5Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s5.resp);
+ bind.checkData("S5-C2 cancelSessionResponseOk structure", "1", (cs5Ex.branch === "ok" && cs5Ex.ok && cs5Ex.ok.missing.length === 0 && cs5Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S5-C3 cancelSessionResponseOk structure", "1", (cs5Ex.branch === "ok" && cs5Ex.ok && cs5Ex.ok.missing.length === 0 && cs5Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S5-C4 transactionId echo", cs5Tid, cs5Ex.branch === "ok" ? cs5Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
+ }
+
+ // 步骤 6:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
+ // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
+ // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
+ bind.checkData("S6-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
+ bind.checkData("S6-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
+
+ var cs7Tid = "";
+ for (var cs7Ri = 0; cs7Ri < 16; cs7Ri++) {
+ cs7Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
+ }
+ // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 03}——tid 运行时随机 16B;reason S22:9140 枚举
+ var cs7Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs7Tid, reason: "03"});
+ if (cs7Asm.error) {
+ bind.checkData("S7-C1 assemble", "1", "0");
+ bind.checkData("S7-C2 assemble", "1", "0");
+ bind.checkData("S7-C3 assemble", "1", "0");
+ bind.checkData("S7-C4 assemble", "1", "0");
+ } else {
+ var s7 = bind.sendApdu(null, "E2", "91", "00", cs7Asm.request_hex, "00", "9000");
+ bind.checkData("S7-C1 SW", "9000", s7.sw);
+ var cs7Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s7.resp);
+ bind.checkData("S7-C2 cancelSessionResponseOk structure", "1", (cs7Ex.branch === "ok" && cs7Ex.ok && cs7Ex.ok.missing.length === 0 && cs7Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S7-C3 cancelSessionResponseOk structure", "1", (cs7Ex.branch === "ok" && cs7Ex.ok && cs7Ex.ok.missing.length === 0 && cs7Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S7-C4 transactionId echo", cs7Tid, cs7Ex.branch === "ok" ? cs7Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
+ }
+
+ // 步骤 8:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
+ // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
+ // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
+ bind.checkData("S8-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
+ bind.checkData("S8-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
+
+ var cs9Tid = "";
+ for (var cs9Ri = 0; cs9Ri < 16; cs9Ri++) {
+ cs9Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
+ }
+ // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 04}——tid 运行时随机 16B;reason S22:9140 枚举
+ var cs9Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs9Tid, reason: "04"});
+ if (cs9Asm.error) {
+ bind.checkData("S9-C1 assemble", "1", "0");
+ bind.checkData("S9-C2 assemble", "1", "0");
+ bind.checkData("S9-C3 assemble", "1", "0");
+ bind.checkData("S9-C4 assemble", "1", "0");
+ } else {
+ var s9 = bind.sendApdu(null, "E2", "91", "00", cs9Asm.request_hex, "00", "9000");
+ bind.checkData("S9-C1 SW", "9000", s9.sw);
+ var cs9Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s9.resp);
+ bind.checkData("S9-C2 cancelSessionResponseOk structure", "1", (cs9Ex.branch === "ok" && cs9Ex.ok && cs9Ex.ok.missing.length === 0 && cs9Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S9-C3 cancelSessionResponseOk structure", "1", (cs9Ex.branch === "ok" && cs9Ex.ok && cs9Ex.ok.missing.length === 0 && cs9Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S9-C4 transactionId echo", cs9Tid, cs9Ex.branch === "ok" ? cs9Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
+ }
+
+ // 步骤 10: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.
+
+ // 步骤 11:<BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.19.2.2 seq#1, structural layer, SCP03t-unprotected): 1067 bytes; segments: INIT=191B, A0=22B, A1=58B, 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.19.2.2 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 缺席
+ // [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
+ // [SPEC] TC/curve — E 表 :92 曲线族=brainpoolP256r1(OID 1.3.36.3.3.2.8.1.1.7);密钥/证书族常量锚=黄金切片 VarDef_eSIM.js :25-126(BRP 族 CERT_*/PK_*/SK_* 对),属 AUTH/PrepareDownload 面后续接线(OTPK/签名运行时动态,结构层不落字节)
+
+ // 步骤 12: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.
+
+ // 步骤 13:MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ57_113, RQ57_041_1)
+ // 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 s13 = bind.sendApdu(null, "E2", "00", "00", null, "00", "6985/6A88");
+ bind.checkData("S13-C1 SW in 6985/6A88", "1", (s13.sw === "6985" || s13.sw === "6A88") ? "1" : "0");
+
+ // 步骤 14:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
+ // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
+ // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
+ bind.checkData("S14-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
+ bind.checkData("S14-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
+
+ var cs15Tid = "";
+ for (var cs15Ri = 0; cs15Ri < 16; cs15Ri++) {
+ cs15Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
+ }
+ // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 05}——tid 运行时随机 16B;reason S22:9140 枚举
+ var cs15Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs15Tid, reason: "05"});
+ if (cs15Asm.error) {
+ bind.checkData("S15-C1 assemble", "1", "0");
+ bind.checkData("S15-C2 assemble", "1", "0");
+ bind.checkData("S15-C3 assemble", "1", "0");
+ bind.checkData("S15-C4 assemble", "1", "0");
+ } else {
+ var s15 = bind.sendApdu(null, "E2", "91", "00", cs15Asm.request_hex, "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s15.sw);
+ var cs15Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s15.resp);
+ bind.checkData("S15-C2 cancelSessionResponseOk structure", "1", (cs15Ex.branch === "ok" && cs15Ex.ok && cs15Ex.ok.missing.length === 0 && cs15Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S15-C3 cancelSessionResponseOk structure", "1", (cs15Ex.branch === "ok" && cs15Ex.ok && cs15Ex.ok.missing.length === 0 && cs15Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S15-C4 transactionId echo", cs15Tid, cs15Ex.branch === "ok" ? cs15Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
+ }
+
+ // 步骤 16: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.
+
+ // 步骤 17:<BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.19.2.2 seq#1, structural layer, SCP03t-unprotected): 1067 bytes; segments: INIT=191B, A0=22B, A1=58B, 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.19.2.2 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 缺席
+ // [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
+ // [SPEC] TC/curve — E 表 :92 曲线族=brainpoolP256r1(OID 1.3.36.3.3.2.8.1.1.7);密钥/证书族常量锚=黄金切片 VarDef_eSIM.js :25-126(BRP 族 CERT_*/PK_*/SK_* 对),属 AUTH/PrepareDownload 面后续接线(OTPK/签名运行时动态,结构层不落字节)
+
+ // 步骤 18: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.
+
+ // 步骤 19:MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ57_113)
+ // 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 s19 = bind.sendApdu(null, "E2", "00", "00", null, "00", "6985/6A88");
+ bind.checkData("S19-C1 SW in 6985/6A88", "1", (s19.sw === "6985" || s19.sw === "6A88") ? "1" : "0");
+
+ // 步骤 20:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
+ // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
+ // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
+ bind.checkData("S20-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
+ bind.checkData("S20-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
+
+ // 步骤 21: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.
+
+ // 步骤 22:IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.19.2.2 seq#1, structural layer, SCP03t-unprotected): 1067 bytes; segments: INIT=191B, A0=22B, A1=58B, 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.19.2.2 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 缺席
+ // [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
+ // [SPEC] TC/curve — E 表 :92 曲线族=brainpoolP256r1(OID 1.3.36.3.3.2.8.1.1.7);密钥/证书族常量锚=黄金切片 VarDef_eSIM.js :25-126(BRP 族 CERT_*/PK_*/SK_* 对),属 AUTH/PrepareDownload 面后续接线(OTPK/签名运行时动态,结构层不落字节)
+
+ // 步骤 23: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.
+
+ // 步骤 24: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 s24 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S24-C1 SW", "9000", s24.sw);
+
+ var cs25Tid = "";
+ for (var cs25Ri = 0; cs25Ri < 16; cs25Ri++) {
+ cs25Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
+ }
+ // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 05}——tid 运行时随机 16B;reason S22:9140 枚举
+ var cs25Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs25Tid, reason: "05"});
+ if (cs25Asm.error) {
+ bind.checkData("S25-C1 assemble", "1", "0");
+ bind.checkData("S25-C2 assemble", "1", "0");
+ bind.checkData("S25-C3 assemble", "1", "0");
+ bind.checkData("S25-C4 assemble", "1", "0");
+ } else {
+ var s25 = bind.sendApdu(null, "E2", "91", "00", cs25Asm.request_hex, "00", "9000");
+ bind.checkData("S25-C1 SW", "9000", s25.sw);
+ var cs25Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s25.resp);
+ bind.checkData("S25-C2 cancelSessionResponseOk structure", "1", (cs25Ex.branch === "ok" && cs25Ex.ok && cs25Ex.ok.missing.length === 0 && cs25Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S25-C3 cancelSessionResponseOk structure", "1", (cs25Ex.branch === "ok" && cs25Ex.ok && cs25Ex.ok.missing.length === 0 && cs25Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S25-C4 transactionId echo", cs25Tid, cs25Ex.branch === "ok" ? cs25Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
+ }
+
+ // 步骤 26:MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ57_113)
+ // 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 s26 = bind.sendApdu(null, "E2", "00", "00", null, "00", "6985/6A88");
+ bind.checkData("S26-C1 SW in 6985/6A88", "1", (s26.sw === "6985" || s26.sw === "6A88") ? "1" : "0");
+
+ // 步骤 27:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
+ // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
+ // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
+ bind.checkData("S27-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
+ bind.checkData("S27-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
+
+ var cs28Tid = "";
+ for (var cs28Ri = 0; cs28Ri < 16; cs28Ri++) {
+ cs28Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
+ }
+ // cancel_session 运行时绑定(B-7):BF41{80<tid> 81 01 7F}——tid 运行时随机 16B;reason S22:9140 枚举
+ var cs28Asm = BindEs10bCancelSession.assembleCancelSession({outer: "BF41", transactionId: "80", reason: "81"}, {transactionId: cs28Tid, reason: "7F"});
+ if (cs28Asm.error) {
+ bind.checkData("S28-C1 assemble", "1", "0");
+ bind.checkData("S28-C2 assemble", "1", "0");
+ bind.checkData("S28-C3 assemble", "1", "0");
+ bind.checkData("S28-C4 assemble", "1", "0");
+ } else {
+ var s28 = bind.sendApdu(null, "E2", "91", "00", cs28Asm.request_hex, "00", "9000");
+ bind.checkData("S28-C1 SW", "9000", s28.sw);
+ var cs28Ex = BindEs10bCancelSession.extractCancelSession({outer: "BF41", ok: {tag: "A0", children: [{name: "euiccCancelSessionSigned", tag: "30", children: [{name: "transactionId", tag: "80"},{name: "smdpOid", tag: "81"},{name: "reason", tag: "82"}]},{name: "euiccCancelSessionSignature", tag: "5F37"}]},error: {tag: "81"}}, s28.resp);
+ bind.checkData("S28-C2 cancelSessionResponseOk structure", "1", (cs28Ex.branch === "ok" && cs28Ex.ok && cs28Ex.ok.missing.length === 0 && cs28Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S28-C3 cancelSessionResponseOk structure", "1", (cs28Ex.branch === "ok" && cs28Ex.ok && cs28Ex.ok.missing.length === 0 && cs28Ex.ok.fields.euiccCancelSessionSigned.children.missing.length === 0) ? "1" : "0");
+ bind.checkData("S28-C4 transactionId echo", cs28Tid, cs28Ex.branch === "ok" ? cs28Ex.ok.fields.euiccCancelSessionSigned.children.fields.transactionId.value : "branch_absent");
+ }
+
+ // 步骤 29:PROC_VERIFY_SESSION_IS_CANCELLED(procedure_expansion;REQ: RQ57_113)
+ // E 表验证性 PROC(K 过程体缺席):oracle 缺席诚实面——期望=声明面
+ // spec 引用、实际=proc_expansion_absent(如实计错,不伪造通过)。
+ bind.checkData("S29-C1 proc state", "declared_proc_spec", "proc_expansion_absent");
+ bind.checkData("S29-C2 proc state", "declared_proc_spec", "proc_expansion_absent");
}