源码对照:4.2.4.2.1
ES8+ 配置 ISD-P / TC_eUICC_ES8+.ConfigureISDP
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
195 行 / 8043 字符 / gb18030
-cas 入口
TC_eUICC_ES8_ConfigureISDP/Import/TC_eUICC_ES8_ConfigureISDP.js
253 行 / 19745 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js195 行 / 8043 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES8_ConfigureISDP_01_Nominal_Empty_Proprietary_Data + TC_eUICC_ES8_ConfigureISDP_02_Nominal_Proprietary_Data_with_the_maximum_length_authorized_128_bytes + TC_eUICC_ES8_ConfigureISDP_03_Error_Proprietary_Data_with_the_maximum_length_exceeded_129_bytes (extracted verbatim)
2
3function TC_eUICC_ES8_ConfigureISDP_01_Nominal_Empty_Proprietary_Data()
4{
5
6 tracenamestr = "测试目的:执行ConfigureISDP,Proprietary Data为空";
7 curDis.TraceStart(sno++,tracenamestr);
8
9 curDis.TestStepStart2(stno++,"复位;");
10 ResetCard();
11
12 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
13 TS_TERMINAL_CAPABILITY_cmd();
14
15 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
16 TS_MANAGE_CHANNEL_OPEN();
17
18 curLogicChannel = 1;
19
20 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
21 TS_SELECT("Select ISD",ISD_R_AID,"9000");
22
23 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
24 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
25 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
26 Profile_load_procedure.ES10b_GetEUICCInfo1();
27
28
29 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
30 Profile_load_procedure.ES10b_GetEUICCChallenge();
31
32 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
33 Profile_load_procedure.ES10b_AuthenticateServer();
34
35 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
36 Profile_load_procedure.ES10b_PrepareDownload();
37
38 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
39 Profile_load_procedure.ES10b_GetEID();
40
41 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;--空Proprietary 数据");
42 Profile_load_procedure.isEmptyProprietaryData = true;
43 Profile_load_procedure.ConfigureISDP();
44
45
46 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
47 var proInfoListRequest = new ProfileInfoListRequest();
48 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
49 proInfoListRequest.tagList = "4FB8";
50 proInfoListRequest.GenHexData();
51 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
52
53 var proInfoListResponse = new ProfileInfoListResponse();
54 proInfoListResponse.checkCardResDataFormat(respData);
55
56 try
57 {
58 curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
59 curStrHandle.CheckData("不存在", proInfoListResponse.profileInfoListOk.arrOfElement[0].dpProprietaryData, "dpProprietaryData");
60 }catch(e){
61 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
62 }
63
64 RecoverCard();
65}
66
67function TC_eUICC_ES8_ConfigureISDP_02_Nominal_Proprietary_Data_with_the_maximum_length_authorized_128_bytes()
68{
69
70 tracenamestr = "测试目的:执行ConfigureISDP,Proprietary Data为最大长度128字节";
71 curDis.TraceStart(sno++,tracenamestr);
72
73
74 curDis.TestStepStart2(stno++,"复位;");
75 ResetCard();
76
77 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
78 TS_TERMINAL_CAPABILITY_cmd();
79
80 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
81 TS_MANAGE_CHANNEL_OPEN();
82
83 curLogicChannel = 1;
84
85 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
86 TS_SELECT("Select ISD",ISD_R_AID,"9000");
87
88 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
89 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
90 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
91 Profile_load_procedure.ES10b_GetEUICCInfo1();
92
93
94 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
95 Profile_load_procedure.ES10b_GetEUICCChallenge();
96
97 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
98 Profile_load_procedure.ES10b_AuthenticateServer();
99
100 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
101 Profile_load_procedure.ES10b_PrepareDownload();
102
103 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
104 Profile_load_procedure.ES10b_GetEID();
105
106 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;--Proprietary 数据带最大长度的授权(比如128字节,其中随机数为112字节)");
107 var curadditionalSmdpData = curStrHandle.RandHexStr(112);
108 Profile_load_procedure.ConfigureISDP(curadditionalSmdpData);
109
110
111
112 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
113 var proInfoListRequest = new ProfileInfoListRequest();
114 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
115 proInfoListRequest.tagList = "4FB8";
116 proInfoListRequest.GenHexData();
117 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
118
119
120 var proInfoListResponse = new ProfileInfoListResponse();
121 proInfoListResponse.checkCardResDataFormat(respData);
122
123 try
124 {
125 curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
126 curStrHandle.CheckData(Profile_load_procedure.DPbpInforObj.registeredID, proInfoListResponse.profileInfoListOk.arrOfElement[0].dpProprietaryData.dpOid, "dpOid");
127 curStrHandle.CheckData(curadditionalSmdpData, proInfoListResponse.profileInfoListOk.arrOfElement[0].dpProprietaryData.additionalSmdpData, "additionalSmdpData");
128
129
130 }catch(e){
131 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
132 }
133
134
135 RecoverCard();
136}
137
138function TC_eUICC_ES8_ConfigureISDP_03_Error_Proprietary_Data_with_the_maximum_length_exceeded_129_bytes()
139{
140
141 tracenamestr = "测试目的:执行ConfigureISDP,Proprietary Data超出最大长度,为129字节";
142 curDis.TraceStart(sno++,tracenamestr);
143
144 curDis.TestStepStart2(stno++,"复位;");
145 ResetCard();
146
147 curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
148 TS_TERMINAL_CAPABILITY_cmd();
149
150 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
151 TS_MANAGE_CHANNEL_OPEN();
152
153 curLogicChannel = 1;
154
155 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
156 TS_SELECT("Select ISD",ISD_R_AID,"9000");
157
158 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
159 var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
160 Profile_load_procedure.ICCID = ICCID_OP_PROF1;
161 Profile_load_procedure.ES10b_GetEUICCInfo1();
162
163
164 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
165 Profile_load_procedure.ES10b_GetEUICCChallenge();
166
167 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
168 Profile_load_procedure.ES10b_AuthenticateServer();
169
170 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
171 Profile_load_procedure.ES10b_PrepareDownload();
172
173 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
174 Profile_load_procedure.ES10b_GetEID();
175
176 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;--Proprietary 数据带超过最大长度的授权(比如129字节,其中随机数为113字节)");
177
178 var Len = Profile_load_procedure.DPbpInforObj.registeredID.length/2;
179 var curadditionalSmdpData = curStrHandle.RandHexStr(123-Len);
180 Profile_load_procedure.isErrorTest=true;
181 Profile_load_procedure.errorReason="01";
182 Profile_load_procedure.ConfigureISDP(curadditionalSmdpData);
183
184
185 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
186 var proInfoListRequest = new ProfileInfoListRequest();
187 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
188 proInfoListRequest.tagList = "4FB8";
189 proInfoListRequest.GenHexData();
190 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
191 curStrHandle.CheckData("BF2D02A000",respData, "ProfileInfoListResponse");
192
193 RecoverCard();
194}
195
-cas 盲生成TC_eUICC_ES8_ConfigureISDP/Import/TC_eUICC_ES8_ConfigureISDP.js253 行 / 19745 字符 / gb18030入口函数 @L15
1// Author: 卡思Cas智能体
2// Date: 20261005-152741
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES8+.ConfigureISDP,Test Sequence #01 Nominal: Empty Proprietary Data; #02 Nominal: Proprietary Data with the maximum length authorized (i.e. 128 bytes); #03 Error: Proprietary Data with the maximum length exceeded (i.e. 129 bytes),适用性 M。
4// Test points: S4-C1 SW;S5-C1 SW;S6-C1 SW;S7-C1 SW;S7-C2 SW;S7-C2 resp present;S8-C1 SW
5// S8-C2 isdpAid present;S8-C2 dpProprietaryData absent;S12-C1 SW;S13-C1 SW;S14-C1 SW;S15-C1 SW
6// S15-C2 SW;S15-C2 resp present;S16-C1 SW;S16-C2 dpProprietaryData present;S20-C1 SW;S21-C1 SW
7// S21-C2 SW;S21-C2 resp present
8// 本函数由 CaseIR 4.2.4.2.1 编译生成(fullwave-blindgen-live-70,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 环境前置承担。
11// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
12// GIC 通信初始化+ISD-R 选择+相互认证+End User Confirmation+PrepareDownload(#PREP_DOWNLOAD_NO_CC): declared unexpanded (no fabricated bytes; provenance = expansion_source).
13// GIC-sub PROC_EUICC_INITIALIZATION_SEQUENCE(R2 闭合,K_annexC2_procs 表1256:RESET/[SELECT_MF]/[TERMINAL_CAPABILITY_LPAd]/[TERMINAL_PROFILE]): declared unexpanded (no fabricated bytes; provenance = expansion_source).
14// GIC-sub PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR(R2 闭合,K_annexC2_procs 表1258:[MANAGE_CHANNEL_OPEN]/MTD_SELECT(#ISD_R_AID)): declared unexpanded (no fabricated bytes; provenance = expansion_source).
15function TC_eUICC_ES8_ConfigureISDP_01_02_03_merged() {
16 var bind = curBind;
17
18 // 步骤 1:Seq#01 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
19 // test-tool internal preparation (no APDU face): runtime-domain
20 // values per CaseIR unresolved (G Annex B generation rules);
21 // no fabricated bytes emitted here.
22
23 // 步骤 2:Seq#01 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
24 // BPP synthesized (4.2.4.2.1 seq#1, structural layer, SCP03t-unprotected): 1052 bytes; segments: INIT=191B, A0=7B, A1=58B, A3=796B.
25 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
26 // [SPEC] TC — SGP.23 4.2.4.2.1 seq#1 接线(段选择/注入面)
27 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
28 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
29 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
30 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
31 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
32 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
33 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
34 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
35 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
36 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
37 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
38 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
39 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
40 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
41 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
42 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
43 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
44 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
45 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
46 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
47 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
48 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
49 // [SPEC] PE header/version — PITS asn:67-68 2/3
50 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
51 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
52 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
53 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
54 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
55 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
56 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
57 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
58
59 // 步骤 3:Seq#01 IC3: Split the <BPP> into several segments arrays named: <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>(tc_step)
60 // BPP segment declaration (no APDU face): <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>.
61 // Segment partitioning lives in bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651 segment table; single source of segmentation knowledge — wire sends BPP_SEG_INIT first).
62 // Segment bytes are runtime-domain (BPP synthesized at the MTD_GENERATE_BPP step); not injected into this script; load steps follow the SCRIPT data=null contract.
63 // S3-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
64
65 // 步骤 4:Seq#01 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
66 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
67 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
68 var s4 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
69 bind.checkData("S4-C1 SW", "9000", s4.sw);
70
71 // 步骤 5:Seq#01 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_165, RQ55_028, RQ24_010)
72 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
73 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
74 var s5 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
75 bind.checkData("S5-C1 SW", "9000", s5.sw);
76
77 // 步骤 6:Seq#01 2: MTD_STORE_DATA_SCRIPT(tc_step)
78 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
79 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
80 var s6 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
81 bind.checkData("S6-C1 SW", "9000", s6.sw);
82
83 // 步骤 7:Seq#01 3: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
84 // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
85 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
86 var s7 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
87 bind.checkData("S7-C1 SW", "9000", s7.sw);
88 bind.checkData("S7-C2 SW", "9000", s7.sw);
89 bind.checkData("S7-C2 resp present", "1", s7.resp.length > 0 ? "1" : "0");
90 // S7-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
91 // S7-C4: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
92
93 // 步骤 8:Seq#01 4: MTD_STORE_DATA(tc_step;REQ: RQ55_025, RQ24_010)
94 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
95 var s8 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C024FB8", "00", "9000");
96 bind.checkData("S8-C1 SW", "9000", s8.sw);
97 var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
98 var r2e8 = r2p8.elements.length > 0 ? r2p8.elements[0].fields : null;
99 bind.checkData("S8-C2 isdpAid present", "1", (r2e8 !== null && r2e8["4F"] !== undefined) ? "1" : "0");
100 bind.checkData("S8-C2 dpProprietaryData absent", "absent", (r2e8 === null || r2e8["B8"] === undefined) ? "absent" : r2e8["B8"]);
101 // S8-C3: kind 'requirement' pattern 'ISD-P created with reserved-range AID; empty prop data not stored' has no static generation face (corpus vacuum; see CaseIR unresolved).
102 // S8-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
103
104 // 步骤 9:Seq#02 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
105 // test-tool internal preparation (no APDU face): runtime-domain
106 // values per CaseIR unresolved (G Annex B generation rules);
107 // no fabricated bytes emitted here.
108
109 // 步骤 10:Seq#02 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
110 // BPP synthesized (4.2.4.2.1 seq#2, structural layer, SCP03t-unprotected): 1186 bytes; segments: INIT=191B, A0=141B, A1=58B, A3=796B.
111 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
112 // [SPEC] TC — SGP.23 4.2.4.2.1 seq#2 接线(段选择/注入面)
113 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
114 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
115 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
116 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
117 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
118 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
119 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
120 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
121 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
122 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
123 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
124 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
125 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
126 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
127 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
128 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 max_length
129 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
130 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
131 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
132 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
133 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
134 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
135 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
136 // [SPEC] PE header/version — PITS asn:67-68 2/3
137 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
138 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
139 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
140 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
141 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
142 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
143 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
144 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
145
146 // 步骤 11:Seq#02 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
147 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
148 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
149 // S11-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
150
151 // 步骤 12:Seq#02 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
152 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
153 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
154 var s12 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
155 bind.checkData("S12-C1 SW", "9000", s12.sw);
156
157 // 步骤 13:Seq#02 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_165, RQ55_028, RQ24_010)
158 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
159 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
160 var s13 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
161 bind.checkData("S13-C1 SW", "9000", s13.sw);
162
163 // 步骤 14:Seq#02 2: MTD_STORE_DATA_SCRIPT(tc_step)
164 // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
165 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
166 var s14 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
167 bind.checkData("S14-C1 SW", "9000", s14.sw);
168
169 // 步骤 15:Seq#02 3: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
170 // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
171 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
172 var s15 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
173 bind.checkData("S15-C1 SW", "9000", s15.sw);
174 bind.checkData("S15-C2 SW", "9000", s15.sw);
175 bind.checkData("S15-C2 resp present", "1", s15.resp.length > 0 ? "1" : "0");
176 // S15-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
177
178 // 步骤 16:Seq#02 4: MTD_STORE_DATA(tc_step;REQ: RQ55_027, RQ24_010)
179 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
180 var s16 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C024FB8", "00", "9000");
181 bind.checkData("S16-C1 SW", "9000", s16.sw);
182 var r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
183 var r2dp16 = false;
184 for (var r2i16 = 0; r2i16 < r2p16.elements.length; r2i16++) {
185 if (r2p16.elements[r2i16].fields["B8"] !== undefined) { r2dp16 = true; break; }
186 }
187 bind.checkData("S16-C2 dpProprietaryData present", "1", (r2p16.branch_tag === "A0" && r2dp16) ? "1" : "0");
188 // S16-C3: kind 'requirement' pattern '128-byte prop data stored & read back' has no static generation face (corpus vacuum; see CaseIR unresolved).
189 // S16-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
190
191 // 步骤 17:Seq#03 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
192 // test-tool internal preparation (no APDU face): runtime-domain
193 // values per CaseIR unresolved (G Annex B generation rules);
194 // no fabricated bytes emitted here.
195
196 // 步骤 18:Seq#03 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
197 // BPP synthesized (4.2.4.2.1 seq#3, structural layer, SCP03t-unprotected): 1187 bytes; segments: INIT=191B, A0=142B, A1=58B, A3=796B.
198 // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
199 // [SPEC] TC — SGP.23 4.2.4.2.1 seq#3 接线(段选择/注入面)
200 // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
201 // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
202 // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
203 // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
204 // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
205 // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
206 // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
207 // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
208 // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
209 // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
210 // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
211 // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
212 // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
213 // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
214 // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
215 // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 size_exceeded
216 // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
217 // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
218 // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
219 // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
220 // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
221 // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
222 // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
223 // [SPEC] PE header/version — PITS asn:67-68 2/3
224 // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
225 // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
226 // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
227 // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
228 // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
229 // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
230 // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
231 // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
232
233 // 步骤 19:Seq#03 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
234 // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
235 // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
236 // S19-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
237
238 // 步骤 20:Seq#03 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
239 // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
240 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
241 var s20 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
242 bind.checkData("S20-C1 SW", "9000", s20.sw);
243
244 // 步骤 21:Seq#03 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ55_028, RQ31_165, RQ55_026, RQ25_025, RQ25_026, RQ35_003_1)
245 // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
246 // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
247 var s21 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
248 bind.checkData("S21-C1 SW", "9000", s21.sw);
249 bind.checkData("S21-C2 SW", "9000", s21.sw);
250 bind.checkData("S21-C2 resp present", "1", s21.resp.length > 0 ? "1" : "0");
251 // S21-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
252}
253
完整 unified diff
行级差异:新增 251 行 / 删除 193 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(449 行)
--- -man
+++ -cas
@@ -1,195 +1,253 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES8_ConfigureISDP_01_Nominal_Empty_Proprietary_Data + TC_eUICC_ES8_ConfigureISDP_02_Nominal_Proprietary_Data_with_the_maximum_length_authorized_128_bytes + TC_eUICC_ES8_ConfigureISDP_03_Error_Proprietary_Data_with_the_maximum_length_exceeded_129_bytes (extracted verbatim)
-
-function TC_eUICC_ES8_ConfigureISDP_01_Nominal_Empty_Proprietary_Data()
-{
-
- tracenamestr = "测试目的:执行ConfigureISDP,Proprietary Data为空";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;--空Proprietary 数据");
- Profile_load_procedure.isEmptyProprietaryData = true;
- Profile_load_procedure.ConfigureISDP();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "4FB8";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData("不存在", proInfoListResponse.profileInfoListOk.arrOfElement[0].dpProprietaryData, "dpProprietaryData");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_ConfigureISDP_02_Nominal_Proprietary_Data_with_the_maximum_length_authorized_128_bytes()
-{
-
- tracenamestr = "测试目的:执行ConfigureISDP,Proprietary Data为最大长度128字节";
- curDis.TraceStart(sno++,tracenamestr);
-
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;--Proprietary 数据带最大长度的授权(比如128字节,其中随机数为112字节)");
- var curadditionalSmdpData = curStrHandle.RandHexStr(112);
- Profile_load_procedure.ConfigureISDP(curadditionalSmdpData);
-
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "4FB8";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_load_procedure.DPbpInforObj.registeredID, proInfoListResponse.profileInfoListOk.arrOfElement[0].dpProprietaryData.dpOid, "dpOid");
- curStrHandle.CheckData(curadditionalSmdpData, proInfoListResponse.profileInfoListOk.arrOfElement[0].dpProprietaryData.additionalSmdpData, "additionalSmdpData");
-
-
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
-
- RecoverCard();
-}
-
-function TC_eUICC_ES8_ConfigureISDP_03_Error_Proprietary_Data_with_the_maximum_length_exceeded_129_bytes()
-{
-
- tracenamestr = "测试目的:执行ConfigureISDP,Proprietary Data超出最大长度,为129字节";
- curDis.TraceStart(sno++,tracenamestr);
-
- curDis.TestStepStart2(stno++,"复位;");
- ResetCard();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
- TS_TERMINAL_CAPABILITY_cmd();
-
- 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命令,执行GetEuiccInfo1Request;");
- var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
- Profile_load_procedure.ICCID = ICCID_OP_PROF1;
- Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
- Profile_load_procedure.ES10b_GetEUICCChallenge();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
- Profile_load_procedure.ES10b_AuthenticateServer();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
- Profile_load_procedure.ES10b_PrepareDownload();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
- Profile_load_procedure.ES10b_GetEID();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;--Proprietary 数据带超过最大长度的授权(比如129字节,其中随机数为113字节)");
-
- var Len = Profile_load_procedure.DPbpInforObj.registeredID.length/2;
- var curadditionalSmdpData = curStrHandle.RandHexStr(123-Len);
- Profile_load_procedure.isErrorTest=true;
- Profile_load_procedure.errorReason="01";
- Profile_load_procedure.ConfigureISDP(curadditionalSmdpData);
-
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
- proInfoListRequest.tagList = "4FB8";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
- curStrHandle.CheckData("BF2D02A000",respData, "ProfileInfoListResponse");
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261005-152741
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES8+.ConfigureISDP,Test Sequence #01 Nominal: Empty Proprietary Data; #02 Nominal: Proprietary Data with the maximum length authorized (i.e. 128 bytes); #03 Error: Proprietary Data with the maximum length exceeded (i.e. 129 bytes),适用性 M。
+// Test points: S4-C1 SW;S5-C1 SW;S6-C1 SW;S7-C1 SW;S7-C2 SW;S7-C2 resp present;S8-C1 SW
+// S8-C2 isdpAid present;S8-C2 dpProprietaryData absent;S12-C1 SW;S13-C1 SW;S14-C1 SW;S15-C1 SW
+// S15-C2 SW;S15-C2 resp present;S16-C1 SW;S16-C2 dpProprietaryData present;S20-C1 SW;S21-C1 SW
+// S21-C2 SW;S21-C2 resp present
+// 本函数由 CaseIR 4.2.4.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 环境前置承担。
+// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
+// GIC 通信初始化+ISD-R 选择+相互认证+End User Confirmation+PrepareDownload(#PREP_DOWNLOAD_NO_CC): declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// GIC-sub PROC_EUICC_INITIALIZATION_SEQUENCE(R2 闭合,K_annexC2_procs 表1256:RESET/[SELECT_MF]/[TERMINAL_CAPABILITY_LPAd]/[TERMINAL_PROFILE]): declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// GIC-sub PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR(R2 闭合,K_annexC2_procs 表1258:[MANAGE_CHANNEL_OPEN]/MTD_SELECT(#ISD_R_AID)): declared unexpanded (no fabricated bytes; provenance = expansion_source).
+function TC_eUICC_ES8_ConfigureISDP_01_02_03_merged() {
+ var bind = curBind;
+
+ // 步骤 1:Seq#01 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 2:Seq#01 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.4.2.1 seq#1, structural layer, SCP03t-unprotected): 1052 bytes; segments: INIT=191B, A0=7B, A1=58B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.4.2.1 seq#1 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+
+ // 步骤 3:Seq#01 IC3: Split the <BPP> into several segments arrays named: <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>(tc_step)
+ // BPP segment declaration (no APDU face): <BPP_SEG_INIT>, <BPP_SEG_A0>, <BPP_SEG_A1>, <BPP_SEG_A3>.
+ // Segment partitioning lives in bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651 segment table; single source of segmentation knowledge — wire sends BPP_SEG_INIT first).
+ // Segment bytes are runtime-domain (BPP synthesized at the MTD_GENERATE_BPP step); not injected into this script; load steps follow the SCRIPT data=null contract.
+ // S3-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 4:Seq#01 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s4 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S4-C1 SW", "9000", s4.sw);
+
+ // 步骤 5:Seq#01 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_165, RQ55_028, RQ24_010)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s5 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S5-C1 SW", "9000", s5.sw);
+
+ // 步骤 6:Seq#01 2: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s6 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S6-C1 SW", "9000", s6.sw);
+
+ // 步骤 7:Seq#01 3: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
+ // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s7 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S7-C1 SW", "9000", s7.sw);
+ bind.checkData("S7-C2 SW", "9000", s7.sw);
+ bind.checkData("S7-C2 resp present", "1", s7.resp.length > 0 ? "1" : "0");
+ // S7-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+ // S7-C4: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 8:Seq#01 4: MTD_STORE_DATA(tc_step;REQ: RQ55_025, RQ24_010)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s8 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C024FB8", "00", "9000");
+ bind.checkData("S8-C1 SW", "9000", s8.sw);
+ var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2e8 = r2p8.elements.length > 0 ? r2p8.elements[0].fields : null;
+ bind.checkData("S8-C2 isdpAid present", "1", (r2e8 !== null && r2e8["4F"] !== undefined) ? "1" : "0");
+ bind.checkData("S8-C2 dpProprietaryData absent", "absent", (r2e8 === null || r2e8["B8"] === undefined) ? "absent" : r2e8["B8"]);
+ // S8-C3: kind 'requirement' pattern 'ISD-P created with reserved-range AID; empty prop data not stored' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S8-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
+
+ // 步骤 9:Seq#02 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 10:Seq#02 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.4.2.1 seq#2, structural layer, SCP03t-unprotected): 1186 bytes; segments: INIT=191B, A0=141B, A1=58B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.4.2.1 seq#2 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 max_length
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+
+ // 步骤 11:Seq#02 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S11-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 12:Seq#02 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s12 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S12-C1 SW", "9000", s12.sw);
+
+ // 步骤 13:Seq#02 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_165, RQ55_028, RQ24_010)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s13 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S13-C1 SW", "9000", s13.sw);
+
+ // 步骤 14:Seq#02 2: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_A1> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s14 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S14-C1 SW", "9000", s14.sw);
+
+ // 步骤 15:Seq#02 3: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ25_023, RQ25_024)
+ // BPP segment load (data=null contract): <BPP_SEG_A3> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s15 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s15.sw);
+ bind.checkData("S15-C2 SW", "9000", s15.sw);
+ bind.checkData("S15-C2 resp present", "1", s15.resp.length > 0 ? "1" : "0");
+ // S15-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
+
+ // 步骤 16:Seq#02 4: MTD_STORE_DATA(tc_step;REQ: RQ55_027, RQ24_010)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s16 = bind.sendApdu(null, "E2", "91", "00", "BF2D12A00C5A0A989209012143658709F55C024FB8", "00", "9000");
+ bind.checkData("S16-C1 SW", "9000", s16.sw);
+ var r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2dp16 = false;
+ for (var r2i16 = 0; r2i16 < r2p16.elements.length; r2i16++) {
+ if (r2p16.elements[r2i16].fields["B8"] !== undefined) { r2dp16 = true; break; }
+ }
+ bind.checkData("S16-C2 dpProprietaryData present", "1", (r2p16.branch_tag === "A0" && r2dp16) ? "1" : "0");
+ // S16-C3: kind 'requirement' pattern '128-byte prop data stored & read back' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S16-C3: binding:bf2d_query_structure_satisfies_requirement(S22-prof_info) (check_attestation)
+
+ // 步骤 17:Seq#03 IC1: Generate the <OTPK_S_SM_DP+_ECKA> and <OT_SK_S_SM_DP+_ECKA>(tc_step;non_wire)
+ // test-tool internal preparation (no APDU face): runtime-domain
+ // values per CaseIR unresolved (G Annex B generation rules);
+ // no fabricated bytes emitted here.
+
+ // 步骤 18:Seq#03 IC2: <BPP> = MTD_GENERATE_BPP(tc_step)
+ // BPP synthesized (4.2.4.2.1 seq#3, structural layer, SCP03t-unprotected): 1187 bytes; segments: INIT=191B, A0=142B, A1=58B, A3=796B.
+ // Segment bytes are runtime-domain (BPP load step data=null per CaseIR unresolved); not injected into this script. Provenance:
+ // [SPEC] TC — SGP.23 4.2.4.2.1 seq#3 接线(段选择/注入面)
+ // [SPEC] BF36 — SGP.22 §2.5.4 :1566 BoundProfilePackage [54]
+ // [SPEC] BF36/A0 — Table 4 :1588 firstSequenceOf87
+ // [SPEC] BF36/A1 — Table 4 :1590 sequenceOf88
+ // [SPEC] BF36/A3 — Table 4 :1595 sequenceOf86
+ // [HYPOTHESIS] 87/88/86 段值 — UNPROTECTED:明文承载,SCP03t 包壳属后续 lane
+ // [SPEC] BF23 — SGP.22 §5.5.1 :7241 InitialiseSecureChannelRequest [35]
+ // [SPEC] BF23/82 remoteOpId — SGP.22 :1400 RemoteOpId [2] INTEGER
+ // [HYPOTHESIS] BF23/80 transactionId — SM-DP+ 会话值,Annex E 缺席,调用方注入
+ // [SPEC] BF23/A6 controlRefTemplate — SGP.22 :7255-7263 CRT 子集
+ // [SPEC] BF23/A6/80 keyType — SGP.22 :7257 AES='88'
+ // [SPEC] BF23/A6/81 keyLen — SGP.22 :7259 SHALL be 0x10
+ // [HYPOTHESIS] BF23/A6/84 hostId — Host ID 值,Annex E 缺席
+ // [HYPOTHESIS] BF23/5F49 smdpOtpk — otPK.DP.ECKA,需真实密钥协商 lane
+ // [HYPOTHESIS] BF23/5F37 smdpSign — SK.DPbp.ECDSA 签名,需签名 lane
+ // [SPEC] BF24 — SGP.22 §5.5.2 :7319 ConfigureISDPRequest [36]
+ // [HYPOTHESIS] BF24/B8 dpProprietaryData — dpOid 与填充为 SM-DP+ 自有树自定值(Annex E 缺席);变体 size_exceeded
+ // [SPEC] BF25 — SGP.22 §5.5.3 :7365 StoreMetadataRequest [37]
+ // [SPEC] BF25/5A iccid — SGP.22 :1398 Iccid [APPLICATION 26] tag '5A';值域 HYPOTHESIS(Annex E 缺席,需与 UPP EF-ICCID 一致)
+ // [HYPOTHESIS] BF25/91 serviceProviderName — Annex E 缺席
+ // [HYPOTHESIS] BF25/92 profileName — Annex E 缺席
+ // [SPEC] BF25/95 profileClass — SGP.22 :13218 ProfileClass INTEGER;取 operational(2)
+ // [SPEC] UPP — PITS ProfileElement 序列 header+mf+usim+end(最小集)
+ // [SPEC] PE header — PITS asn:26 ProfileElement header CHOICE [0]
+ // [SPEC] PE header/version — PITS asn:67-68 2/3
+ // [SPEC] PE header/profileType — PITS asn:942 Test Profile 值
+ // [HYPOTHESIS] PE header/iccid — eUICC 忽略此值(SGP.22 :7511);随参数化 ICCID
+ // [SPEC] PE header/services+GFSTE — PITS asn:946-958 子集转录
+ // [SPEC] PE mf — PITS asn:222 PE-MF + mfVal :961-1039
+ // [HYPOTHESIS] PE mf/ef-iccid — ICCID 参数化(EF 编码形态);其余模板值 SPEC
+ // [SPEC] PE usim — PITS asn:284 PE-USIM + usimValue :1166-1218
+ // [HYPOTHESIS] PE usim/ef-imsi — IMSI 参数化(mccMnc+MSIN);TBCD 编码面 3GPP 24.008 SPEC
+ // [SPEC] PE end — PITS asn:906 PE-End + endVal :2106 id=99
+
+ // 步骤 19:Seq#03 IC3: Execute the step IC3 of the Test Sequence #01(切分为 <BPP_SEG_INIT>/<BPP_SEG_A0>/<BPP_SEG_A1>/<BPP_SEG_A3>)(tc_step)
+ // cross-sequence IC execution reference (R2 materialized form): referenced IC declaration emitted in its source sequence; no re-expansion, no fabricated bytes here.
+ // BPP segment partitioning follows bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 segment table; single source of segmentation knowledge).
+ // S19-C1: binding:bpp_split_per_annexB_segment_table(segment_bpp;SGP.22-2.5.5) (check_attestation)
+
+ // 步骤 20:Seq#03 IC4: MTD_STORE_DATA_SCRIPT(tc_step)
+ // BPP segment load (data=null contract): <BPP_SEG_INIT> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s20 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S20-C1 SW", "9000", s20.sw);
+
+ // 步骤 21:Seq#03 1: MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ55_028, RQ31_165, RQ55_026, RQ25_025, RQ25_026, RQ35_003_1)
+ // BPP segment load (data=null contract): <BPP_SEG_A0> bytes are runtime-domain (BPP synthesized at MTD_GENERATE_BPP;
+ // segmentation single source = bpp_synthesizer.segment_bpp (SGP.22 §2.5.5 :1633-1651) — no bytes fabricated here.
+ var s21 = bind.sendApdu(null, "E2", "00", "00", null, "00", "9000");
+ bind.checkData("S21-C1 SW", "9000", s21.sw);
+ bind.checkData("S21-C2 SW", "9000", s21.sw);
+ bind.checkData("S21-C2 resp present", "1", s21.resp.length > 0 ? "1" : "0");
+ // S21-C3: binding:bpp_seg_load_pir_runtime_semantics(S22-2.5.6;PIR-runtime-domain) (check_attestation)
}