源码对照:4.2.21.2.2
ES10c 启用 Profile 异常用例(Case 3) / TC_eUICC_ES10c.EnableProfile_ErrorCases_Case3
左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
59 行 / 2411 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3/Import/TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3.js
340 行 / 27858 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js59 行 / 2411 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3_01_Error_Enable_Profile_by_an_unknown_ISD_P_AID (extracted verbatim)
2
3function TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3_01_Error_Enable_Profile_by_an_unknown_ISD_P_AID()
4{
5 if(!Card_Have_ECC_Cert)
6 return;
7
8 TestOfMEPMode = 0;
9
10 initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
11 var ISD_P_Test01 = curProfile_ISD_P_AID;
12
13 tracenamestr = "测试目的:通过未知的ISD-P AID激活profile";
14 curDis.TraceStart(sno++,tracenamestr);
15
16 curLogicChannel = 0;
17 curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
18 Ini_powerOn_eUICC_LPAe_not_activate();
19
20 curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
21 TS_MANAGE_CHANNEL_OPEN();
22
23 curLogicChannel = 1;
24
25 curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
26 TS_SELECT("Select ISD",ISD_R_AID,"9000");
27
28 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF(true);");
29 var enableProRequest = new EnableProfileRequest();
30 enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_AIDX);
31 enableProRequest.refreshFlag = BooleanValue_BerCode_True;
32 enableProRequest.GenHexData();
33 var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"90","00","6A82");
34 curStrHandle.CheckData("", respData, "EnableProfileResponse");
35
36 curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
37 var proInfoListRequest = new ProfileInfoListRequest();
38 proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
39 proInfoListRequest.tagList = "5A4F9F70";
40 proInfoListRequest.GenHexData();
41 var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
42
43
44 var proInfoListResponse = new ProfileInfoListResponse();
45 proInfoListResponse.checkCardResDataFormat(respData);
46
47 try
48 {
49 curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
50 curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
51 curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
52 }catch(e){
53 obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
54 }
55
56 RecoverCard();
57
58}
59
-cas 盲生成TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3/Import/TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3.js340 行 / 27858 字符 / gb18030入口函数 @L32
1// Author: 卡思Cas智能体
2// Date: 20261005-152741
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.EnableProfile_ErrorCases_Case3,Test Sequence #01 unknown ISD-P AID; #02 unknown ICCID; #03 enable when Enabled (ISD-P AID); #04 enable when Enabled (ICCID); #05 PPR1 loaded (ISD-P AID); #06 PPR1 loaded (ICCID); #07 catBusy refreshFlag not set; #08 catBusy refreshFlag set,适用性 M。
4// Test points: S1-C1 SW;S2-C1 SW;S2-C2 contains PROFILE_INFO1_DISABLED
5// S2-C3 contains iccid 989209012143658709F5;S3-C1 SW;S4-C1 SW
6// S4-C2 contains PROFILE_INFO1_DISABLED;S4-C3 contains iccid 989209012143658709F5;S5-C1 SW
7// S6-C1 SW;S6-C2 contains PROFILE_INFO1;S6-C3 contains iccid 989209012143658709F5;S7-C1 SW
8// S8-C1 SW;S8-C2 contains PROFILE_INFO1;S8-C3 contains iccid 989209012143658709F5;S9-C1 SW
9// S10-C1 SW;S10-C2 contains PROFILE_INFO1_DISABLED;S10-C2 contains PROFILE_INFO4_ENABLED
10// S10-C3 contains entries1 iccid 989209012143658709F5
11// S10-C3 contains entries2 iccid 989209015476981032F9;S11-C1 SW;S12-C1 SW
12// S12-C2 contains PROFILE_INFO1_DISABLED;S12-C2 contains PROFILE_INFO4_ENABLED
13// S12-C3 contains entries1 iccid 989209012143658709F5
14// S12-C3 contains entries2 iccid 989209015476981032F9;S13-C1 SW;S14-C1 proactive command envelope
15// S15-C1 SW;S16-C1 SW;S16-C2 contains PROFILE_INFO1;S16-C2 contains PROFILE_INFO2
16// S16-C3 contains entries1 iccid 989209012143658709F5
17// S16-C3 contains entries2 iccid 989209013254769810F9;S17-C1 SW;S18-C1 proactive command envelope
18// S19-C1 SW;S20-C1 SW;S20-C2 contains PROFILE_INFO1;S20-C2 contains PROFILE_INFO2
19// S20-C3 contains entries1 iccid 989209012143658709F5
20// S20-C3 contains entries2 iccid 989209013254769810F9
21// 本函数由 CaseIR 4.2.21.2.2 编译生成(fullwave-blindgen-live-70-W1-A3,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
22// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
23// 适用性 M:编译期门,运行时由 harness 环境前置承担。
24// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
25// GIC1 The PROFILE_OPERATIONAL1 has been installed on the eUICC.(Seq#5/#6 以各自 IC 'No Profile is installed' 覆盖本条): declared unexpanded (no fabricated bytes; provenance = expansion_source).
26// Seq01-IC PROFILE_OPERATIONAL1 is Disabled; PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>; the Operational Profile identified by <ISD_P_AIDX> is not loaded. IC1=PROC_EUICC_INITIALIZATION_SEQUENCE; IC2=PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR.: declared unexpanded (no fabricated bytes; provenance = expansion_source).
27// Seq02-IC PROFILE_OPERATIONAL1 is Disabled; the Operational Profile identified by ICCID #ICCID_OP_PROFX is not loaded. IC1/IC2 同上。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
28// Seq03/04-IC PROFILE_OPERATIONAL1 is Enabled on the eUICC(Seq03 另记 PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>)。IC1/IC2 同上。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
29// Seq05/06-IC No Profile is installed on the eUICC(覆盖 GIC);IC3 Install PROFILE_OPERATIONAL4(对应 <ISD_P_AID4>,Seq05 注记);IC4 Install PROFILE_OPERATIONAL1(对应 <ISD_P_AID1>);IC5 Enable PROFILE_OPERATIONAL4。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
30// Seq07/08-IC PROFILE_OPERATIONAL1 Enabled; PROFILE_OPERATIONAL2 installed and Disabled(Seq07 另记 PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>);IC3: S_Device → eUICC MTD_SEND_SMS_PP([GET_MNO_SD]) → SW=0x91XX(开启 proactive session);IC4: Do not send FETCH command(会话保持挂起)。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
31// PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (no fabricated bytes; provenance = expansion_source).
32function TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3_01_02_03_04_05_06_07_08_merged() {
33 var bind = curBind;
34 var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3_01_02_03_04_05_06_07_08_merged");
35 // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "46a4c53f1e252492", "authority_reference": "E_tc_4221/288-288/G_annexB_dynamic:L51"}
36 var cardCtxLoad1 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID1", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
37 // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "46a4c53f1e252492", "authority_reference": "E_tc_4221/412-412/G_annexB_dynamic:L52"}
38 var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID2", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
39 // runtime-bound payload: ISD_P_AIDX stays in execution domain; context_lineage: {"context_id": "46a4c53f1e252492", "authority_reference": "E_tc_4221/289-289/G_annexB_dynamic:L55"}
40 var cardCtxLoad3 = BindCardContext.load(bind, profileAidSession, "ISD_P_AIDX", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
41
42 // 步骤 1:MTD_STORE_DATA(tc_step)
43 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
44 var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
45
46 // 步骤 2:Seq#01 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_139)
47 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
48 // runtime-bound payload: ISD_P_AIDX stays in execution domain
49 var s2 = bind.sendApdu(null, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AIDX", "BF31154F10", "0101FF", profileAidSession), null, "6A82");
50 bind.checkData("S1-C1 SW", "6A82", s2.sw);
51 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AIDX", s2.cmd, profileAidSession);
52 // S1-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
53 // S1-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
54
55 // 步骤 3:Seq#01 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_139)
56 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
57 // runtime-bound payload: ISD_P_AID1 stays in execution domain
58 var s3 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
59 bind.checkData("S2-C1 SW", "9000", s3.sw);
60 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s3.cmd, profileAidSession);
61 var r2p3 = BindEs10xProcProfile.walkChoiceList(s3.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
62 var r2has3_0 = false;
63 for (var r2i3_0 = 0; r2i3_0 < r2p3.elements.length; r2i3_0++) {
64 var f = r2p3.elements[r2i3_0].fields;
65 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has3_0 = true; break; }
66 }
67 bind.checkData("S2-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p3.branch_tag === "A0" && r2has3_0) ? "1" : "0");
68 var r2has3_0 = false;
69 for (var r2i3_0 = 0; r2i3_0 < r2p3.elements.length; r2i3_0++) {
70 var f = r2p3.elements[r2i3_0].fields;
71 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has3_0 = true; break; }
72 }
73 bind.checkData("S2-C3 contains iccid 989209012143658709F5", "1", (r2p3.branch_tag === "A0" && r2has3_0) ? "1" : "0");
74
75 // 步骤 4:Seq#02 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_139)
76 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
77 var s4 = bind.sendApdu(null, "E2", "90", "00", "BF310F5A0A9892090143658709FFFF0101FF", null, "6A82");
78 bind.checkData("S3-C1 SW", "6A82", s4.sw);
79 // S3-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
80 // S3-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
81
82 // 步骤 5:Seq#02 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_139)
83 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
84 var s5 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
85 bind.checkData("S4-C1 SW", "9000", s5.sw);
86 var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
87 var r2has5_0 = false;
88 for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
89 var f = r2p5.elements[r2i5_0].fields;
90 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has5_0 = true; break; }
91 }
92 bind.checkData("S4-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
93 var r2has5_0 = false;
94 for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
95 var f = r2p5.elements[r2i5_0].fields;
96 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has5_0 = true; break; }
97 }
98 bind.checkData("S4-C3 contains iccid 989209012143658709F5", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
99
100 // 步骤 6:Seq#03 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
101 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
102 // runtime-bound payload: ISD_P_AID1 stays in execution domain
103 var s6 = bind.sendApdu(null, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), null, "6985");
104 bind.checkData("S5-C1 SW", "6985", s6.sw);
105 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s6.cmd, profileAidSession);
106 // S5-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
107 // S5-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
108
109 // 步骤 7:Seq#03 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
110 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
111 // runtime-bound payload: ISD_P_AID1 stays in execution domain
112 var s7 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
113 bind.checkData("S6-C1 SW", "9000", s7.sw);
114 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s7.cmd, profileAidSession);
115 var r2p7 = BindEs10xProcProfile.walkChoiceList(s7.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
116 var r2has7_0 = false;
117 for (var r2i7_0 = 0; r2i7_0 < r2p7.elements.length; r2i7_0++) {
118 var f = r2p7.elements[r2i7_0].fields;
119 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has7_0 = true; break; }
120 }
121 bind.checkData("S6-C2 contains PROFILE_INFO1", "1", (r2p7.branch_tag === "A0" && r2has7_0) ? "1" : "0");
122 var r2has7_0 = false;
123 for (var r2i7_0 = 0; r2i7_0 < r2p7.elements.length; r2i7_0++) {
124 var f = r2p7.elements[r2i7_0].fields;
125 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has7_0 = true; break; }
126 }
127 bind.checkData("S6-C3 contains iccid 989209012143658709F5", "1", (r2p7.branch_tag === "A0" && r2has7_0) ? "1" : "0");
128
129 // 步骤 8:Seq#04 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
130 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
131 var s8 = bind.sendApdu(null, "E2", "90", "00", "BF310F5A0A989209012143658709F50101FF", null, "6985");
132 bind.checkData("S7-C1 SW", "6985", s8.sw);
133 // S7-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
134 // S7-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
135
136 // 步骤 9:Seq#04 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
137 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
138 var s9 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
139 bind.checkData("S8-C1 SW", "9000", s9.sw);
140 var r2p9 = BindEs10xProcProfile.walkChoiceList(s9.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
141 var r2has9_0 = false;
142 for (var r2i9_0 = 0; r2i9_0 < r2p9.elements.length; r2i9_0++) {
143 var f = r2p9.elements[r2i9_0].fields;
144 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has9_0 = true; break; }
145 }
146 bind.checkData("S8-C2 contains PROFILE_INFO1", "1", (r2p9.branch_tag === "A0" && r2has9_0) ? "1" : "0");
147 var r2has9_0 = false;
148 for (var r2i9_0 = 0; r2i9_0 < r2p9.elements.length; r2i9_0++) {
149 var f = r2p9.elements[r2i9_0].fields;
150 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has9_0 = true; break; }
151 }
152 bind.checkData("S8-C3 contains iccid 989209012143658709F5", "1", (r2p9.branch_tag === "A0" && r2has9_0) ? "1" : "0");
153
154 // 步骤 10:Seq#05 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ29_002, RQ29_022, RQ32_011, RQ32_012, RQ32_014, RQ32_016_1, RQ57_127, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
155 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
156 // runtime-bound payload: ISD_P_AID1 stays in execution domain
157 var s10 = bind.sendApdu(null, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), null, "6985");
158 bind.checkData("S9-C1 SW", "6985", s10.sw);
159 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s10.cmd, profileAidSession);
160 // S9-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
161 // S9-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
162 // S9-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
163 // S9-C3: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
164
165 // 步骤 11:Seq#05 Step2] MTD_STORE_DATA(tc_step;REQ: RQ29_002, RQ32_011, RQ32_012, RQ32_014, RQ32_016_1, RQ57_127, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
166 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
167 var s11 = bind.sendApdu(null, "E2", "91", "00", "BF2D00", "00", "9000");
168 bind.checkData("S10-C1 SW", "9000", s11.sw);
169 var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
170 var r2has11_0 = false;
171 for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
172 var f = r2p11.elements[r2i11_0].fields;
173 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has11_0 = true; break; }
174 }
175 bind.checkData("S10-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
176 var r2has11_1 = false;
177 for (var r2i11_1 = 0; r2i11_1 < r2p11.elements.length; r2i11_1++) {
178 var f = r2p11.elements[r2i11_1].fields;
179 if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has11_1 = true; break; }
180 }
181 bind.checkData("S10-C2 contains PROFILE_INFO4_ENABLED", "1", (r2p11.branch_tag === "A0" && r2has11_1) ? "1" : "0");
182 var r2has11_0 = false;
183 for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
184 var f = r2p11.elements[r2i11_0].fields;
185 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has11_0 = true; break; }
186 }
187 bind.checkData("S10-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
188 var r2has11_1 = false;
189 for (var r2i11_1 = 0; r2i11_1 < r2p11.elements.length; r2i11_1++) {
190 var f = r2p11.elements[r2i11_1].fields;
191 if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has11_1 = true; break; }
192 }
193 bind.checkData("S10-C3 contains entries2 iccid 989209015476981032F9", "1", (r2p11.branch_tag === "A0" && r2has11_1) ? "1" : "0");
194
195 // 步骤 12:Seq#06 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ29_002, RQ29_022, RQ32_011, RQ32_012, RQ32_014, RQ32_016_1, RQ57_127, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
196 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
197 var s12 = bind.sendApdu(null, "E2", "90", "00", "BF310F5A0A989209012143658709F50101FF", null, "6985");
198 bind.checkData("S11-C1 SW", "6985", s12.sw);
199 // S11-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
200 // S11-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
201
202 // 步骤 13:Seq#06 Step2] MTD_STORE_DATA(tc_step;REQ: RQ29_002, RQ32_011, RQ32_012, RQ32_014, RQ32_016_1, RQ57_127, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
203 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
204 var s13 = bind.sendApdu(null, "E2", "91", "00", "BF2D00", "00", "9000");
205 bind.checkData("S12-C1 SW", "9000", s13.sw);
206 var r2p13 = BindEs10xProcProfile.walkChoiceList(s13.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
207 var r2has13_0 = false;
208 for (var r2i13_0 = 0; r2i13_0 < r2p13.elements.length; r2i13_0++) {
209 var f = r2p13.elements[r2i13_0].fields;
210 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has13_0 = true; break; }
211 }
212 bind.checkData("S12-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
213 var r2has13_1 = false;
214 for (var r2i13_1 = 0; r2i13_1 < r2p13.elements.length; r2i13_1++) {
215 var f = r2p13.elements[r2i13_1].fields;
216 if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has13_1 = true; break; }
217 }
218 bind.checkData("S12-C2 contains PROFILE_INFO4_ENABLED", "1", (r2p13.branch_tag === "A0" && r2has13_1) ? "1" : "0");
219 var r2has13_0 = false;
220 for (var r2i13_0 = 0; r2i13_0 < r2p13.elements.length; r2i13_0++) {
221 var f = r2p13.elements[r2i13_0].fields;
222 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has13_0 = true; break; }
223 }
224 bind.checkData("S12-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
225 var r2has13_1 = false;
226 for (var r2i13_1 = 0; r2i13_1 < r2p13.elements.length; r2i13_1++) {
227 var f = r2p13.elements[r2i13_1].fields;
228 if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has13_1 = true; break; }
229 }
230 bind.checkData("S12-C3 contains entries2 iccid 989209015476981032F9", "1", (r2p13.branch_tag === "A0" && r2has13_1) ? "1" : "0");
231
232 // 步骤 14:Seq#07 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ57_127_1, RQ57_140_1)
233 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
234 // runtime-bound payload: ISD_P_AID2 stays in execution domain
235 var s14 = bind.sendApdu(null, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), null, "9300");
236 bind.checkData("S13-C1 SW", "9300", s14.sw);
237 BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s14.cmd, profileAidSession);
238 // S13-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
239 // S13-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
240
241 // 步骤 15:Seq#07 Step2] FETCH 'XX'(tc_step)
242 // FETCH header literals follow the golden wire evidence 8012 (same
243 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
244 // gives mechanism only). Le = pending length from the last 91XX
245 // (chain rule, binding-internal state).
246 var s15 = bind.fetchPending("80", "12", "00", "00", null);
247 bind.checkData("S14-C1 proactive command envelope", "1", (s15.resp.length >= 4 && s15.resp.substring(0, 2) === "D0") ? "1" : "0");
248 // S14-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
249
250 // 步骤 16:Seq#07 Step3] TERMINAL RESPONSE(tc_step)
251 // TERMINAL RESPONSE data is dynamically built by the binding from the
252 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
253 // Header literals follow the golden wire evidence 8014.
254 var s16 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
255 bind.checkData("S15-C1 SW", "9000", s16.sw);
256
257 // 步骤 17:Seq#07 Step4] MTD_STORE_DATA(tc_step)
258 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
259 var s17 = bind.sendApdu(null, "E2", "91", "00", "BF2D00", "00", "9000");
260 bind.checkData("S16-C1 SW", "9000", s17.sw);
261 var r2p17 = BindEs10xProcProfile.walkChoiceList(s17.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
262 var r2has17_0 = false;
263 for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
264 var f = r2p17.elements[r2i17_0].fields;
265 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has17_0 = true; break; }
266 }
267 bind.checkData("S16-C2 contains PROFILE_INFO1", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
268 var r2has17_1 = false;
269 for (var r2i17_1 = 0; r2i17_1 < r2p17.elements.length; r2i17_1++) {
270 var f = r2p17.elements[r2i17_1].fields;
271 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has17_1 = true; break; }
272 }
273 bind.checkData("S16-C2 contains PROFILE_INFO2", "1", (r2p17.branch_tag === "A0" && r2has17_1) ? "1" : "0");
274 var r2has17_0 = false;
275 for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
276 var f = r2p17.elements[r2i17_0].fields;
277 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has17_0 = true; break; }
278 }
279 bind.checkData("S16-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
280 var r2has17_1 = false;
281 for (var r2i17_1 = 0; r2i17_1 < r2p17.elements.length; r2i17_1++) {
282 var f = r2p17.elements[r2i17_1].fields;
283 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has17_1 = true; break; }
284 }
285 bind.checkData("S16-C3 contains entries2 iccid 989209013254769810F9", "1", (r2p17.branch_tag === "A0" && r2has17_1) ? "1" : "0");
286
287 // 步骤 18:Seq#08 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ57_133_1, RQ57_140_1)
288 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
289 var s18 = bind.sendApdu(null, "E2", "90", "00", "BF310F5A0A989209013254769810F90101FF", null, "9300");
290 bind.checkData("S17-C1 SW", "9300", s18.sw);
291 // S17-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
292 // S17-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
293
294 // 步骤 19:Seq#08 Step2] FETCH 'XX'(tc_step)
295 // FETCH header literals follow the golden wire evidence 8012 (same
296 // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
297 // gives mechanism only). Le = pending length from the last 91XX
298 // (chain rule, binding-internal state).
299 var s19 = bind.fetchPending("80", "12", "00", "00", null);
300 bind.checkData("S18-C1 proactive command envelope", "1", (s19.resp.length >= 4 && s19.resp.substring(0, 2) === "D0") ? "1" : "0");
301 // S18-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
302
303 // 步骤 20:Seq#08 Step3] TERMINAL RESPONSE(tc_step)
304 // TERMINAL RESPONSE data is dynamically built by the binding from the
305 // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
306 // Header literals follow the golden wire evidence 8014.
307 var s20 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
308 bind.checkData("S19-C1 SW", "9000", s20.sw);
309
310 // 步骤 21:Seq#08 Step4] MTD_STORE_DATA(tc_step)
311 // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
312 var s21 = bind.sendApdu(null, "E2", "91", "00", "BF2D00", "00", "9000");
313 bind.checkData("S20-C1 SW", "9000", s21.sw);
314 var r2p21 = BindEs10xProcProfile.walkChoiceList(s21.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
315 var r2has21_0 = false;
316 for (var r2i21_0 = 0; r2i21_0 < r2p21.elements.length; r2i21_0++) {
317 var f = r2p21.elements[r2i21_0].fields;
318 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has21_0 = true; break; }
319 }
320 bind.checkData("S20-C2 contains PROFILE_INFO1", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
321 var r2has21_1 = false;
322 for (var r2i21_1 = 0; r2i21_1 < r2p21.elements.length; r2i21_1++) {
323 var f = r2p21.elements[r2i21_1].fields;
324 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has21_1 = true; break; }
325 }
326 bind.checkData("S20-C2 contains PROFILE_INFO2", "1", (r2p21.branch_tag === "A0" && r2has21_1) ? "1" : "0");
327 var r2has21_0 = false;
328 for (var r2i21_0 = 0; r2i21_0 < r2p21.elements.length; r2i21_0++) {
329 var f = r2p21.elements[r2i21_0].fields;
330 if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has21_0 = true; break; }
331 }
332 bind.checkData("S20-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
333 var r2has21_1 = false;
334 for (var r2i21_1 = 0; r2i21_1 < r2p21.elements.length; r2i21_1++) {
335 var f = r2p21.elements[r2i21_1].fields;
336 if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has21_1 = true; break; }
337 }
338 bind.checkData("S20-C3 contains entries2 iccid 989209013254769810F9", "1", (r2p21.branch_tag === "A0" && r2has21_1) ? "1" : "0");
339}
340
完整 unified diff
行级差异:新增 338 行 / 删除 57 行(以 -man 为基准,unified 上下文 3 行)。
展开 diff(400 行)
--- -man
+++ -cas
@@ -1,59 +1,340 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3_01_Error_Enable_Profile_by_an_unknown_ISD_P_AID (extracted verbatim)
-
-function TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3_01_Error_Enable_Profile_by_an_unknown_ISD_P_AID()
-{
- if(!Card_Have_ECC_Cert)
- return;
-
- TestOfMEPMode = 0;
-
- initial_condition_PROFILE_OPERATIONAL1_is_Disabled();
- var ISD_P_Test01 = curProfile_ISD_P_AID;
-
- tracenamestr = "测试目的:通过未知的ISD-P AID激活profile";
- curDis.TraceStart(sno++,tracenamestr);
-
- curLogicChannel = 0;
- curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
- Ini_powerOn_eUICC_LPAe_not_activate();
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
- TS_MANAGE_CHANNEL_OPEN();
-
- curLogicChannel = 1;
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
- TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest,refreshFlag为FF(true);");
- var enableProRequest = new EnableProfileRequest();
- enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.isdpAid,ISD_P_AIDX);
- enableProRequest.refreshFlag = BooleanValue_BerCode_True;
- enableProRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData,"90","00","6A82");
- curStrHandle.CheckData("", respData, "EnableProfileResponse");
-
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
- var proInfoListRequest = new ProfileInfoListRequest();
- proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.isdpAid,ISD_P_Test01);
- proInfoListRequest.tagList = "5A4F9F70";
- proInfoListRequest.GenHexData();
- var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-
- var proInfoListResponse = new ProfileInfoListResponse();
- proInfoListResponse.checkCardResDataFormat(respData);
-
- try
- {
- curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
- curStrHandle.CheckData(ISD_P_Test01, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
- curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
- }catch(e){
- obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
- }
-
- RecoverCard();
-
+// Author: 卡思Cas智能体
+// Date: 20261005-152741
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.EnableProfile_ErrorCases_Case3,Test Sequence #01 unknown ISD-P AID; #02 unknown ICCID; #03 enable when Enabled (ISD-P AID); #04 enable when Enabled (ICCID); #05 PPR1 loaded (ISD-P AID); #06 PPR1 loaded (ICCID); #07 catBusy refreshFlag not set; #08 catBusy refreshFlag set,适用性 M。
+// Test points: S1-C1 SW;S2-C1 SW;S2-C2 contains PROFILE_INFO1_DISABLED
+// S2-C3 contains iccid 989209012143658709F5;S3-C1 SW;S4-C1 SW
+// S4-C2 contains PROFILE_INFO1_DISABLED;S4-C3 contains iccid 989209012143658709F5;S5-C1 SW
+// S6-C1 SW;S6-C2 contains PROFILE_INFO1;S6-C3 contains iccid 989209012143658709F5;S7-C1 SW
+// S8-C1 SW;S8-C2 contains PROFILE_INFO1;S8-C3 contains iccid 989209012143658709F5;S9-C1 SW
+// S10-C1 SW;S10-C2 contains PROFILE_INFO1_DISABLED;S10-C2 contains PROFILE_INFO4_ENABLED
+// S10-C3 contains entries1 iccid 989209012143658709F5
+// S10-C3 contains entries2 iccid 989209015476981032F9;S11-C1 SW;S12-C1 SW
+// S12-C2 contains PROFILE_INFO1_DISABLED;S12-C2 contains PROFILE_INFO4_ENABLED
+// S12-C3 contains entries1 iccid 989209012143658709F5
+// S12-C3 contains entries2 iccid 989209015476981032F9;S13-C1 SW;S14-C1 proactive command envelope
+// S15-C1 SW;S16-C1 SW;S16-C2 contains PROFILE_INFO1;S16-C2 contains PROFILE_INFO2
+// S16-C3 contains entries1 iccid 989209012143658709F5
+// S16-C3 contains entries2 iccid 989209013254769810F9;S17-C1 SW;S18-C1 proactive command envelope
+// S19-C1 SW;S20-C1 SW;S20-C2 contains PROFILE_INFO1;S20-C2 contains PROFILE_INFO2
+// S20-C3 contains entries1 iccid 989209012143658709F5
+// S20-C3 contains entries2 iccid 989209013254769810F9
+// 本函数由 CaseIR 4.2.21.2.2 编译生成(fullwave-blindgen-live-70-W1-A3,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。
+// GIC1 The PROFILE_OPERATIONAL1 has been installed on the eUICC.(Seq#5/#6 以各自 IC 'No Profile is installed' 覆盖本条): declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq01-IC PROFILE_OPERATIONAL1 is Disabled; PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>; the Operational Profile identified by <ISD_P_AIDX> is not loaded. IC1=PROC_EUICC_INITIALIZATION_SEQUENCE; IC2=PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR.: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq02-IC PROFILE_OPERATIONAL1 is Disabled; the Operational Profile identified by ICCID #ICCID_OP_PROFX is not loaded. IC1/IC2 同上。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq03/04-IC PROFILE_OPERATIONAL1 is Enabled on the eUICC(Seq03 另记 PROFILE_OPERATIONAL1 corresponds to <ISD_P_AID1>)。IC1/IC2 同上。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq05/06-IC No Profile is installed on the eUICC(覆盖 GIC);IC3 Install PROFILE_OPERATIONAL4(对应 <ISD_P_AID4>,Seq05 注记);IC4 Install PROFILE_OPERATIONAL1(对应 <ISD_P_AID1>);IC5 Enable PROFILE_OPERATIONAL4。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// Seq07/08-IC PROFILE_OPERATIONAL1 Enabled; PROFILE_OPERATIONAL2 installed and Disabled(Seq07 另记 PROFILE_OPERATIONAL2 corresponds to <ISD_P_AID2>);IC3: S_Device → eUICC MTD_SEND_SMS_PP([GET_MNO_SD]) → SW=0x91XX(开启 proactive session);IC4: Do not send FETCH command(会话保持挂起)。: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// PREFLIGHT_CONTEXT AUTHORIZED_DISCOVERY: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+function TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3_01_02_03_04_05_06_07_08_merged() {
+ var bind = curBind;
+ var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_ES10c_EnableProfile_ErrorCases_Case3_01_02_03_04_05_06_07_08_merged");
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain; context_lineage: {"context_id": "46a4c53f1e252492", "authority_reference": "E_tc_4221/288-288/G_annexB_dynamic:L51"}
+ var cardCtxLoad1 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID1", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain; context_lineage: {"context_id": "46a4c53f1e252492", "authority_reference": "E_tc_4221/412-412/G_annexB_dynamic:L52"}
+ var cardCtxLoad2 = BindCardContext.load(bind, profileAidSession, "ISD_P_AID2", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+ // runtime-bound payload: ISD_P_AIDX stays in execution domain; context_lineage: {"context_id": "46a4c53f1e252492", "authority_reference": "E_tc_4221/289-289/G_annexB_dynamic:L55"}
+ var cardCtxLoad3 = BindCardContext.load(bind, profileAidSession, "ISD_P_AIDX", {"tag":"4F","bytes":16,"range":{"minHex":"A0000005591010FFFFFFFF8900001000","maxHex":"A0000005591010FFFFFFFF8900FFFF00","lastByte":"00"}}, {token: CARD_CONTEXT_TOKEN, domainId: CARD_CONTEXT_DOMAIN});
+
+ // 步骤 1:MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s1 = bind.sendApdu("81", "E2", "91", "00", "BF2D035C014F", "00", "9000");
+
+ // 步骤 2:Seq#01 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_139)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AIDX stays in execution domain
+ var s2 = bind.sendApdu(null, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AIDX", "BF31154F10", "0101FF", profileAidSession), null, "6A82");
+ bind.checkData("S1-C1 SW", "6A82", s2.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AIDX", s2.cmd, profileAidSession);
+ // S1-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S1-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
+
+ // 步骤 3:Seq#01 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_139)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s3 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S2-C1 SW", "9000", s3.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s3.cmd, profileAidSession);
+ var r2p3 = BindEs10xProcProfile.walkChoiceList(s3.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has3_0 = false;
+ for (var r2i3_0 = 0; r2i3_0 < r2p3.elements.length; r2i3_0++) {
+ var f = r2p3.elements[r2i3_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has3_0 = true; break; }
+ }
+ bind.checkData("S2-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p3.branch_tag === "A0" && r2has3_0) ? "1" : "0");
+ var r2has3_0 = false;
+ for (var r2i3_0 = 0; r2i3_0 < r2p3.elements.length; r2i3_0++) {
+ var f = r2p3.elements[r2i3_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has3_0 = true; break; }
+ }
+ bind.checkData("S2-C3 contains iccid 989209012143658709F5", "1", (r2p3.branch_tag === "A0" && r2has3_0) ? "1" : "0");
+
+ // 步骤 4:Seq#02 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_139)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s4 = bind.sendApdu(null, "E2", "90", "00", "BF310F5A0A9892090143658709FFFF0101FF", null, "6A82");
+ bind.checkData("S3-C1 SW", "6A82", s4.sw);
+ // S3-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S3-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
+
+ // 步骤 5:Seq#02 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_139)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s5 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S4-C1 SW", "9000", s5.sw);
+ var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has5_0 = false;
+ for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
+ var f = r2p5.elements[r2i5_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has5_0 = true; break; }
+ }
+ bind.checkData("S4-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
+ var r2has5_0 = false;
+ for (var r2i5_0 = 0; r2i5_0 < r2p5.elements.length; r2i5_0++) {
+ var f = r2p5.elements[r2i5_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has5_0 = true; break; }
+ }
+ bind.checkData("S4-C3 contains iccid 989209012143658709F5", "1", (r2p5.branch_tag === "A0" && r2has5_0) ? "1" : "0");
+
+ // 步骤 6:Seq#03 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s6 = bind.sendApdu(null, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), null, "6985");
+ bind.checkData("S5-C1 SW", "6985", s6.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s6.cmd, profileAidSession);
+ // S5-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S5-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
+
+ // 步骤 7:Seq#03 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s7 = bind.sendApdu(null, "E2", "91", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF2D14A0124F10", "", profileAidSession), "00", "9000");
+ bind.checkData("S6-C1 SW", "9000", s7.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s7.cmd, profileAidSession);
+ var r2p7 = BindEs10xProcProfile.walkChoiceList(s7.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has7_0 = false;
+ for (var r2i7_0 = 0; r2i7_0 < r2p7.elements.length; r2i7_0++) {
+ var f = r2p7.elements[r2i7_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has7_0 = true; break; }
+ }
+ bind.checkData("S6-C2 contains PROFILE_INFO1", "1", (r2p7.branch_tag === "A0" && r2has7_0) ? "1" : "0");
+ var r2has7_0 = false;
+ for (var r2i7_0 = 0; r2i7_0 < r2p7.elements.length; r2i7_0++) {
+ var f = r2p7.elements[r2i7_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has7_0 = true; break; }
+ }
+ bind.checkData("S6-C3 contains iccid 989209012143658709F5", "1", (r2p7.branch_tag === "A0" && r2has7_0) ? "1" : "0");
+
+ // 步骤 8:Seq#04 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
+ // <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", "90", "00", "BF310F5A0A989209012143658709F50101FF", null, "6985");
+ bind.checkData("S7-C1 SW", "6985", s8.sw);
+ // S7-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S7-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
+
+ // 步骤 9:Seq#04 Step2] MTD_STORE_DATA(tc_step;REQ: RQ32_011, RQ32_012, RQ32_016_1, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s9 = bind.sendApdu(null, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+ bind.checkData("S8-C1 SW", "9000", s9.sw);
+ var r2p9 = BindEs10xProcProfile.walkChoiceList(s9.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has9_0 = false;
+ for (var r2i9_0 = 0; r2i9_0 < r2p9.elements.length; r2i9_0++) {
+ var f = r2p9.elements[r2i9_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has9_0 = true; break; }
+ }
+ bind.checkData("S8-C2 contains PROFILE_INFO1", "1", (r2p9.branch_tag === "A0" && r2has9_0) ? "1" : "0");
+ var r2has9_0 = false;
+ for (var r2i9_0 = 0; r2i9_0 < r2p9.elements.length; r2i9_0++) {
+ var f = r2p9.elements[r2i9_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has9_0 = true; break; }
+ }
+ bind.checkData("S8-C3 contains iccid 989209012143658709F5", "1", (r2p9.branch_tag === "A0" && r2has9_0) ? "1" : "0");
+
+ // 步骤 10:Seq#05 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ29_002, RQ29_022, RQ32_011, RQ32_012, RQ32_014, RQ32_016_1, RQ57_127, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID1 stays in execution domain
+ var s10 = bind.sendApdu(null, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID1", "BF31154F10", "0101FF", profileAidSession), null, "6985");
+ bind.checkData("S9-C1 SW", "6985", s10.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID1", s10.cmd, profileAidSession);
+ // S9-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S9-C3: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S9-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
+ // S9-C3: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
+
+ // 步骤 11:Seq#05 Step2] MTD_STORE_DATA(tc_step;REQ: RQ29_002, RQ32_011, RQ32_012, RQ32_014, RQ32_016_1, RQ57_127, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s11 = bind.sendApdu(null, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S10-C1 SW", "9000", s11.sw);
+ var r2p11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has11_0 = false;
+ for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
+ var f = r2p11.elements[r2i11_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has11_0 = true; break; }
+ }
+ bind.checkData("S10-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
+ var r2has11_1 = false;
+ for (var r2i11_1 = 0; r2i11_1 < r2p11.elements.length; r2i11_1++) {
+ var f = r2p11.elements[r2i11_1].fields;
+ if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has11_1 = true; break; }
+ }
+ bind.checkData("S10-C2 contains PROFILE_INFO4_ENABLED", "1", (r2p11.branch_tag === "A0" && r2has11_1) ? "1" : "0");
+ var r2has11_0 = false;
+ for (var r2i11_0 = 0; r2i11_0 < r2p11.elements.length; r2i11_0++) {
+ var f = r2p11.elements[r2i11_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has11_0 = true; break; }
+ }
+ bind.checkData("S10-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p11.branch_tag === "A0" && r2has11_0) ? "1" : "0");
+ var r2has11_1 = false;
+ for (var r2i11_1 = 0; r2i11_1 < r2p11.elements.length; r2i11_1++) {
+ var f = r2p11.elements[r2i11_1].fields;
+ if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has11_1 = true; break; }
+ }
+ bind.checkData("S10-C3 contains entries2 iccid 989209015476981032F9", "1", (r2p11.branch_tag === "A0" && r2has11_1) ? "1" : "0");
+
+ // 步骤 12:Seq#06 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ29_002, RQ29_022, RQ32_011, RQ32_012, RQ32_014, RQ32_016_1, RQ57_127, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s12 = bind.sendApdu(null, "E2", "90", "00", "BF310F5A0A989209012143658709F50101FF", null, "6985");
+ bind.checkData("S11-C1 SW", "6985", s12.sw);
+ // S11-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S11-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
+
+ // 步骤 13:Seq#06 Step2] MTD_STORE_DATA(tc_step;REQ: RQ29_002, RQ32_011, RQ32_012, RQ32_014, RQ32_016_1, RQ57_127, RQ57_128, RQ57_129, RQ57_130, RQ57_135_2, RQ57_138, RQ57_140)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s13 = bind.sendApdu(null, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S12-C1 SW", "9000", s13.sw);
+ var r2p13 = BindEs10xProcProfile.walkChoiceList(s13.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has13_0 = false;
+ for (var r2i13_0 = 0; r2i13_0 < r2p13.elements.length; r2i13_0++) {
+ var f = r2p13.elements[r2i13_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has13_0 = true; break; }
+ }
+ bind.checkData("S12-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
+ var r2has13_1 = false;
+ for (var r2i13_1 = 0; r2i13_1 < r2p13.elements.length; r2i13_1++) {
+ var f = r2p13.elements[r2i13_1].fields;
+ if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has13_1 = true; break; }
+ }
+ bind.checkData("S12-C2 contains PROFILE_INFO4_ENABLED", "1", (r2p13.branch_tag === "A0" && r2has13_1) ? "1" : "0");
+ var r2has13_0 = false;
+ for (var r2i13_0 = 0; r2i13_0 < r2p13.elements.length; r2i13_0++) {
+ var f = r2p13.elements[r2i13_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has13_0 = true; break; }
+ }
+ bind.checkData("S12-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p13.branch_tag === "A0" && r2has13_0) ? "1" : "0");
+ var r2has13_1 = false;
+ for (var r2i13_1 = 0; r2i13_1 < r2p13.elements.length; r2i13_1++) {
+ var f = r2p13.elements[r2i13_1].fields;
+ if (f["5A"] === "989209015476981032F9" && f["9F70"] === "01") { r2has13_1 = true; break; }
+ }
+ bind.checkData("S12-C3 contains entries2 iccid 989209015476981032F9", "1", (r2p13.branch_tag === "A0" && r2has13_1) ? "1" : "0");
+
+ // 步骤 14:Seq#07 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ57_127_1, RQ57_140_1)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ // runtime-bound payload: ISD_P_AID2 stays in execution domain
+ var s14 = bind.sendApdu(null, "E2", "90", "00", BindEs10xProcProfileDynamic.bindProfileAidTemplate(bind, "ISD_P_AID2", "BF31154F10", "010100", profileAidSession), null, "9300");
+ bind.checkData("S13-C1 SW", "9300", s14.sw);
+ BindEs10xProcProfileDynamic.assertBoundPayload(bind, "ISD_P_AID2", s14.cmd, profileAidSession);
+ // S13-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S13-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
+
+ // 步骤 15:Seq#07 Step2] FETCH 'XX'(tc_step)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s15 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S14-C1 proactive command envelope", "1", (s15.resp.length >= 4 && s15.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S14-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+ // 步骤 16:Seq#07 Step3] TERMINAL RESPONSE(tc_step)
+ // TERMINAL RESPONSE data is dynamically built by the binding from the
+ // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+ // Header literals follow the golden wire evidence 8014.
+ var s16 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+ bind.checkData("S15-C1 SW", "9000", s16.sw);
+
+ // 步骤 17:Seq#07 Step4] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s17 = bind.sendApdu(null, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S16-C1 SW", "9000", s17.sw);
+ var r2p17 = BindEs10xProcProfile.walkChoiceList(s17.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has17_0 = false;
+ for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
+ var f = r2p17.elements[r2i17_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has17_0 = true; break; }
+ }
+ bind.checkData("S16-C2 contains PROFILE_INFO1", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
+ var r2has17_1 = false;
+ for (var r2i17_1 = 0; r2i17_1 < r2p17.elements.length; r2i17_1++) {
+ var f = r2p17.elements[r2i17_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has17_1 = true; break; }
+ }
+ bind.checkData("S16-C2 contains PROFILE_INFO2", "1", (r2p17.branch_tag === "A0" && r2has17_1) ? "1" : "0");
+ var r2has17_0 = false;
+ for (var r2i17_0 = 0; r2i17_0 < r2p17.elements.length; r2i17_0++) {
+ var f = r2p17.elements[r2i17_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has17_0 = true; break; }
+ }
+ bind.checkData("S16-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p17.branch_tag === "A0" && r2has17_0) ? "1" : "0");
+ var r2has17_1 = false;
+ for (var r2i17_1 = 0; r2i17_1 < r2p17.elements.length; r2i17_1++) {
+ var f = r2p17.elements[r2i17_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has17_1 = true; break; }
+ }
+ bind.checkData("S16-C3 contains entries2 iccid 989209013254769810F9", "1", (r2p17.branch_tag === "A0" && r2has17_1) ? "1" : "0");
+
+ // 步骤 18:Seq#08 Step1] MTD_STORE_DATA_Case3(tc_step;REQ: RQ57_133_1, RQ57_140_1)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s18 = bind.sendApdu(null, "E2", "90", "00", "BF310F5A0A989209013254769810F90101FF", null, "9300");
+ bind.checkData("S17-C1 SW", "9300", s18.sw);
+ // S17-C2: kind 'requirement' pattern '' has no static generation face (corpus vacuum; see CaseIR unresolved).
+ // S17-C2: binding:requirement_satisfied_by_same_step_error_sw_assertion (check_attestation)
+
+ // 步骤 19:Seq#08 Step2] FETCH 'XX'(tc_step)
+ // FETCH header literals follow the golden wire evidence 8012 (same
+ // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+ // gives mechanism only). Le = pending length from the last 91XX
+ // (chain rule, binding-internal state).
+ var s19 = bind.fetchPending("80", "12", "00", "00", null);
+ bind.checkData("S18-C1 proactive command envelope", "1", (s19.resp.length >= 4 && s19.resp.substring(0, 2) === "D0") ? "1" : "0");
+ // S18-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+
+ // 步骤 20:Seq#08 Step3] TERMINAL RESPONSE(tc_step)
+ // TERMINAL RESPONSE data is dynamically built by the binding from the
+ // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+ // Header literals follow the golden wire evidence 8014.
+ var s20 = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+ bind.checkData("S19-C1 SW", "9000", s20.sw);
+
+ // 步骤 21:Seq#08 Step4] MTD_STORE_DATA(tc_step)
+ // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+ var s21 = bind.sendApdu(null, "E2", "91", "00", "BF2D00", "00", "9000");
+ bind.checkData("S20-C1 SW", "9000", s21.sw);
+ var r2p21 = BindEs10xProcProfile.walkChoiceList(s21.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+ var r2has21_0 = false;
+ for (var r2i21_0 = 0; r2i21_0 < r2p21.elements.length; r2i21_0++) {
+ var f = r2p21.elements[r2i21_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has21_0 = true; break; }
+ }
+ bind.checkData("S20-C2 contains PROFILE_INFO1", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
+ var r2has21_1 = false;
+ for (var r2i21_1 = 0; r2i21_1 < r2p21.elements.length; r2i21_1++) {
+ var f = r2p21.elements[r2i21_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has21_1 = true; break; }
+ }
+ bind.checkData("S20-C2 contains PROFILE_INFO2", "1", (r2p21.branch_tag === "A0" && r2has21_1) ? "1" : "0");
+ var r2has21_0 = false;
+ for (var r2i21_0 = 0; r2i21_0 < r2p21.elements.length; r2i21_0++) {
+ var f = r2p21.elements[r2i21_0].fields;
+ if (f["5A"] === "989209012143658709F5" && f["9F70"] === "01") { r2has21_0 = true; break; }
+ }
+ bind.checkData("S20-C3 contains entries1 iccid 989209012143658709F5", "1", (r2p21.branch_tag === "A0" && r2has21_0) ? "1" : "0");
+ var r2has21_1 = false;
+ for (var r2i21_1 = 0; r2i21_1 < r2p21.elements.length; r2i21_1++) {
+ var f = r2p21.elements[r2i21_1].fields;
+ if (f["5A"] === "989209013254769810F9" && f["9F70"] === "00") { r2has21_1 = true; break; }
+ }
+ bind.checkData("S20-C3 contains entries2 iccid 989209013254769810F9", "1", (r2p21.branch_tag === "A0" && r2has21_1) ? "1" : "0");
}