eSIM RSP 测试用例对比站

人工切片(-man) ↔ Cas 盲生成(-cas)· 真机真卡执行证据对照

源码对照: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");
 }