eSIM RSP 测试用例对比站

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

源码对照:4.2.19.2.1

ES10b 取消会话(NIST) / TC_eUICC_ES10b.CancelSessionNIST

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

完整 unified diff

行级差异:新增 403 行 / 删除 448 行(以 -man 为基准,unified 上下文 3 行)。

展开 diff(856 行)
--- -man
+++ -cas
@@ -1,450 +1,405 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10b_CancelSessionNIST_01_Nominal_End_User_Rejection + TC_eUICC_ES10b_CancelSessionNIST_02_Nominal_End_User_Postponed + TC_eUICC_ES10b_CancelSessionNIST_03_Nominal_Timeout + TC_eUICC_ES10b_CancelSessionNIST_04_Nominal_PPR_not_allowed + TC_eUICC_ES10b_CancelSessionNIST_05_Nominal_Metadata_Mismatch + TC_eUICC_ES10b_CancelSessionNIST_06_Nominal_BPP_Parsing_Error + TC_eUICC_ES10b_CancelSessionNIST_07_Nominal_Load_BPP_Execution_Error + TC_eUICC_ES10b_CancelSessionNIST_08_Nominal_Undefined_Reason (extracted verbatim)
-
-function TC_eUICC_ES10b_CancelSessionNIST_01_Nominal_End_User_Rejection()
-{
-
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C001"))
-		return;
-	
-	tracenamestr = "测试目的:取消RSP会话,取消原因为终端用户拒绝";
-	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_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.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_CancelSessionNIST_02_Nominal_End_User_Postponed()
-{
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C001"))
-		return;
-	
-	tracenamestr = "测试目的:取消RSP会话,取消原因为终端用户推迟";
-	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_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.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_CancelSessionNIST_03_Nominal_Timeout()
-{
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C001"))
-		return;
-	
-	tracenamestr = "测试目的:取消RSP会话,取消原因为超时";
-	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_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.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_CancelSessionNIST_04_Nominal_PPR_not_allowed ()
-{
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C001"))
-		return;
-	
-	tracenamestr = "测试目的:取消RSP会话,取消原因为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_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.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_CancelSessionNIST_05_Nominal_Metadata_Mismatch()
-{
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C001"))
-		return;
-	
-	tracenamestr = "测试目的:取消RSP会话,取消原因为元数据不匹配";
-	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_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.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_CancelSessionNIST_06_Nominal_BPP_Parsing_Error()
-{
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C001"))
-		return;
-	
-	tracenamestr = "测试目的:取消RSP会话,取消原因为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_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.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_CancelSessionNIST_07_Nominal_Load_BPP_Execution_Error()
-{
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C001"))
-		return;
-	
-	tracenamestr = "测试目的:取消RSP会话,取消原因为下载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_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.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_CancelSessionNIST_08_Nominal_Undefined_Reason ()
-{
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C001"))
-		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_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.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.CancelSessionNIST,Test Sequence #01-#08 (8 Nominal sequences: End User Rejection / End User Postponed / Timeout / PPR not allowed / Metadata Mismatch / BPP Parsing Error / Load BPP Execution Error / Undefined Reason),适用性 C001。
+// 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;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
+//   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;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
+//   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;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;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;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
+// 本函数由 CaseIR 4.2.19.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 C001:编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10b_CancelSessionNIST_01_08_merged() {
+    var bind = curBind;
+    var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10b_CancelSessionNIST_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(S_LPAd 已选 ISD-R;eUICC 已对 ES10b.AuthenticateServer 给出响应;同一基于 NIST P-256 的 GSMA CI 用于签名与验签)——展开(SGP.22 3.1 子过程)不在语料包内: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // GIC-3 #GET_EUICC_INFO1、#GET_EUICC_CHALLENGE、#AUTHENTICATE_SMDP 已发送至 eUICC(#AUTHENTICATE_SMDP 定义见 I_annexD3_es10x): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // S5/S6-IC Sub-procedure Profile Download and Installation – End User Confirmation 已成功执行(#PREP_DOWNLOAD_NO_CC 已发送;定义见 I_annexD3_es10x);子过程展开不在语料包内: 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");
+
+    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");
+
+    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");
+
+    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");
+
+    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.1 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.1 seq#1 接线(段选择/注入面)
+    //   [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+    //   [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+    //   [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+    //   [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+    //   [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+    //   [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+    //   [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+    //   [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+    //   [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+    //   [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+    //   [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+    //   [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+    //   [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+    //   [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+    //   [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+    //   [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+    //   [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+    //   [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+    //   [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+    //   [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+    //   [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 曲线族=secp256r1(OID 1.2.840.10045.3.1.7);密钥/证书族常量锚=黄金切片 VarDef_eSIM.js :25-126(NIST 族 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");
+
+    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.1 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.1 seq#1 接线(段选择/注入面)
+    //   [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+    //   [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+    //   [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+    //   [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+    //   [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+    //   [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+    //   [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+    //   [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+    //   [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+    //   [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+    //   [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+    //   [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+    //   [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+    //   [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+    //   [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+    //   [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+    //   [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+    //   [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+    //   [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+    //   [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+    //   [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 曲线族=secp256r1(OID 1.2.840.10045.3.1.7);密钥/证书族常量锚=黄金切片 VarDef_eSIM.js :25-126(NIST 族 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");
+
+    // 步骤 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.1 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.1 seq#1 接线(段选择/注入面)
+    //   [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+    //   [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+    //   [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+    //   [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+    //   [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+    //   [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+    //   [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+    //   [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+    //   [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+    //   [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+    //   [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+    //   [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+    //   [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+    //   [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+    //   [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+    //   [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 nominal
+    //   [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+    //   [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+    //   [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+    //   [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+    //   [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 曲线族=secp256r1(OID 1.2.840.10045.3.1.7);密钥/证书族常量锚=黄金切片 VarDef_eSIM.js :25-126(NIST 族 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");
+
+    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");
 }