eSIM RSP 测试用例对比站

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

源码对照:4.2.9.2.1

ES10a 设置默认 SM-DP+ 地址 / TC_eUICC_ES10a.SetDefaultDPAddress

左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
320 行 / 14988 字符 / gb18030
-cas 入口
TC_eUICC_ES10a_SetDefaultDPAddress/Import/TC_eUICC_ES10a_SetDefaultDPAddress.js
289 行 / 20267 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js320 行 / 14988 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10a_SetDefaultDpAddress_01_Nominal_Set_SM_DP_Address_with_Address_Empty_in_eUICC + TC_eUICC_ES10a_SetDefaultDpAddress_02_Nominal_Set_SM_DP_Address_with_SM_DP_Address_already_in_eUICC + TC_eUICC_ES10a_SetDefaultDpAddress_03_Nominal_Set_Empty_SM_DP_Address_with_SM_DP_Address_already_in_eUICC + TC_eUICC_ES10a_SetDefaultDpAddress_04_Nominal_Set_Empty_SM_DP_Address_with_Empty_SM_DP_Address_in_eUICC (extracted verbatim)
2
3function TC_eUICC_ES10a_SetDefaultDpAddress_01_Nominal_Set_SM_DP_Address_with_Address_Empty_in_eUICC()
4{
5	
6	tracenamestr = "测试目的:eUICC上SM-DP+地址为空,设置SM-DP+地址";
7	curDis.TraceStart(sno++,tracenamestr);
8
9	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
10	Ini_powerOn_eUICC_LPAe_not_activate();
11	
12	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
13	TS_MANAGE_CHANNEL_OPEN();
14	
15	curLogicChannel = 1;
16	
17	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
18	TS_SELECT("Select ISD",ISD_R_AID,"9000");
19	
20	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
21	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
22	setDefaultDpAddressRequest.defaultDpAddress = "";
23	setDefaultDpAddressRequest.GenHexData();
24	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);	
25	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
26	
27	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
28	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
29	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
30	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
31	
32	try
33	{
34		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
35			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
36		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
37		
38		
39	}catch(e){
40		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
41	}
42	
43	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,设置DefaultDpAddressRequest为TEST_DP_ADDRESS1;");
44	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
45	setDefaultDpAddressRequest.defaultDpAddress = TEST_DP_ADDRESS1;
46	setDefaultDpAddressRequest.GenHexData();
47	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
48	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
49	
50	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
51	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
52	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
53	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
54	try
55	{
56		curStrHandle.CheckData(setDefaultDpAddressRequest.defaultDpAddress, euiccConfiguredAddressesResponse.defaultDpAddress,"default Dp Address");
57		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
58		
59		
60	}catch(e){
61		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
62	}
63	
64	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
65	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
66	setDefaultDpAddressRequest.defaultDpAddress = "";
67	setDefaultDpAddressRequest.GenHexData();
68	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
69	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
70	
71	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
72	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
73	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
74	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
75	
76	try
77	{
78		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
79			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
80		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
81		
82		
83	}catch(e){
84		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
85	}
86	RecoverCard();
87}
88
89function TC_eUICC_ES10a_SetDefaultDpAddress_02_Nominal_Set_SM_DP_Address_with_SM_DP_Address_already_in_eUICC()
90{
91	
92	tracenamestr = "测试目的:eUICC上已存在SM-DP+地址,设置SM-DP+地址";
93	curDis.TraceStart(sno++,tracenamestr);
94
95	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
96	Ini_powerOn_eUICC_LPAe_not_activate();
97	
98	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
99	TS_MANAGE_CHANNEL_OPEN();
100	
101	curLogicChannel = 1;
102	
103	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
104	TS_SELECT("Select ISD",ISD_R_AID,"9000");
105	
106	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,设置DefaultDpAddressRequest为TEST_DP_ADDRESS1;");
107	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
108	setDefaultDpAddressRequest.defaultDpAddress = TEST_DP_ADDRESS1;
109	setDefaultDpAddressRequest.GenHexData();
110	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
111	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
112	
113	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
114	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
115	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
116	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
117	
118	try
119	{
120		curStrHandle.CheckData(setDefaultDpAddressRequest.defaultDpAddress, euiccConfiguredAddressesResponse.defaultDpAddress,"default Dp Address");
121		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
122		
123		
124	}catch(e){
125		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
126	}
127	
128	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,设置DefaultDpAddressRequest为TEST_DP_ADDRESS2;");
129	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
130	setDefaultDpAddressRequest.defaultDpAddress = TEST_DP_ADDRESS2;
131	setDefaultDpAddressRequest.GenHexData();
132	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
133	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
134	
135	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
136	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
137	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
138	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
139	
140	try
141	{
142		curStrHandle.CheckData(setDefaultDpAddressRequest.defaultDpAddress, euiccConfiguredAddressesResponse.defaultDpAddress,"default Dp Address");
143		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
144		
145		
146	}catch(e){
147		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
148	}
149	
150	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
151	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
152	setDefaultDpAddressRequest.defaultDpAddress = "";
153	setDefaultDpAddressRequest.GenHexData();
154	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
155	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
156	
157	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
158	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
159
160	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
161	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
162	
163	try
164	{
165		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
166			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
167		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
168		
169		
170	}catch(e){
171		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
172	}
173	RecoverCard();
174}
175
176function TC_eUICC_ES10a_SetDefaultDpAddress_03_Nominal_Set_Empty_SM_DP_Address_with_SM_DP_Address_already_in_eUICC()
177{
178	
179	tracenamestr = "初始化卡片,Euicc中已经存在SM-DP+地址";
180	curDis.TraceStart(sno++,tracenamestr);
181
182	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
183	Ini_powerOn_eUICC_LPAe_not_activate();
184	
185	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
186	TS_MANAGE_CHANNEL_OPEN();
187	
188	curLogicChannel = 1;
189	
190	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
191	TS_SELECT("Select ISD",ISD_R_AID,"9000");
192	
193	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,设置DefaultDpAddressRequest为TEST_DP_ADDRESS1;");
194	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
195	setDefaultDpAddressRequest.defaultDpAddress = TEST_DP_ADDRESS1;
196	setDefaultDpAddressRequest.GenHexData();
197	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
198	
199	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
200	
201	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
202	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
203	
204	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
205	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
206	
207	try
208	{
209		curStrHandle.CheckData(setDefaultDpAddressRequest.defaultDpAddress, euiccConfiguredAddressesResponse.defaultDpAddress,"default Dp Address");
210		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
211		
212		
213	}catch(e){
214		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
215	}
216	
217	tracenamestr = "eUICC上已存在SM-DP+地址,设置SM-DP+地址为空";
218	curDis.TraceStart(sno++,tracenamestr);
219	
220	stno = 1;
221	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
222	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
223	setDefaultDpAddressRequest.defaultDpAddress = "";
224	setDefaultDpAddressRequest.GenHexData();
225	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
226	
227	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
228	
229	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
230	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
231	
232	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
233	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
234	
235	try
236	{
237		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
238			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
239		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
240		
241	}catch(e){
242		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
243	}
244	
245	RecoverCard();
246}
247
248function TC_eUICC_ES10a_SetDefaultDpAddress_04_Nominal_Set_Empty_SM_DP_Address_with_Empty_SM_DP_Address_in_eUICC()
249{
250	
251	tracenamestr = "初始化卡片,Euicc中不存在SM-DP+地址";
252	curDis.TraceStart(sno++,tracenamestr);
253
254	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
255	Ini_powerOn_eUICC_LPAe_not_activate();
256	
257	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
258	TS_MANAGE_CHANNEL_OPEN();
259	
260	curLogicChannel = 1;
261	
262	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
263	TS_SELECT("Select ISD",ISD_R_AID,"9000");
264	
265	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
266	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
267	setDefaultDpAddressRequest.defaultDpAddress = "";
268	setDefaultDpAddressRequest.GenHexData();
269	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
270	
271	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
272	
273	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
274	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
275	
276	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
277	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
278	
279	try
280	{
281		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
282			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
283		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
284		
285		
286	}catch(e){
287		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
288	}
289	
290	tracenamestr = "eUICC上SM-DP+地址为空,设置SM-DP+地址为空";
291	curDis.TraceStart(sno++,tracenamestr);
292	
293	stno = 1;
294	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
295	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
296	setDefaultDpAddressRequest.defaultDpAddress = "";
297	setDefaultDpAddressRequest.GenHexData();
298	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
299	
300	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
301	
302	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
303	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
304	
305	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
306	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
307	
308	try
309	{
310		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
311			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
312		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
313		
314	}catch(e){
315		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
316	}
317	
318	RecoverCard();
319}
320
-cas 盲生成TC_eUICC_ES10a_SetDefaultDPAddress/Import/TC_eUICC_ES10a_SetDefaultDPAddress.js289 行 / 20267 字符 / gb18030入口函数 @L19
1// Author: 卡思Cas智能体
2// Date: 20261004-021945
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10a.SetDefaultDPAddress,Test Sequence #01–#04 Nominal(空→置1 / 置1→置2 / 置1→置空 / 空→置空),适用性 M。
4// Test points: S1-C1 ATR_present;S2-C2 FCP_Template;S2-C1 SW;S3-C1 SW;S4-C1 final SW;S5-C1 SW
5//   S5-C2 CHANNEL_NUMBER extracted;S6-C1 SW;S7-C1 SW;S7-C2 setDefaultDpAddressResult ok;S8-C1 SW
6//   S8-C2 defaultDpAddress testsmdpplus1.example.com;S8-C2 rootDsAddress testrootsmds.example.com
7//   S9-C1 ATR_present;S10-C2 FCP_Template;S10-C1 SW;S11-C1 SW;S12-C1 final SW;S13-C1 SW
8//   S13-C2 CHANNEL_NUMBER extracted;S14-C1 SW;S15-C1 SW;S15-C2 setDefaultDpAddressResult ok
9//   S16-C1 SW;S16-C2 defaultDpAddress testsmdpplus2.example.com;S17-C1 ATR_present
10//   S18-C2 FCP_Template;S18-C1 SW;S19-C1 SW;S20-C1 final SW;S21-C1 SW
11//   S21-C2 CHANNEL_NUMBER extracted;S22-C1 SW;S23-C1 SW;S23-C2 setDefaultDpAddressResult ok
12//   S24-C1 SW;S24-C2 defaultDpAddress absent;S24-C2 rootDsAddress present;S25-C1 ATR_present
13//   S26-C2 FCP_Template;S26-C1 SW;S27-C1 SW;S28-C1 final SW;S29-C1 SW
14//   S29-C2 CHANNEL_NUMBER extracted;S30-C1 SW;S31-C1 SW;S31-C2 setDefaultDpAddressResult ok
15//   S32-C1 SW;S32-C2 defaultDpAddress absent
16// 本函数由 CaseIR 4.2.9.2.1 编译生成(fullwave-blindgen-live-70,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
17// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
18// 适用性 M:编译期门,运行时由 harness 环境前置承担。
19function TC_eUICC_ES10a_SetDefaultDPAddress_01_04_Nominal_1_1_2_1() {
20    var bind = curBind;
21    // IC1 PROC_EUICC_INITIALIZATION_SEQUENCE(各序列): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
22    // IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR(各序列): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
23
24    // 步骤 1:Seq#01 IC1/1: RESET(PROC_EUICC_INITIALIZATION_SEQUENCE 展开1/4,K_annexC2_procs 表1256)(procedure_expansion)
25    var s1 = bind.resetAndAtr();
26    bind.checkData("S1-C1 ATR_present", "1", s1.atr_hex !== "" ? "1" : "0");
27
28    // 步骤 2:Seq#01 IC1/2: [SELECT_MF](展开2/4)(procedure_expansion)
29    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
30    var s2 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
31    bind.checkData("S2-C2 FCP_Template", "1", s2.resp.length > 0 ? "1" : "0");
32    bind.checkData("S2-C1 SW", "9000", s2.sw);
33
34    // 步骤 3:Seq#01 IC1/3: [TERMINAL_CAPABILITY_LPAd](展开3/4)(procedure_expansion)
35    var s3 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
36    bind.checkData("S3-C1 SW", "9000", s3.sw);
37
38    // 步骤 4:Seq#01 IC1/4: [TERMINAL_PROFILE](展开4/4)(procedure_expansion)
39    var steady4 = bind.runToSteadyState(function () {
40        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
41    });
42    bind.checkData("S4-C1 final SW", "9000", steady4.final.sw);
43
44    // 步骤 5:Seq#01 IC2/1: [MANAGE_CHANNEL_OPEN](PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR 展开1/2,K_annexC2_procs 表1258)(procedure_expansion)
45    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
46    var s5 = bind.manageChannelOpen("9000");
47    bind.checkData("S5-C1 SW", "9000", s5.sw);
48    bind.checkData("S5-C2 CHANNEL_NUMBER extracted", "1", s5.chan !== null ? "1" : "0");
49
50    // 步骤 6:Seq#01 IC2/2: MTD_SELECT(procedure_expansion)
51    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
52    var s6 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", "00", "9000");
53    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
54    bind.checkData("S6-C1 SW", "9000", s6.sw);
55
56    // 步骤 7:Seq#01 1: MTD_STORE_DATA(tc_step;REQ: RQ57_020, RQ57_021, RQ57_023, RQ57_024, RQ33_021_4)
57    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
58    var sdCla7 = s5.chan !== null ? (s5.chan <= 3 ? 128 + s5.chan : 188 + s5.chan).toString(16).toUpperCase() : null;
59    var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF3F1B801974657374736D6470706C7573312E6578616D706C652E636F6D", "00", "9000");
60    bind.checkData("S7-C1 SW", "9000", s7.sw);
61    var r2w7 = BindGecaProc.parseGecaResponse(s7.resp, {outer: "BF3F", required: ["80"]});
62    bind.checkData("S7-C2 setDefaultDpAddressResult ok", "00", (r2w7.ok && r2w7.fields["80"] === "00") ? "00" : (r2w7.fields["80"] || "absent"));
63    // S7-C3: kind 'requirement' pattern 'defaultDpAddress set to TEST_DP_ADDRESS1' has no static generation face (corpus vacuum; see CaseIR unresolved).
64    // S7-C3: binding:same_step_result_ok_js_face(S22_set_dp:result-enum) (check_attestation)
65
66    // 步骤 8:Seq#01 2: MTD_STORE_DATA(tc_step;REQ: RQ57_020, RQ57_021, RQ57_023, RQ57_024, RQ33_021_5)
67    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
68    var sdCla8 = s5.chan !== null ? (s5.chan <= 3 ? 128 + s5.chan : 188 + s5.chan).toString(16).toUpperCase() : null;
69    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF3C00", "00", "9000");
70    bind.checkData("S8-C1 SW", "9000", s8.sw);
71    // Inline ASCII->hex helper (UTF8String expected values; values enter as
72    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
73    function __asciiHex(text) {
74        var out = "";
75        for (var i = 0; i < text.length; i++) {
76            var c = text.charCodeAt(i).toString(16).toUpperCase();
77            out += (c.length === 1 ? "0" + c : c);
78        }
79        return out;
80    }
81    var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF3C", required: []});
82    var r2c8 = r2w8.children;
83    var r2c08 = 0;
84    for (var r2ci8 = 0; r2ci8 < r2c8.length; r2ci8++) {
85        if (r2c8[r2ci8].tag === "80" || r2c8[r2ci8].tag === "81") { r2c08++; }
86    }
87    var r2v8 = __asciiHex("testsmdpplus1.example.com");
88    bind.checkData("S8-C2 defaultDpAddress testsmdpplus1.example.com", r2v8, (r2c08 >= 2 ? r2c8[0].value : "absent"));
89    var r2v8 = __asciiHex("testrootsmds.example.com");
90    bind.checkData("S8-C2 rootDsAddress testrootsmds.example.com", r2v8, (r2c08 >= 1 ? r2c8[r2c8.length - 1].value : "absent"));
91
92    // 步骤 9:Seq#02 IC1/1: RESET(PROC_EUICC_INITIALIZATION_SEQUENCE 展开1/4,K_annexC2_procs 表1256)(procedure_expansion)
93    var s9 = bind.resetAndAtr();
94    bind.checkData("S9-C1 ATR_present", "1", s9.atr_hex !== "" ? "1" : "0");
95
96    // 步骤 10:Seq#02 IC1/2: [SELECT_MF](展开2/4)(procedure_expansion)
97    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
98    var s10 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
99    bind.checkData("S10-C2 FCP_Template", "1", s10.resp.length > 0 ? "1" : "0");
100    bind.checkData("S10-C1 SW", "9000", s10.sw);
101
102    // 步骤 11:Seq#02 IC1/3: [TERMINAL_CAPABILITY_LPAd](展开3/4)(procedure_expansion)
103    var s11 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
104    bind.checkData("S11-C1 SW", "9000", s11.sw);
105
106    // 步骤 12:Seq#02 IC1/4: [TERMINAL_PROFILE](展开4/4)(procedure_expansion)
107    var steady12 = bind.runToSteadyState(function () {
108        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
109    });
110    bind.checkData("S12-C1 final SW", "9000", steady12.final.sw);
111
112    // 步骤 13:Seq#02 IC2/1: [MANAGE_CHANNEL_OPEN](PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR 展开1/2,K_annexC2_procs 表1258)(procedure_expansion)
113    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
114    var s13 = bind.manageChannelOpen("9000");
115    bind.checkData("S13-C1 SW", "9000", s13.sw);
116    bind.checkData("S13-C2 CHANNEL_NUMBER extracted", "1", s13.chan !== null ? "1" : "0");
117
118    // 步骤 14:Seq#02 IC2/2: MTD_SELECT(procedure_expansion)
119    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
120    var s14 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", "00", "9000");
121    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
122    bind.checkData("S14-C1 SW", "9000", s14.sw);
123
124    // 步骤 15:Seq#02 1: MTD_STORE_DATA(tc_step;REQ: RQ57_020, RQ57_021, RQ57_023, RQ57_024, RQ33_021_4)
125    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
126    var sdCla15 = s13.chan !== null ? (s13.chan <= 3 ? 128 + s13.chan : 188 + s13.chan).toString(16).toUpperCase() : null;
127    var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF3F1B801974657374736D6470706C7573322E6578616D706C652E636F6D", "00", "9000");
128    bind.checkData("S15-C1 SW", "9000", s15.sw);
129    var r2w15 = BindGecaProc.parseGecaResponse(s15.resp, {outer: "BF3F", required: ["80"]});
130    bind.checkData("S15-C2 setDefaultDpAddressResult ok", "00", (r2w15.ok && r2w15.fields["80"] === "00") ? "00" : (r2w15.fields["80"] || "absent"));
131    // S15-C3: kind 'requirement' pattern 'defaultDpAddress overwritten to TEST_DP_ADDRESS2' has no static generation face (corpus vacuum; see CaseIR unresolved).
132    // S15-C3: binding:same_step_result_ok_js_face(S22_set_dp:result-enum) (check_attestation)
133
134    // 步骤 16:Seq#02 2: MTD_STORE_DATA(tc_step;REQ: RQ57_020, RQ57_021, RQ57_023, RQ57_024, RQ33_021_5)
135    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
136    var sdCla16 = s13.chan !== null ? (s13.chan <= 3 ? 128 + s13.chan : 188 + s13.chan).toString(16).toUpperCase() : null;
137    var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF3C00", "00", "9000");
138    bind.checkData("S16-C1 SW", "9000", s16.sw);
139    // Inline ASCII->hex helper (UTF8String expected values; values enter as
140    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
141    function __asciiHex(text) {
142        var out = "";
143        for (var i = 0; i < text.length; i++) {
144            var c = text.charCodeAt(i).toString(16).toUpperCase();
145            out += (c.length === 1 ? "0" + c : c);
146        }
147        return out;
148    }
149    var r2w16 = BindGecaProc.parseGecaResponse(s16.resp, {outer: "BF3C", required: []});
150    var r2c16 = r2w16.children;
151    var r2c016 = 0;
152    for (var r2ci16 = 0; r2ci16 < r2c16.length; r2ci16++) {
153        if (r2c16[r2ci16].tag === "80" || r2c16[r2ci16].tag === "81") { r2c016++; }
154    }
155    var r2v16 = __asciiHex("testsmdpplus2.example.com");
156    bind.checkData("S16-C2 defaultDpAddress testsmdpplus2.example.com", r2v16, (r2c016 >= 2 ? r2c16[0].value : "absent"));
157
158    // 步骤 17:Seq#03 IC1/1: RESET(PROC_EUICC_INITIALIZATION_SEQUENCE 展开1/4,K_annexC2_procs 表1256)(procedure_expansion)
159    var s17 = bind.resetAndAtr();
160    bind.checkData("S17-C1 ATR_present", "1", s17.atr_hex !== "" ? "1" : "0");
161
162    // 步骤 18:Seq#03 IC1/2: [SELECT_MF](展开2/4)(procedure_expansion)
163    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
164    var s18 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
165    bind.checkData("S18-C2 FCP_Template", "1", s18.resp.length > 0 ? "1" : "0");
166    bind.checkData("S18-C1 SW", "9000", s18.sw);
167
168    // 步骤 19:Seq#03 IC1/3: [TERMINAL_CAPABILITY_LPAd](展开3/4)(procedure_expansion)
169    var s19 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
170    bind.checkData("S19-C1 SW", "9000", s19.sw);
171
172    // 步骤 20:Seq#03 IC1/4: [TERMINAL_PROFILE](展开4/4)(procedure_expansion)
173    var steady20 = bind.runToSteadyState(function () {
174        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
175    });
176    bind.checkData("S20-C1 final SW", "9000", steady20.final.sw);
177
178    // 步骤 21:Seq#03 IC2/1: [MANAGE_CHANNEL_OPEN](PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR 展开1/2,K_annexC2_procs 表1258)(procedure_expansion)
179    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
180    var s21 = bind.manageChannelOpen("9000");
181    bind.checkData("S21-C1 SW", "9000", s21.sw);
182    bind.checkData("S21-C2 CHANNEL_NUMBER extracted", "1", s21.chan !== null ? "1" : "0");
183
184    // 步骤 22:Seq#03 IC2/2: MTD_SELECT(procedure_expansion)
185    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
186    var s22 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", "00", "9000");
187    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
188    bind.checkData("S22-C1 SW", "9000", s22.sw);
189
190    // 步骤 23:Seq#03 1: MTD_STORE_DATA(tc_step;REQ: RQ57_022, RQ57_023, RQ57_024, RQ33_021_4)
191    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
192    var sdCla23 = s21.chan !== null ? (s21.chan <= 3 ? 128 + s21.chan : 188 + s21.chan).toString(16).toUpperCase() : null;
193    var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF3F028000", "00", "9000");
194    bind.checkData("S23-C1 SW", "9000", s23.sw);
195    var r2w23 = BindGecaProc.parseGecaResponse(s23.resp, {outer: "BF3F", required: ["80"]});
196    bind.checkData("S23-C2 setDefaultDpAddressResult ok", "00", (r2w23.ok && r2w23.fields["80"] === "00") ? "00" : (r2w23.fields["80"] || "absent"));
197    // S23-C3: kind 'requirement' pattern 'empty string removes existing defaultDpAddress' has no static generation face (corpus vacuum; see CaseIR unresolved).
198    // S23-C3: binding:same_step_result_ok_js_face(S22_set_dp:result-enum) (check_attestation)
199
200    // 步骤 24:Seq#03 2: MTD_STORE_DATA(tc_step;REQ: RQ57_022, RQ57_023, RQ57_024, RQ33_021_5)
201    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
202    var sdCla24 = s21.chan !== null ? (s21.chan <= 3 ? 128 + s21.chan : 188 + s21.chan).toString(16).toUpperCase() : null;
203    var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF3C00", "00", "9000");
204    bind.checkData("S24-C1 SW", "9000", s24.sw);
205    // Inline ASCII->hex helper (UTF8String expected values; values enter as
206    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
207    function __asciiHex(text) {
208        var out = "";
209        for (var i = 0; i < text.length; i++) {
210            var c = text.charCodeAt(i).toString(16).toUpperCase();
211            out += (c.length === 1 ? "0" + c : c);
212        }
213        return out;
214    }
215    var r2w24 = BindGecaProc.parseGecaResponse(s24.resp, {outer: "BF3C", required: []});
216    var r2c24 = r2w24.children;
217    var r2c024 = 0;
218    for (var r2ci24 = 0; r2ci24 < r2c24.length; r2ci24++) {
219        if (r2c24[r2ci24].tag === "80" || r2c24[r2ci24].tag === "81") { r2c024++; }
220    }
221    bind.checkData("S24-C2 defaultDpAddress absent", "absent", (r2c024 <= 1 ? "absent" : "present:" + r2c24[0].value));
222    bind.checkData("S24-C2 rootDsAddress present", "1", (r2c024 >= 1 ? "1" : "0"));
223
224    // 步骤 25:Seq#04 IC1/1: RESET(PROC_EUICC_INITIALIZATION_SEQUENCE 展开1/4,K_annexC2_procs 表1256)(procedure_expansion)
225    var s25 = bind.resetAndAtr();
226    bind.checkData("S25-C1 ATR_present", "1", s25.atr_hex !== "" ? "1" : "0");
227
228    // 步骤 26:Seq#04 IC1/2: [SELECT_MF](展开2/4)(procedure_expansion)
229    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
230    var s26 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
231    bind.checkData("S26-C2 FCP_Template", "1", s26.resp.length > 0 ? "1" : "0");
232    bind.checkData("S26-C1 SW", "9000", s26.sw);
233
234    // 步骤 27:Seq#04 IC1/3: [TERMINAL_CAPABILITY_LPAd](展开3/4)(procedure_expansion)
235    var s27 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
236    bind.checkData("S27-C1 SW", "9000", s27.sw);
237
238    // 步骤 28:Seq#04 IC1/4: [TERMINAL_PROFILE](展开4/4)(procedure_expansion)
239    var steady28 = bind.runToSteadyState(function () {
240        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
241    });
242    bind.checkData("S28-C1 final SW", "9000", steady28.final.sw);
243
244    // 步骤 29:Seq#04 IC2/1: [MANAGE_CHANNEL_OPEN](PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR 展开1/2,K_annexC2_procs 表1258)(procedure_expansion)
245    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
246    var s29 = bind.manageChannelOpen("9000");
247    bind.checkData("S29-C1 SW", "9000", s29.sw);
248    bind.checkData("S29-C2 CHANNEL_NUMBER extracted", "1", s29.chan !== null ? "1" : "0");
249
250    // 步骤 30:Seq#04 IC2/2: MTD_SELECT(procedure_expansion)
251    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
252    var s30 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", "00", "9000");
253    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
254    bind.checkData("S30-C1 SW", "9000", s30.sw);
255
256    // 步骤 31:Seq#04 1: MTD_STORE_DATA(tc_step;REQ: RQ57_022, RQ57_023, RQ57_024, RQ33_021_4)
257    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
258    var sdCla31 = s29.chan !== null ? (s29.chan <= 3 ? 128 + s29.chan : 188 + s29.chan).toString(16).toUpperCase() : null;
259    var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF3F028000", "00", "9000");
260    bind.checkData("S31-C1 SW", "9000", s31.sw);
261    var r2w31 = BindGecaProc.parseGecaResponse(s31.resp, {outer: "BF3F", required: ["80"]});
262    bind.checkData("S31-C2 setDefaultDpAddressResult ok", "00", (r2w31.ok && r2w31.fields["80"] === "00") ? "00" : (r2w31.fields["80"] || "absent"));
263    // S31-C3: kind 'requirement' pattern 'empty string; no existing address; ok' has no static generation face (corpus vacuum; see CaseIR unresolved).
264    // S31-C3: binding:same_step_result_ok_js_face(S22_set_dp:result-enum) (check_attestation)
265
266    // 步骤 32:Seq#04 2: MTD_STORE_DATA(tc_step;REQ: RQ57_022, RQ57_023, RQ57_024, RQ33_021_5)
267    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
268    var sdCla32 = s29.chan !== null ? (s29.chan <= 3 ? 128 + s29.chan : 188 + s29.chan).toString(16).toUpperCase() : null;
269    var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF3C00", "00", "9000");
270    bind.checkData("S32-C1 SW", "9000", s32.sw);
271    // Inline ASCII->hex helper (UTF8String expected values; values enter as
272    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
273    function __asciiHex(text) {
274        var out = "";
275        for (var i = 0; i < text.length; i++) {
276            var c = text.charCodeAt(i).toString(16).toUpperCase();
277            out += (c.length === 1 ? "0" + c : c);
278        }
279        return out;
280    }
281    var r2w32 = BindGecaProc.parseGecaResponse(s32.resp, {outer: "BF3C", required: []});
282    var r2c32 = r2w32.children;
283    var r2c032 = 0;
284    for (var r2ci32 = 0; r2ci32 < r2c32.length; r2ci32++) {
285        if (r2c32[r2ci32].tag === "80" || r2c32[r2ci32].tag === "81") { r2c032++; }
286    }
287    bind.checkData("S32-C2 defaultDpAddress absent", "absent", (r2c032 <= 1 ? "absent" : "present:" + r2c32[0].value));
288}
289

