eSIM RSP 测试用例对比站

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

源码对照:4.2.8.2.1

ES10a 获取 eUICC 已配置地址 / TC_eUICC_ES10a.GetEuiccConfiguredAddresses

左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
112 行 / 4984 字符 / gb18030
-cas 入口
TC_eUICC_ES10a_GetEuiccConfiguredAddresses/Import/TC_eUICC_ES10a_GetEuiccConfiguredAddresses.js
61 行 / 4330 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js112 行 / 4984 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10a_GetEuiccConfiguredAddresses_01_Nominal_Only_Root_SM_DS_Address + TC_eUICC_ES10a_GetEuiccConfiguredAddresses_02_Nominal_Root_SM_DS_and_Default_SM_DP_Addresses (extracted verbatim)
2
3function TC_eUICC_ES10a_GetEuiccConfiguredAddresses_01_Nominal_Only_Root_SM_DS_Address()
4{
5	
6	tracenamestr = "测试目的:仅获取Root SM-DS地址";
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命令,执行EuiccMemoryResetRequest,Reset default SM-DP+ address;");
21	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
22	euiMemoryResetRequest.resetOptions = "0520";
23	euiMemoryResetRequest.GenHexData();
24	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
25	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
26	
27	
28	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
29	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
30	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
31	
32
33	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
34	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
35	try
36	{
37		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
38			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
39		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
40		
41		
42	}catch(e){
43		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
44	}
45	RecoverCard();
46}
47
48function TC_eUICC_ES10a_GetEuiccConfiguredAddresses_02_Nominal_Root_SM_DS_and_Default_SM_DP_Addresses()
49{
50	
51	tracenamestr = "测试目的:获取Root SM-DS和默认SM-DP+地址";
52	curDis.TraceStart(sno++,tracenamestr);
53
54	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
55	Ini_powerOn_eUICC_LPAe_not_activate();
56	
57	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
58	TS_MANAGE_CHANNEL_OPEN();
59	
60	curLogicChannel = 1;
61	
62	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
63	TS_SELECT("Select ISD",ISD_R_AID,"9000");
64	
65	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,设置DefaultDpAddressRequest为TEST_DP_ADDRESS1;");
66	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
67	setDefaultDpAddressRequest.defaultDpAddress = TEST_DP_ADDRESS1;
68	setDefaultDpAddressRequest.GenHexData();
69	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
70	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
71	
72	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
73	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
74	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
75	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
76	
77	try
78	{
79		curStrHandle.CheckData(setDefaultDpAddressRequest.defaultDpAddress, euiccConfiguredAddressesResponse.defaultDpAddress,"default Dp Address");
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	
87	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行SetDefaultDpAddressRequest,defaultDpAddress为空,清空卡内的default SM-DP+ address;");
88	var setDefaultDpAddressRequest = new SetDefaultDpAddressRequest();
89	setDefaultDpAddressRequest.defaultDpAddress = "";
90	setDefaultDpAddressRequest.GenHexData();
91	var respData = LPAd_Transport_data_to_eUICC(setDefaultDpAddressRequest.hexData);
92	curStrHandle.CheckData("BF3F03800100", respData,"SetDefaultDpAddress Response");
93	
94	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
95	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
96	var euiccConfiguredAddressesResponse = new  EuiccConfiguredAddressesResponse();
97	euiccConfiguredAddressesResponse.checkCardResDataFormat(respData);
98	
99	try
100	{
101		if (typeof(euiccConfiguredAddressesResponse.defaultDpAddress) != "undefined")
102			obj.SubLevelError("卡片应当没有defaultDpAddress返回,");
103		curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, euiccConfiguredAddressesResponse.rootDsAddress,"root Ds Address");
104		
105		
106	}catch(e){
107		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
108	}
109	
110	RecoverCard();
111}
112
-cas 盲生成TC_eUICC_ES10a_GetEuiccConfiguredAddresses/Import/TC_eUICC_ES10a_GetEuiccConfiguredAddresses.js61 行 / 4330 字符 / gb18030入口函数 @L11
1// Author: 卡思Cas智能体
2// Date: 20260909-232158
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10a.GetEuiccConfiguredAddresses,Test Sequence #01 Nominal:,适用性 M。
4// Test points: S1-C1 ATR_present;S2-C2 outer tag 62;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 outer tag BF3C
6//   S7-C3 response prefix BF3C1A811874657374726F6F74736D64732E6578616D706C652E636F6D
7//   S7-C4 response prefix BF3C1A;S7-C5 request data
8// 本函数由 CaseIR 4.2.8.2.1 编译生成(blindgen-42821-20260909_223223,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
9// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
10// 适用性 M:编译期门,运行时由 harness 环境前置承担。
11function TC_eUICC_ES10a_GetEuiccConfiguredAddresses_01_Nominal() {
12    var bind = curBind;
13    // IC1 (seq#01) PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
14    // IC2 (seq#01) PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
15    // IC1 (seq#02) PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
16    // IC2 (seq#02) PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
17
18    // 步骤 1:RESET(procedure_expansion)
19    var s1 = bind.resetAndAtr();
20    bind.checkData("S1-C1 ATR_present", "1", s1.atr_hex !== "" ? "1" : "0");
21
22    // 步骤 2:SELECT_MF(procedure_expansion)
23    var s2 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
24    bind.checkData("S2-C2 outer tag 62", "62", s2.resp.substring(0, 2));
25    bind.checkData("S2-C1 SW", "9000", s2.sw);
26
27    // 步骤 3:TERMINAL_CAPABILITY_LPAd(procedure_expansion)
28    var s3 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", "00", "9000");
29    bind.checkData("S3-C1 SW", "9000", s3.sw);
30
31    // 步骤 4:TERMINAL_PROFILE(procedure_expansion)
32    var steady4 = bind.runToSteadyState(function () {
33        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
34    });
35    bind.checkData("S4-C1 final SW", "9000", steady4.final.sw);
36    // S4-C2: pattern clause 'TPidentifiesproactive_terminal_support' has no static generation face (unmapped).
37    // S4-C2: binding:tp_verbatim_emission_enables_proactive_session(TS102223-6.2;R2-job-c6c8b75) (check_attestation)
38
39    // 步骤 5:MANAGE_CHANNEL_OPEN(procedure_expansion)
40    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
41    var s5 = bind.manageChannelOpen("9000");
42    bind.checkData("S5-C1 SW", "9000", s5.sw);
43    bind.checkData("S5-C2 CHANNEL_NUMBER extracted", "1", s5.chan !== null ? "1" : "0");
44
45    // 步骤 6:MTD_SELECT(procedure_expansion)
46    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
47    var s6 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", "00", "9000");
48    // 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.
49    bind.checkData("S6-C1 SW", "9000", s6.sw);
50
51    // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ57_017, RQ57_018, RQ57_019, RQ33_021_1)
52    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
53    var sdCla7 = s5.chan !== null ? (s5.chan <= 3 ? 128 + s5.chan : 188 + s5.chan).toString(16).toUpperCase() : null;
54    var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF3C00", "00", "9000");
55    bind.checkData("S7-C1 SW", "9000", s7.sw);
56    bind.checkData("S7-C2 outer tag BF3C", "BF3C", s7.resp.substring(0, 4));
57    bind.checkData("S7-C3 response prefix BF3C1A811874657374726F6F74736D64732E6578616D706C652E636F6D", "BF3C1A811874657374726F6F74736D64732E6578616D706C652E636F6D", s7.resp.substring(0, 58));
58    bind.checkData("S7-C4 response prefix BF3C1A", "BF3C1A", s7.resp.substring(0, 6));
59    bind.checkData("S7-C5 request data", "BF3C00", s7.cmd.substring(10, 16));
60}
61

