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