完整 unified diff

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

展开 diff(610 行)
--- -man
+++ -cas
@@ -1,320 +1,289 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10a_SetDefaultDpAddress_01_Nominal_Set_SM_DP_Address_with_Address_Empty_in_eUICC + TC_eUICC_ES10a_SetDefaultDpAddress_02_Nominal_Set_SM_DP_Address_with_SM_DP_Address_already_in_eUICC + TC_eUICC_ES10a_SetDefaultDpAddress_03_Nominal_Set_Empty_SM_DP_Address_with_SM_DP_Address_already_in_eUICC + TC_eUICC_ES10a_SetDefaultDpAddress_04_Nominal_Set_Empty_SM_DP_Address_with_Empty_SM_DP_Address_in_eUICC (extracted verbatim)
-
-function TC_eUICC_ES10a_SetDefaultDpAddress_01_Nominal_Set_SM_DP_Address_with_Address_Empty_in_eUICC()
-{
-	
-	tracenamestr = "测试目的:eUICC上SM-DP+地址为空,设置SM-DP+地址";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = "";
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);	
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
-			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,设置DefaultDpAddressRequest为TEST_DP_ADDRESS1;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = TEST_DP_ADDRESS1;
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	try
-	{
-		curStrHandle.CheckData(setDefaultDpAddressRequest.defaultDpAddress, euiccConfiguredAddressesResponse.defaultDpAddress,"default Dp Address");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = "";
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
-			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	RecoverCard();
-}
-
-function TC_eUICC_ES10a_SetDefaultDpAddress_02_Nominal_Set_SM_DP_Address_with_SM_DP_Address_already_in_eUICC()
-{
-	
-	tracenamestr = "测试目的:eUICC上已存在SM-DP+地址,设置SM-DP+地址";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,设置DefaultDpAddressRequest为TEST_DP_ADDRESS1;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = TEST_DP_ADDRESS1;
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(setDefaultDpAddressRequest.defaultDpAddress, euiccConfiguredAddressesResponse.defaultDpAddress,"default Dp Address");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,设置DefaultDpAddressRequest为TEST_DP_ADDRESS2;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = TEST_DP_ADDRESS2;
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(setDefaultDpAddressRequest.defaultDpAddress, euiccConfiguredAddressesResponse.defaultDpAddress,"default Dp Address");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = "";
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
-			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	RecoverCard();
-}
-
-function TC_eUICC_ES10a_SetDefaultDpAddress_03_Nominal_Set_Empty_SM_DP_Address_with_SM_DP_Address_already_in_eUICC()
-{
-	
-	tracenamestr = "初始化卡片,Euicc中已经存在SM-DP+地址";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,设置DefaultDpAddressRequest为TEST_DP_ADDRESS1;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = TEST_DP_ADDRESS1;
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
-	
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(setDefaultDpAddressRequest.defaultDpAddress, euiccConfiguredAddressesResponse.defaultDpAddress,"default Dp Address");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	tracenamestr = "eUICC上已存在SM-DP+地址,设置SM-DP+地址为空";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	stno = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = "";
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
-	
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
-			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10a_SetDefaultDpAddress_04_Nominal_Set_Empty_SM_DP_Address_with_Empty_SM_DP_Address_in_eUICC()
-{
-	
-	tracenamestr = "初始化卡片,Euicc中不存在SM-DP+地址";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = "";
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
-	
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
-			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	tracenamestr = "eUICC上SM-DP+地址为空,设置SM-DP+地址为空";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	stno = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
-	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
-	setDefaultDpAddressRequest.defaultDpAddress = "";
-	setDefaultDpAddressRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
-	
-	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	
-	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
-	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
-			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
-		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
-		
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261004-021945
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10a.SetDefaultDPAddress,Test Sequence #01–#04 Nominal(空→置1 / 置1→置2 / 置1→置空 / 空→置空),适用性 M。
+// Test points: S1-C1 ATR_present;S2-C2 FCP_Template;S2-C1 SW;S3-C1 SW;S4-C1 final SW;S5-C1 SW
+//   S5-C2 CHANNEL_NUMBER extracted;S6-C1 SW;S7-C1 SW;S7-C2 setDefaultDpAddressResult ok;S8-C1 SW
+//   S8-C2 defaultDpAddress testsmdpplus1.example.com;S8-C2 rootDsAddress testrootsmds.example.com
+//   S9-C1 ATR_present;S10-C2 FCP_Template;S10-C1 SW;S11-C1 SW;S12-C1 final SW;S13-C1 SW
+//   S13-C2 CHANNEL_NUMBER extracted;S14-C1 SW;S15-C1 SW;S15-C2 setDefaultDpAddressResult ok
+//   S16-C1 SW;S16-C2 defaultDpAddress testsmdpplus2.example.com;S17-C1 ATR_present
+//   S18-C2 FCP_Template;S18-C1 SW;S19-C1 SW;S20-C1 final SW;S21-C1 SW
+//   S21-C2 CHANNEL_NUMBER extracted;S22-C1 SW;S23-C1 SW;S23-C2 setDefaultDpAddressResult ok
+//   S24-C1 SW;S24-C2 defaultDpAddress absent;S24-C2 rootDsAddress present;S25-C1 ATR_present
+//   S26-C2 FCP_Template;S26-C1 SW;S27-C1 SW;S28-C1 final SW;S29-C1 SW
+//   S29-C2 CHANNEL_NUMBER extracted;S30-C1 SW;S31-C1 SW;S31-C2 setDefaultDpAddressResult ok
+//   S32-C1 SW;S32-C2 defaultDpAddress absent
+// 本函数由 CaseIR 4.2.9.2.1 编译生成(fullwave-blindgen-live-70,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 M:编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10a_SetDefaultDPAddress_01_04_Nominal_1_1_2_1() {
+    var bind = curBind;
+    // IC1 PROC_EUICC_INITIALIZATION_SEQUENCE(各序列): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // IC2 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR(各序列): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+
+    // 步骤 1:Seq#01 IC1/1: RESET(PROC_EUICC_INITIALIZATION_SEQUENCE 展开1/4,K_annexC2_procs 表1256)(procedure_expansion)
+    var s1 = bind.resetAndAtr();
+    bind.checkData("S1-C1 ATR_present", "1", s1.atr_hex !== "" ? "1" : "0");
+
+    // 步骤 2:Seq#01 IC1/2: [SELECT_MF](展开2/4)(procedure_expansion)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s2 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("S2-C2 FCP_Template", "1", s2.resp.length > 0 ? "1" : "0");
+    bind.checkData("S2-C1 SW", "9000", s2.sw);
+
+    // 步骤 3:Seq#01 IC1/3: [TERMINAL_CAPABILITY_LPAd](展开3/4)(procedure_expansion)
+    var s3 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("S3-C1 SW", "9000", s3.sw);
+
+    // 步骤 4:Seq#01 IC1/4: [TERMINAL_PROFILE](展开4/4)(procedure_expansion)
+    var steady4 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("S4-C1 final SW", "9000", steady4.final.sw);
+
+    // 步骤 5:Seq#01 IC2/1: [MANAGE_CHANNEL_OPEN](PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR 展开1/2,K_annexC2_procs 表1258)(procedure_expansion)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s5 = bind.manageChannelOpen("9000");
+    bind.checkData("S5-C1 SW", "9000", s5.sw);
+    bind.checkData("S5-C2 CHANNEL_NUMBER extracted", "1", s5.chan !== null ? "1" : "0");
+
+    // 步骤 6:Seq#01 IC2/2: MTD_SELECT(procedure_expansion)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s6 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", "00", "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("S6-C1 SW", "9000", s6.sw);
+
+    // 步骤 7:Seq#01 1: MTD_STORE_DATA(tc_step;REQ: RQ57_020, RQ57_021, RQ57_023, RQ57_024, RQ33_021_4)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla7 = s5.chan !== null ? (s5.chan <= 3 ? 128 + s5.chan : 188 + s5.chan).toString(16).toUpperCase() : null;
+    var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF3F1B801974657374736D6470706C7573312E6578616D706C652E636F6D", "00", "9000");
+    bind.checkData("S7-C1 SW", "9000", s7.sw);
+    var r2w7 = BindGecaProc.parseGecaResponse(s7.resp, {outer: "BF3F", required: ["80"]});
+    bind.checkData("S7-C2 setDefaultDpAddressResult ok", "00", (r2w7.ok && r2w7.fields["80"] === "00") ? "00" : (r2w7.fields["80"] || "absent"));
+    // S7-C3: kind 'requirement' pattern 'defaultDpAddress set to TEST_DP_ADDRESS1' has no static generation face (corpus vacuum; see CaseIR unresolved).
+    // S7-C3: binding:same_step_result_ok_js_face(S22_set_dp:result-enum) (check_attestation)
+
+    // 步骤 8:Seq#01 2: MTD_STORE_DATA(tc_step;REQ: RQ57_020, RQ57_021, RQ57_023, RQ57_024, RQ33_021_5)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla8 = s5.chan !== null ? (s5.chan <= 3 ? 128 + s5.chan : 188 + s5.chan).toString(16).toUpperCase() : null;
+    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF3C00", "00", "9000");
+    bind.checkData("S8-C1 SW", "9000", s8.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF3C", required: []});
+    var r2c8 = r2w8.children;
+    var r2c08 = 0;
+    for (var r2ci8 = 0; r2ci8 < r2c8.length; r2ci8++) {
+        if (r2c8[r2ci8].tag === "80" || r2c8[r2ci8].tag === "81") { r2c08++; }
+    }
+    var r2v8 = __asciiHex("testsmdpplus1.example.com");
+    bind.checkData("S8-C2 defaultDpAddress testsmdpplus1.example.com", r2v8, (r2c08 >= 2 ? r2c8[0].value : "absent"));
+    var r2v8 = __asciiHex("testrootsmds.example.com");
+    bind.checkData("S8-C2 rootDsAddress testrootsmds.example.com", r2v8, (r2c08 >= 1 ? r2c8[r2c8.length - 1].value : "absent"));
+
+    // 步骤 9:Seq#02 IC1/1: RESET(PROC_EUICC_INITIALIZATION_SEQUENCE 展开1/4,K_annexC2_procs 表1256)(procedure_expansion)
+    var s9 = bind.resetAndAtr();
+    bind.checkData("S9-C1 ATR_present", "1", s9.atr_hex !== "" ? "1" : "0");
+
+    // 步骤 10:Seq#02 IC1/2: [SELECT_MF](展开2/4)(procedure_expansion)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s10 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("S10-C2 FCP_Template", "1", s10.resp.length > 0 ? "1" : "0");
+    bind.checkData("S10-C1 SW", "9000", s10.sw);
+
+    // 步骤 11:Seq#02 IC1/3: [TERMINAL_CAPABILITY_LPAd](展开3/4)(procedure_expansion)
+    var s11 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("S11-C1 SW", "9000", s11.sw);
+
+    // 步骤 12:Seq#02 IC1/4: [TERMINAL_PROFILE](展开4/4)(procedure_expansion)
+    var steady12 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("S12-C1 final SW", "9000", steady12.final.sw);
+
+    // 步骤 13:Seq#02 IC2/1: [MANAGE_CHANNEL_OPEN](PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR 展开1/2,K_annexC2_procs 表1258)(procedure_expansion)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s13 = bind.manageChannelOpen("9000");
+    bind.checkData("S13-C1 SW", "9000", s13.sw);
+    bind.checkData("S13-C2 CHANNEL_NUMBER extracted", "1", s13.chan !== null ? "1" : "0");
+
+    // 步骤 14:Seq#02 IC2/2: MTD_SELECT(procedure_expansion)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s14 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", "00", "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("S14-C1 SW", "9000", s14.sw);
+
+    // 步骤 15:Seq#02 1: MTD_STORE_DATA(tc_step;REQ: RQ57_020, RQ57_021, RQ57_023, RQ57_024, RQ33_021_4)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla15 = s13.chan !== null ? (s13.chan <= 3 ? 128 + s13.chan : 188 + s13.chan).toString(16).toUpperCase() : null;
+    var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF3F1B801974657374736D6470706C7573322E6578616D706C652E636F6D", "00", "9000");
+    bind.checkData("S15-C1 SW", "9000", s15.sw);
+    var r2w15 = BindGecaProc.parseGecaResponse(s15.resp, {outer: "BF3F", required: ["80"]});
+    bind.checkData("S15-C2 setDefaultDpAddressResult ok", "00", (r2w15.ok && r2w15.fields["80"] === "00") ? "00" : (r2w15.fields["80"] || "absent"));
+    // S15-C3: kind 'requirement' pattern 'defaultDpAddress overwritten to TEST_DP_ADDRESS2' has no static generation face (corpus vacuum; see CaseIR unresolved).
+    // S15-C3: binding:same_step_result_ok_js_face(S22_set_dp:result-enum) (check_attestation)
+
+    // 步骤 16:Seq#02 2: MTD_STORE_DATA(tc_step;REQ: RQ57_020, RQ57_021, RQ57_023, RQ57_024, RQ33_021_5)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla16 = s13.chan !== null ? (s13.chan <= 3 ? 128 + s13.chan : 188 + s13.chan).toString(16).toUpperCase() : null;
+    var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF3C00", "00", "9000");
+    bind.checkData("S16-C1 SW", "9000", s16.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2w16 = BindGecaProc.parseGecaResponse(s16.resp, {outer: "BF3C", required: []});
+    var r2c16 = r2w16.children;
+    var r2c016 = 0;
+    for (var r2ci16 = 0; r2ci16 < r2c16.length; r2ci16++) {
+        if (r2c16[r2ci16].tag === "80" || r2c16[r2ci16].tag === "81") { r2c016++; }
+    }
+    var r2v16 = __asciiHex("testsmdpplus2.example.com");
+    bind.checkData("S16-C2 defaultDpAddress testsmdpplus2.example.com", r2v16, (r2c016 >= 2 ? r2c16[0].value : "absent"));
+
+    // 步骤 17:Seq#03 IC1/1: RESET(PROC_EUICC_INITIALIZATION_SEQUENCE 展开1/4,K_annexC2_procs 表1256)(procedure_expansion)
+    var s17 = bind.resetAndAtr();
+    bind.checkData("S17-C1 ATR_present", "1", s17.atr_hex !== "" ? "1" : "0");
+
+    // 步骤 18:Seq#03 IC1/2: [SELECT_MF](展开2/4)(procedure_expansion)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s18 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("S18-C2 FCP_Template", "1", s18.resp.length > 0 ? "1" : "0");
+    bind.checkData("S18-C1 SW", "9000", s18.sw);
+
+    // 步骤 19:Seq#03 IC1/3: [TERMINAL_CAPABILITY_LPAd](展开3/4)(procedure_expansion)
+    var s19 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("S19-C1 SW", "9000", s19.sw);
+
+    // 步骤 20:Seq#03 IC1/4: [TERMINAL_PROFILE](展开4/4)(procedure_expansion)
+    var steady20 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("S20-C1 final SW", "9000", steady20.final.sw);
+
+    // 步骤 21:Seq#03 IC2/1: [MANAGE_CHANNEL_OPEN](PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR 展开1/2,K_annexC2_procs 表1258)(procedure_expansion)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s21 = bind.manageChannelOpen("9000");
+    bind.checkData("S21-C1 SW", "9000", s21.sw);
+    bind.checkData("S21-C2 CHANNEL_NUMBER extracted", "1", s21.chan !== null ? "1" : "0");
+
+    // 步骤 22:Seq#03 IC2/2: MTD_SELECT(procedure_expansion)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s22 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", "00", "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("S22-C1 SW", "9000", s22.sw);
+
+    // 步骤 23:Seq#03 1: MTD_STORE_DATA(tc_step;REQ: RQ57_022, RQ57_023, RQ57_024, RQ33_021_4)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla23 = s21.chan !== null ? (s21.chan <= 3 ? 128 + s21.chan : 188 + s21.chan).toString(16).toUpperCase() : null;
+    var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF3F028000", "00", "9000");
+    bind.checkData("S23-C1 SW", "9000", s23.sw);
+    var r2w23 = BindGecaProc.parseGecaResponse(s23.resp, {outer: "BF3F", required: ["80"]});
+    bind.checkData("S23-C2 setDefaultDpAddressResult ok", "00", (r2w23.ok && r2w23.fields["80"] === "00") ? "00" : (r2w23.fields["80"] || "absent"));
+    // S23-C3: kind 'requirement' pattern 'empty string removes existing defaultDpAddress' has no static generation face (corpus vacuum; see CaseIR unresolved).
+    // S23-C3: binding:same_step_result_ok_js_face(S22_set_dp:result-enum) (check_attestation)
+
+    // 步骤 24:Seq#03 2: MTD_STORE_DATA(tc_step;REQ: RQ57_022, RQ57_023, RQ57_024, RQ33_021_5)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla24 = s21.chan !== null ? (s21.chan <= 3 ? 128 + s21.chan : 188 + s21.chan).toString(16).toUpperCase() : null;
+    var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF3C00", "00", "9000");
+    bind.checkData("S24-C1 SW", "9000", s24.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2w24 = BindGecaProc.parseGecaResponse(s24.resp, {outer: "BF3C", required: []});
+    var r2c24 = r2w24.children;
+    var r2c024 = 0;
+    for (var r2ci24 = 0; r2ci24 < r2c24.length; r2ci24++) {
+        if (r2c24[r2ci24].tag === "80" || r2c24[r2ci24].tag === "81") { r2c024++; }
+    }
+    bind.checkData("S24-C2 defaultDpAddress absent", "absent", (r2c024 <= 1 ? "absent" : "present:" + r2c24[0].value));
+    bind.checkData("S24-C2 rootDsAddress present", "1", (r2c024 >= 1 ? "1" : "0"));
+
+    // 步骤 25:Seq#04 IC1/1: RESET(PROC_EUICC_INITIALIZATION_SEQUENCE 展开1/4,K_annexC2_procs 表1256)(procedure_expansion)
+    var s25 = bind.resetAndAtr();
+    bind.checkData("S25-C1 ATR_present", "1", s25.atr_hex !== "" ? "1" : "0");
+
+    // 步骤 26:Seq#04 IC1/2: [SELECT_MF](展开2/4)(procedure_expansion)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s26 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("S26-C2 FCP_Template", "1", s26.resp.length > 0 ? "1" : "0");
+    bind.checkData("S26-C1 SW", "9000", s26.sw);
+
+    // 步骤 27:Seq#04 IC1/3: [TERMINAL_CAPABILITY_LPAd](展开3/4)(procedure_expansion)
+    var s27 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("S27-C1 SW", "9000", s27.sw);
+
+    // 步骤 28:Seq#04 IC1/4: [TERMINAL_PROFILE](展开4/4)(procedure_expansion)
+    var steady28 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("S28-C1 final SW", "9000", steady28.final.sw);
+
+    // 步骤 29:Seq#04 IC2/1: [MANAGE_CHANNEL_OPEN](PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR 展开1/2,K_annexC2_procs 表1258)(procedure_expansion)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s29 = bind.manageChannelOpen("9000");
+    bind.checkData("S29-C1 SW", "9000", s29.sw);
+    bind.checkData("S29-C2 CHANNEL_NUMBER extracted", "1", s29.chan !== null ? "1" : "0");
+
+    // 步骤 30:Seq#04 IC2/2: MTD_SELECT(procedure_expansion)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s30 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", "00", "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("S30-C1 SW", "9000", s30.sw);
+
+    // 步骤 31:Seq#04 1: MTD_STORE_DATA(tc_step;REQ: RQ57_022, RQ57_023, RQ57_024, RQ33_021_4)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla31 = s29.chan !== null ? (s29.chan <= 3 ? 128 + s29.chan : 188 + s29.chan).toString(16).toUpperCase() : null;
+    var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF3F028000", "00", "9000");
+    bind.checkData("S31-C1 SW", "9000", s31.sw);
+    var r2w31 = BindGecaProc.parseGecaResponse(s31.resp, {outer: "BF3F", required: ["80"]});
+    bind.checkData("S31-C2 setDefaultDpAddressResult ok", "00", (r2w31.ok && r2w31.fields["80"] === "00") ? "00" : (r2w31.fields["80"] || "absent"));
+    // S31-C3: kind 'requirement' pattern 'empty string; no existing address; ok' has no static generation face (corpus vacuum; see CaseIR unresolved).
+    // S31-C3: binding:same_step_result_ok_js_face(S22_set_dp:result-enum) (check_attestation)
+
+    // 步骤 32:Seq#04 2: MTD_STORE_DATA(tc_step;REQ: RQ57_022, RQ57_023, RQ57_024, RQ33_021_5)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla32 = s29.chan !== null ? (s29.chan <= 3 ? 128 + s29.chan : 188 + s29.chan).toString(16).toUpperCase() : null;
+    var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF3C00", "00", "9000");
+    bind.checkData("S32-C1 SW", "9000", s32.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2w32 = BindGecaProc.parseGecaResponse(s32.resp, {outer: "BF3C", required: []});
+    var r2c32 = r2w32.children;
+    var r2c032 = 0;
+    for (var r2ci32 = 0; r2ci32 < r2c32.length; r2ci32++) {
+        if (r2c32[r2ci32].tag === "80" || r2c32[r2ci32].tag === "81") { r2c032++; }
+    }
+    bind.checkData("S32-C2 defaultDpAddress absent", "absent", (r2c032 <= 1 ? "absent" : "present:" + r2c32[0].value));
 }