完整 unified diff

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

展开 diff(169 行)
--- -man
+++ -cas
@@ -1,112 +1,61 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10a_GetEuiccConfiguredAddresses_01_Nominal_Only_Root_SM_DS_Address + TC_eUICC_ES10a_GetEuiccConfiguredAddresses_02_Nominal_Root_SM_DS_and_Default_SM_DP_Addresses (extracted verbatim)
+// Author: 卡思Cas智能体
+// Date: 20260909-232158
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10a.GetEuiccConfiguredAddresses,Test Sequence #01 Nominal:,适用性 M。
+// Test points: S1-C1 ATR_present;S2-C2 outer tag 62;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 outer tag BF3C
+//   S7-C3 response prefix BF3C1A811874657374726F6F74736D64732E6578616D706C652E636F6D
+//   S7-C4 response prefix BF3C1A;S7-C5 request data
+// 本函数由 CaseIR 4.2.8.2.1 编译生成(blindgen-42821-20260909_223223,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_GetEuiccConfiguredAddresses_01_Nominal() {
+    var bind = curBind;
+    // IC1 (seq#01) PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // IC2 (seq#01) PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // IC1 (seq#02) PROC_EUICC_INITIALIZATION_SEQUENCE: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // IC2 (seq#02) PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
 
-function TC_eUICC_ES10a_GetEuiccConfiguredAddresses_01_Nominal_Only_Root_SM_DS_Address()
-{
-	
-	tracenamestr = "测试目的:仅获取Root SM-DS地址";
-	curDis.TraceStart(sno++,tracenamestr);
+    // 步骤 1:RESET(procedure_expansion)
+    var s1 = bind.resetAndAtr();
+    bind.checkData("S1-C1 ATR_present", "1", s1.atr_hex !== "" ? "1" : "0");
 
-	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命令,执行EuiccMemoryResetRequest,Reset default SM-DP+ address;");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "0520";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
-	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
-	
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccConfiguredAddressesRequest,获取卡片的defaultDpAddress和rootDsAddress;");
-	var respData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	
+    // 步骤 2:SELECT_MF(procedure_expansion)
+    var s2 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("S2-C2 outer tag 62", "62", s2.resp.substring(0, 2));
+    bind.checkData("S2-C1 SW", "9000", s2.sw);
 
-	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();
-}
+    // 步骤 3:TERMINAL_CAPABILITY_LPAd(procedure_expansion)
+    var s3 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", "00", "9000");
+    bind.checkData("S3-C1 SW", "9000", s3.sw);
 
