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