-function TC_eUICC_ES10a_GetEuiccConfiguredAddresses_02_Nominal_Root_SM_DS_and_Default_SM_DP_Addresses()
-{
-	
-	tracenamestr = "测试目的:获取Root SM-DS和默认SM-DP+地址";
-	curDis.TraceStart(sno++,tracenamestr);
+    // 步骤 4:TERMINAL_PROFILE(procedure_expansion)
+    var steady4 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("S4-C1 final SW", "9000", steady4.final.sw);
+    // S4-C2: pattern clause 'TPidentifiesproactive_terminal_support' has no static generation face (unmapped).
+    // S4-C2: binding:tp_verbatim_emission_enables_proactive_session(TS102223-6.2;R2-job-c6c8b75) (check_attestation)
 
-	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,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();
+    // 步骤 5:MANAGE_CHANNEL_OPEN(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: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:MTD_STORE_DATA(tc_step;REQ: RQ57_017, RQ57_018, RQ57_019, RQ33_021_1)
+    // <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", "BF3C00", "00", "9000");
+    bind.checkData("S7-C1 SW", "9000", s7.sw);
+    bind.checkData("S7-C2 outer tag BF3C", "BF3C", s7.resp.substring(0, 4));
+    bind.checkData("S7-C3 response prefix BF3C1A811874657374726F6F74736D64732E6578616D706C652E636F6D", "BF3C1A811874657374726F6F74736D64732E6578616D706C652E636F6D", s7.resp.substring(0, 58));
+    bind.checkData("S7-C4 response prefix BF3C1A", "BF3C1A", s7.resp.substring(0, 6));
+    bind.checkData("S7-C5 request data", "BF3C00", s7.cmd.substring(10, 16));
 }