5.2.1.2.1 下载准备重试(复用 OT 密钥)
TC_eUICC_PrepareDownload_Retry_ReuseOTKeys
-man 人工切片
- 终态
- ok `_ok` 复用(结构 A1-A7 PASS;`_ok` run 无厂商错误行)
- ErrorCount
- 0
- 执行 job
- 20260909_020443_ok:f0b1dee828c94728ac95888a54883f21
- html_run
- 20261007_133151
- 包 sha256
- 3536651955922356…
- 包大小
- 243.1 KB
日志源:logs/20261007_133151/extracted/ESIM_TEST_SGP_23/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_Nominal_Confirmation_Code_retry_mechanism_by_reusing_previous_One_Time_key_pair.html
-cas 盲生成
- 终态
- failed 纯 native 零卡态前置(N0)
- ErrorCount
- 5
- 执行 job
- 33f6cc5d5ad743ffb33618c82c9216bc
- html_run
- 33f6cc5d_gapfix1
- 包 sha256
- 33047c56b23e7cff…
- 包大小
- 843.0 KB
- 判定
- RERUN
- 路由
- native_N0
- 状态轴
- execution=red_verify / place=not_attempted / release=not_ready / card_state=n/a
差异概览(机械口径)
闭包文件层(l1)
man 34 / cas 82 个 JS;共同 31,一致 30,man-only 3,cas-only 51
命令序列层(l2)
man 74 / cas 0 条命令;完全一致 0,核心一致 0,长度尾部差 0,man-only 74,cas-only 0
规范覆盖(l3)
spec_steps 0,缺失 REQ 0 项,checkData 47 次,计数缺口 0,物化 EXPANDED,执行 FAIL
断言自证(attestation)
js 断言 19 条 / 绑定层 24 条 / 缺口 0
机械差异分类
| 轴 | 说明 | 计数 |
|---|---|---|
| RUN_DIFF | man 通过 / cas 失败 | 1 |
| SCRIPT_DIALECT | 闭包文件差:man-only 3 / cas-only 51 | 54 |
| GEN_DIFF | 命令序列差:man-only 74 / cas-only 0 | 74 |
对比报告
5.2.1.2.1 TC_eUICC_PrepareDownload_Retry_ReuseOTKeys — -man ↔ -cas diff 报告
交付形态说明:本报告随专家交付包分发——-man/-cas脚本包 zip 与 190server HTML 执行日志已内联至packages/、evidence-html/,相应路径已相对化;TTR、spec_intl、caseir 等仓内留痕仍为生成机原始路径(未随包)。
- 生成时间:2026-10-08 22:57:11 |引擎:holiday-blk5/0.1|配对状态:
PAIRED - 分母口径:卡侧 61 之一
1. 配对与包
| 侧 | 包/源 | sha256 | 源类型 | 入口用例 |
|---|---|---|---|---|
-man | 5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-man.zip | 35366519559223563ea6f69b162879cc6d952ca86319858c4b9aad7fcc84768e | zip | TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_Nominal_Confirmation_Code_retry_mechanism_by_reusing_previous_One_Time_key_pair |
-cas | 5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-cas.zip | 33047c56b23e7cffa6334ef49d8e6e816744332f57cf1cca81c8ac17c35f234c | zip | — |
- man 源路径:
../packages/man/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-man.zip - cas 源路径:
../packages/cas/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-cas.zip - 上游来源:{"man_ledger": true, "cas_ledger": true, "naming_map": true, "html_probe": true, "man_package": true, "cas_package": true}
- 适用性:naming-map=
C019["C019", "C019", "C019", "C019", "C019"];caseir=C019
2. 执行摘要(双方 job/终态)
| 侧 | 终态/计划 | 备注 | ErrorCount | job_id | 业务状态 | TTR | 诊断包 |
|---|---|---|---|---|---|---|---|
-man | ok | _ok 复用(结构 A1-A7 PASS;_ok run 无厂商错误行) | 0 | 20260909_020443_ok:f0b1dee828c94728ac95888a54883f21 | — | /Users/yuhu/cas/原料/切片/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys/logs/20260909_020443_ok/result/ESIM_TEST_SGP_23/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_Nominal_Confirmation_Code_retry_mechanism_by_reusing_previous_One_Time_key_pair.ttr | — |
-cas | failed | 纯 native 零卡态前置(N0) | 5 | 33f6cc5d5ad743ffb33618c82c9216bc | — | /Users/yuhu/cas/experiments/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-20261008_020421/logs/33f6cc5d_gapfix1/result/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_03_merged.ttr | — |
- cas 块4账本:decision=
RERUN;route=native_N0;live 事件 3 条(4.6 波次进行中;以块4终版账本为准) - cas 4.6 波次最新执行:terminal=
failed;stage=cas_gapfix_rerun;job=33f6cc5d5ad743ffb33618c82c9216bc;gaps=["gapfix-rerun:job 终态 succeeded,业务判 failed(error_count=4);failed 亦为有效终态,如实登记"] - cas 失败归因引用(块4):
b7-attribution.md,b9-attribution.md - cas 证据来源分层:
RERUN→ 本轮 4.6 波次执行
3. HTML 执行日志状态
-man:NATIVE(../evidence/5.2.1.2.1/man/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_Nominal_Confirmation_Code_retry_mechanism_by_reusing_previous_One_Time_key_pair.html;sha25600d5bd5fed885ba607f0f5eaa7e16ecc7492900958c86b2a5df85a43b5d852a8;171104 bytes)-cas:NATIVE(../evidence/5.2.1.2.1/cas/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys.html;sha256368249afb7c66615002e079164aa56532271f050c0330abf20ceed15b71def1e;1263 bytes)- 纪律:原生缺失 →
HTML_UNAVAILABLE显式阻断(附探针结论);派生件仅标DERIVED_NOT_NATIVE,不冒充原生。
4. L1 脚本/依赖/命名差异(源文件闭包级)
- 闭包规模:man 34 文件 / cas 82 文件;同名 31(字节同 30,内容异 1)
- 同名内容异:
Import/TestCase_SGP_23.js - man-only 文件 3:
ESIM_TEST_SGP_23.UCE,ESIM_TEST_SGP_23.sol,MANIFEST.json - cas-only 文件 51:
Import/CapInfo.js,Import/ExecuteTestCase.js,Import/ExecuteTestCase_CSC.js,Import/ExecuteTestCase_LoadProfile_via_bip.js,Import/ExecuteTestCase_Local_Management.js,Import/ExecuteTestCase_Non_Telecom_Profile.js,Import/ExecuteTestCase_Performance.js,Import/ExecuteTestCase_PressureTest.js,Import/ExecuteTestCase_ProfileFormatTest_V_2_3_1.js,Import/ExecuteTestCase_ProfileServicesListTest.js… - 注:man 包=切片最小闭包(
script/投影);cas 包=slice_native 全工程投影(厂商参照闭包+生成体)。闭包规模差为打包形态差异;同名文件字节差集中于Import/TestCase_SGP_23.js(TC 入口本体)。
4.1 入口代码对照
- 行数:man 192 / cas 884;字符:man 8253 / cas 87123
- man 顶层调用 Top:[["TestStepStart2", 35], ["ES10b_GetEUICCInfo1", 6], ["ES10b_GetEUICCChallenge", 6], ["ES10b_AuthenticateServer", 6], ["ES10b_PrepareDownload", 6], ["RSP_profile_load_procedure_LPAd", 4], ["RandHexStr", 4], ["TraceStart", 3], ["Ini_powerOn_eUICC_LPAe_not_activate", 3], ["TS_MANAGE_CHANNEL_OPEN", 3]]
- cas bind 调用:[["checkData", 47], ["sendApdu", 8]]
| 方言映射对 | 命中数 |
|---|---|
| TS_*_cmd() ↔ bind.* 命令封装 | 6 |
unified diff(截断预览)
--- man
+++ cas
@@ -1,191 +1,883 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_Nominal_Confirmation_Code_retry_mechanism_by_reusing_previous_One_Time_key_pair + TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_02_Nominal_Retry_after_a_CancelSession_Reason_Postponed + TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_03_Nominal_Retry_after_a_CancelSession_Reason_Timeout (extracted verbatim)
-
-function TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_Nominal_Confirmation_Code_retry_mechanism_by_reusing_previous_One_Time_key_pair()
-{
- if (!O_E_REUSE_OTPK)
- return;
-
- tracenamestr = "Confirmation Code重发,使用上一个会话中的otpk";
- 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命令,执行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,PREP_DOWNLOAD_WITH_CC;");
- var chash1 = curStrHandle.RandHexStr(32);
- Profile_load_procedure.ccRequiredFlag = "FF";
- Profile_load_procedure.hashcc = chash1;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- var cureuiccOtpk = Profile_load_procedure.euiccOtpk;
- curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
- 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,PREP_DOWNLOAD_RETRY_CC,Confirmation Code重发,使用上一个会话中的otpk;");
- var chash1 = curStrHandle.RandHexStr(32);
- Profile_load_procedure.ccRequiredFlag = "FF";
- Profile_load_procedure.hashcc = chash1;
- Profile_load_procedure.euiccOtpk = cureuiccOtpk;
- Profile_load_procedure.ES10b_PrepareDownload();
-
- var cureuiccOtpk2 = Profile_load_procedure.euiccOtpk;
- curStrHandle.CheckData(cureuiccOtpk, cureuiccOtpk2, "otpk");
-
- RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261004-022945
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_PrepareDownload_Retry_ReuseOTKeys,Test Sequence #01-#03 Nominal(本 TC 全部 3 条 Test Sequence 合并展开:CC 重试复用 OT/Postponed 后重试/Timeout 后重试),适用性 C019。
+// Test points: S2-C1 SW;S2-C2 R_PREP_DOWNLOAD response structure;S2-C2 R_PREP_DOWNLOAD outer tag
+// S2-C2 R_PREP_DOWNLOAD required members present;S3-C1 cma_ok
+// S3-C1 Common Mutual Authentication re-execution ok;S5-C1 SW
+// S5-C2 R_PREP_DOWNLOAD response structure;S5-C2 R_PREP_DOWNLOAD outer tag
+// S5-C2 R_PREP_DOWNLOAD required members present;S7-C1 SW
+// S7-C2 R_PREP_DOWNLOAD response structure;S7-C2 R_PREP_DOWNLOAD outer tag
+// S7-C2 R_PREP_DOWNLOAD required members present;S8-C1 assemble;S8-C2 assemble;S8-C1 SW
+// S8-C2 cancelSessionResponseOk structure;S9-C1 cma_ok
+// S9-C1 Common Mutual Authentication re-execution ok;S10-C1 SW
+// S10-C2 R_PREP_DOWNLOAD response structure;S10-C2 R_PREP_DOWNLOAD outer tag
+// S10-C2 R_PREP_DOWNLOAD required members present;S12-C1 SW
+// S12-C2 R_PREP_DOWNLOAD response structure;S12-C2 R_PREP_DOWNLOAD outer tag
+// S12-C2 R_PREP_DOWNLOAD required members present;S13-C1 assemble;S13-C2 assemble;S13-C1 SW
+// S13-C2 cancelSessionResponseOk structure;S14-C1 cma_ok
+// S14-C1 Common Mutual Authentication re-execution ok;S15-C1 SW
+// S15-C2 R_PREP_DOWNLOAD response structure;S15-C2 R_PREP_DOWNLOAD outer tag
+// S15-C2 R_PREP_DOWNLOAD required members present
+// 本函数由 CaseIR 5.2.1.2.1 编译生成(experiments/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-20261004_022945,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).
+// 适用性 C019:编译期门,运行时由 harness 环境前置承担。
+// PRECONDITION (declared, NOT compiled): initial_conditions 缺语料过程体(Annex C.2 absent from input package, corpus vacuum): IC 序列属测试工具/卡态编排责任,本脚本不虚构初始化步骤;语义影响见 CaseIR open_items。
+// GEN-IC-1 卡态声明(E 段 General Initial Conditions,编排责任):The PROFILE_OPERATIONAL1 is not loaded on the eUICC: declared unexpanded (no fabricated bytes; provenance = expansion_source).
+// GEN-IC-2 卡态声明:通信已初始化且 S_LPAd 已选 ISD-R;Common Mutual Authentication 已成功执行(#GET_EUICC_INFO1、#GET_EUICC_CHALLENGE、#AUTHENTICATE_SMDP 已发送;签名与验证选用同一 GSMA CI): declared unexpanded (no fabricated bytes; provenance = expansion_source).
+function TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_03_merged() {
+ var bind = curBind;
+ var profileAidSession = BindEs10xProcProfileDynamic.beginSession(bind, "TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_03_merged");
+
+ // 步骤 1:<S_HASHED_CC> = MTD_GENERATE_HASHED_CC(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:MTD_STORE_DATA_SCRIPT(tc_step;REQ: RQ31_130, RQ31_131, RQ31_132, RQ31_133, RQ31_134, RQ31_135, RQ31_139, RQ31_140, RQ31_141, RQ57_025, RQ57_026, RQ57_027, RQ57_028, RQ57_029, RQ57_030, RQ57_034, RQ57_035, RQ57_036, RQ57_037, RQ57_038, RQ57_039, RQ26_029, RQ26_030)
+ // PREP_DOWNLOAD 运行时绑定(PREP_DOWNLOAD_WITH_CC;SGP.22 §5.7.5 PrepareDownloadRequest=BF21 成员序 smdpSigned2(30) → smdpSignature2(5F37), hashCc 04 → smdpCertificate(30)):
+ // 无前序 cma_decl 源(GIC CMA):transactionId 运行时随机(G Annex B <S_TRANSACTION_ID>,vendor RandHexStr 机制);euiccSignature1 无源→空串,诚实守卫拦截发送(不硬造签名明文)。
+ // DPpb cert/SK=named_certs/named_sks 声明面(sha256 锚编译期已核;曲线套索引=CI 选择同号——同一 GSMA CI 链)。
+ var pd2Certs = ["308201DFA00302010202020101300A06082A8648CE3D04030230443110300E06035504030C07546573742043493111300F060355040B0C0854455354434552543110300E060355040A0C0752535054455354310B3009060355040613024954301E170D3230303430313038333434355A170D3330303333303038333434355A3025310D300B060355040A0C0441434D453114301206035504030C0B5445535420534D2D44502B3059301306072A8648CE3D020106082A8648CE3D03010703420004104C2AE3D02DEF9C979261A7C6710076B970721D0955A2644AE05FAE4BC2314E5DC09F6BF0118026165342E212318775E365F3B57325373066B9906E0BD1388DA381DF3081DC301F0603551D23041830168014F54172BDF98A95D65CBEB88A38A1C11D800A85C3301D0603551D0E04160414E6EAF71EE0FB9430ECCD1EBB421F881437C13263300E0603551D1104073005880388370A300E0603551D0F0101FF04040302078030170603551D200101FF040D300B300906076781120102010530610603551D1F045A3058302AA028A0268624687474703A2F2F63692E746573742E6578616D706C652E636F6D2F43524C2D412E63726C302AA028A0268624687474703A2F2F63692E746573742E6578616D706C652E636F6D2F43524C2D422E63726C300A06082A8648CE3D040302034800304502203EA51B0129FC11E843C38C8CB104244CCF92D8DDBCD4D5F9DAFD0AEF700A9B1C022100FEF382FF71FEFC58168A3607D5685DB7CB48F6B434261891496385BCD6B5857A", "308201E0A00302010202020101300A06082A8648CE3D04030230443110300E06035504030C07546573742043493111300F060355040B0C0854455354434552543110300E060355040A0C0752535054455354310B3009060355040613024954301E170D3230303430313038333434365A170D3330303333303038333434365A3025310D300B060355040A0C0441434D453114301206035504030C0B5445535420534D2D44502B305A301406072A8648CE3D020106092B240303020801010703420004893253ECC94C51DF4FEE6E0DB0951CFC65627481B5418E557069F487FAA15466A5CB8E10CC2B38099CF2A929F7F82DAC065126B71D0640961DB7F91A49E95612A381DF3081DC301F0603551D23041830168014C0BC70BA36929D43B467FF57570530E57AB8FCD8301D0603551D0E04160414A8C68DF449EB71EC723EAC132E40E4B6F54644FE300E0603551D1104073005880388370A300E0603551D0F0101FF04040302078030170603551D200101FF040D300B300906076781120102010530610603551D1F045A3058302AA028A0268624687474703A2F2F63692E746573742E6578616D706C652E636F6D2F43524C2D412E63726C302AA028A0268624687474703A2F2F63692E746573742E6578616D706C652E636F6D2F43524C2D422E63726C300A06082A8648CE3D04030203470030440220244ED22119D00D49D9EA4AC5D9A6D925FACFCD1998A96448A870CE47FE5E470E02206C4BC7223C925D548DDDD3D8DDD81118DA202973311F6012BB0A20E6DD2D7B7B"];
+ var pd2Sks = ["DCD694B778957E8E9ADDBDD94433E9EF8F73D11E491C48D425A38A9491BD3BED", "75FF322F416616DAE1A484EF71D4874FB0DF3295FD35C2CBA489FBB2BB9C7BF6"];
+ var pd2Tid = "";
+ for (var pd2Ri = 0; pd2Ri < 16; pd2Ri++) {
+ pd2Tid += bind.engine.Hex(Math.round(255 * Math.random()), 2);
+ }
+ var pd2Sel = 0;
+ var pd2Sig1 = "";
+ var pd2Dps = [["FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF", "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC", "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B", "046B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C2964FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5", "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"], ["A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5377", "7D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9", "26DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B6", "048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F046997", "A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7"]];
+ var pd2CcH = bind.engine.Sha256("30313032303330343035", 20);
+ var pd2HashCc = bind.engine.Sha256(pd2CcH + pd2Tid, (pd2CcH + pd2Tid).length);
+ if (pd2Sel < 0 || pd2Sig1 === "") {
+ // fail-closed 诚实面:CMA 运行时操作数缺席(CMA 失败/未执行)→ BF21 不发送(前序 CMA 步断言面已计错,本步不伪造通过)。
+ bind.checkData("S2-C1 SW", "9000", "pd2_not_executed:cma_operands_absent");
+ bind.checkData("S2-C2 R_PREP_DOWNLOAD response structure", "1", "pd2_not_executed:cma_operands_absent");
+ } else {
…(差异行超限,共 1076 行,此处截断)
- man:
ESIM_TEST_SGP_23.UCE;入口 [('TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_Nominal_Confirmation_Code_retry_mechanism_by_reusing_previous_One_Time_key_pair', 'Retry mechanism', 'Import\\\\ExecuteTestCase_SGP_23.js(TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_Nominal_Confirmation_Code_retry_mechanism_by_reusing_previous_One_Time_key_pair)')];参数 {"ReaderName": "Identiv SCR35xx USB Smart Card Reader 0"} - cas:
TC_eUICC_PrepareDownload_Retry_ReuseOTKeys/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys.uce;入口 [('TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_03_merged', 'TC_eUICC_PrepareDownload_Retry_ReuseOTKeys', 'Import\\\\ExecuteTestCase_spec.js(TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_03_merged)')];参数 {"ReaderName": "Identiv SCR35xx USB Smart Card Reader 0"}
5. L2 步骤/APDU/step_map 差异(结构化对齐)
- 命令计数:man 74 / cas 0;精确对齐 0,核心(CLA·INS·P1·P2·Lc)同 0,man-only 74,cas-only 0
| # | -man | -cas | 对齐 |
|---|---|---|---|
| — | man-only: @RESET, 00A40004023F00, 00C0000020, 80AA000007A9058100830137, 8010000023FFFFFFFF7F9D00DFBF00001FE20000…0000038, 801200000F, 801400000C810301250082028281830100, 0070000000, 0070000001, 01A4040010A0000005591010FFFFFFFF8900000100, 01C0000021, 81E2910003BF2000 |
6. L3 规范字段/Expected/REQ/通过条件差异
- spec:/Users/yuhu/cas/原料/切片/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys/spec_intl/SGP.23-v1.16_5.2.1.2.1_PrepareDownload_Retry_ReuseOTKeys.md(风格:mapping);caseir:
/Users/yuhu/cas/experiments/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-20261008_020421/caseir_materialized_gate.json
spec_intl 为人工核订映射表风格(规范步骤 ↔ 厂商脚本实现 ↔ 实跑结果):
| 规范步骤 | man 脚本实现 | man 实跑结果 |
|---|---|---|
| (前置,非规范步骤)General IC 表 1025:空卡+Mutual Auth | #01 函数 L11-33:初始化(L13)→ 通道(L16)→ 选 ISD-R(L21)→ GetEUICCInfo1(L27)→ Get | 通过(ttr 步骤1-6,APDU3-87:复位/通道 01/ISD-R 6121→GET RESPONSE 9000(8203020500 |
| IC1 <S_HASHED_CC>=MTD_GENERATE_HASHED_CC(#CONFIRMATION_CODE1, <S_TRANSACTION_ID>) | L36-38:RandHexStr(32) 模拟哈希(L36)+ccRequiredFlag="FF"(L37)+`hashcc=c | (构造型 IC——hashcc 随请求实发,APDU91 请求 BF21…0101FF 5F3740 53502F8F… 在案) |
| 1 MTD_STORE_DATA_SCRIPT(#PREP_DOWNLOAD_WITH_CC) → #R_PREP_DOWNLOAD_WITH_CC SW=0x9000+验签+transactionId/hashCc 回显+提取 <OTPK_EUICC_ECKA> 供步 4 复用 | L39 ES10b_PrepareDownload();L41 `cureuiccOtpk = Profile_load_procedu | 通过(ttr 步骤7,APDU91 请求 transactionId=528B6F5170726D7AF9164C1BC4ACC0ED |
| 2 Execute the Common Mutual Authentication procedure(同一 GSMA CI) | L44-50:GetEUICCInfo1(L44)→ GetEUICCChallenge(L47)→ AuthenticateServer( | 通过(ttr 步骤8-10,APDU117-165:BF20/BF2E/BF38 全 9000,新会话 transactionId=`CB0 |
| 3 <S_HASHED_CC>=MTD_GENERATE_HASHED_CC(#CONFIRMATION_CODE2, <S_TRANSACTION_ID>) | L53-55:新 RandHexStr(32)(L53)+ccRequiredFlag="FF"(L54)+`hashcc=chas | (构造型——hashcc2 随重试请求实发,APDU169 在案) |
| 4 MTD_STORE_DATA_SCRIPT(#PREP_DOWNLOAD_RETRY_CC) → SW=0x9000+验签+transactionId/hashCc 回显+<OTPK_EUICC_ECKA> 与 #PREP_DOWNLOAD_RETRY_CC 中相同(复用断言) | L56 euiccOtpk = cureuiccOtpk(请求侧复用前次 OTPK)+L57 `ES10b_PrepareDownloa | 通过(ttr 步骤11,APDU169 请求 BF21…5F4941 0425976AC8…(请求侧复用 OTPK #1 在案)→ AP |
| (收尾,非规范步骤) | RecoverCard()(L62) | 通过(T2 APDU205-310:复位→MemoryReset BF3404820206C0→9000 BF3403800101→ |
cas CaseIR 步骤/检查:
| 步 | 动作 | checks | REQ |
|---|---|---|---|
| 1 | <S_HASHED_CC> = MTD_GENERATE_HASHED_CC(#CONFIRMATION_CODE1, <S_TRANSAC | [] | [] |
| 2 | MTD_STORE_DATA_SCRIPT( #PREP_DOWNLOAD_WITH_CC) | ["S2-C1", "S2-C2", "S2-C3", "S2-C4", "S2-C5", "S2-C6"] | ["RQ31_130", "RQ31_131", "RQ31_132", "RQ31_133", "RQ31_134", "RQ31_135", "RQ31_139", "RQ31_140", "RQ31_141", "RQ57_025", "RQ57_026", "RQ57_027", "RQ57_028", "RQ57_029", "RQ57_030", "RQ57_034", "RQ57_035", "RQ57_036", "RQ57_037", "RQ57_038", "RQ57_039", "RQ26_029", "RQ26_030"] |
| 3 | [Seq#01] Execute the Common Mutual Authentication procedure between th | ["S3-C1"] | ["RQ57_047"] |
| 4 | <S_HASHED_CC> = MTD_GENERATE_HASHED_CC(#CONFIRMATION_CODE2, <S_TRANSAC | [] | [] |
| 5 | MTD_STORE_DATA_SCRIPT( #PREP_DOWNLOAD_RETRY_CC) | ["S5-C1", "S5-C2", "S5-C3", "S5-C4", "S5-C5", "S5-C6"] | ["RQ31_130", "RQ31_131", "RQ31_132", "RQ31_133", "RQ31_134", "RQ31_135", "RQ31_139", "RQ31_140", "RQ31_141", "RQ31_137", "RQ57_025", "RQ57_026", "RQ57_027", "RQ57_028", "RQ57_029", "RQ57_030", "RQ57_034", "RQ57_035", "RQ57_036", "RQ57_037", "RQ57_038", "RQ57_039", "RQ57_033", "RQ26_029", "RQ26_030"] |
| 6 | <S_HASHED_CC> = MTD_GENERATE_HASHED_CC(#CONFIRMATION_CODE1, <S_TRANSAC | [] | [] |
| 7 | MTD_STORE_DATA_SCRIPT( #PREP_DOWNLOAD_WITH_CC) | ["S7-C1", "S7-C2", "S7-C3", "S7-C4", "S7-C5", "S7-C6"] | ["RQ31_130", "RQ31_131", "RQ31_132", "RQ31_133", "RQ31_134", "RQ31_135", "RQ31_139", "RQ31_140", "RQ31_141", "RQ57_025", "RQ57_026", "RQ57_027", "RQ57_028", "RQ57_029", "RQ57_030", "RQ57_034", "RQ57_035", "RQ57_036", "RQ57_037", "RQ57_038", "RQ57_039", "RQ26_029", "RQ26_030"] |
| 8 | MTD_STORE_DATA(#CANCEL_SESSION_POSTPONED) | ["S8-C1", "S8-C2"] | ["RQ57_112"] |
| 9 | Execute the Common Mutual Authentication procedure between the eUICC a | ["S9-C1"] | ["RQ57_047"] |
| 10 | MTD_STORE_DATA_SCRIPT( #PREP_DOWNLOAD_RETRY_C) | ["S10-C1", "S10-C2", "S10-C3", "S10-C4", "S10-C5", "S10-C6"] | ["RQ31_130", "RQ31_131", "RQ31_132", "RQ31_133", "RQ31_134", "RQ31_135", "RQ31_139", "RQ31_140", "RQ31_141", "RQ31_137", "RQ57_025", "RQ57_026", "RQ57_027", "RQ57_028", "RQ57_029", "RQ57_030", "RQ57_034", "RQ57_035", "RQ57_036", "RQ57_037", "RQ57_038", "RQ57_039", "RQ57_033", "RQ26_029", "RQ26_030"] |
| 11 | <S_HASHED_CC> = MTD_GENERATE_HASHED_CC(#CONFIRMATION_CODE1, <S_TRANSAC | [] | [] |
| 12 | MTD_STORE_DATA_SCRIPT( #PREP_DOWNLOAD_WITH_CC) | ["S12-C1", "S12-C2", "S12-C3", "S12-C4", "S12-C5", "S12-C6"] | ["RQ31_130", "RQ31_131", "RQ31_132", "RQ31_133", "RQ31_134", "RQ31_135", "RQ31_139", "RQ31_140", "RQ31_141", "RQ57_025", "RQ57_026", "RQ57_027", "RQ57_028", "RQ57_029", "RQ57_030", "RQ57_034", "RQ57_035", "RQ57_036", "RQ57_037", "RQ57_038", "RQ57_039", "RQ26_029", "RQ26_030"] |
| 13 | MTD_STORE_DATA(#CANCEL_SESSION_TIMEOUT) | ["S13-C1", "S13-C2"] | ["RQ57_112"] |
| 14 | Execute the Common Mutual Authentication procedure between the eUICC a | ["S14-C1"] | ["RQ57_047"] |
| 15 | MTD_STORE_DATA_SCRIPT( #PREP_DOWNLOAD_RETRY_CC) | ["S15-C1", "S15-C2", "S15-C3", "S15-C4", "S15-C5", "S15-C6"] | ["RQ31_130", "RQ31_131", "RQ31_132", "RQ31_133", "RQ31_134", "RQ31_135", "RQ31_139", "RQ31_140", "RQ31_141", "RQ31_137", "RQ57_025", "RQ57_026", "RQ57_027", "RQ57_028", "RQ57_029", "RQ57_030", "RQ57_034", "RQ57_035", "RQ57_036", "RQ57_037", "RQ57_038", "RQ57_039", "RQ57_033", "RQ26_029", "RQ26_030"] |
6.1 充分性分析(启发式,不作最终裁定)
- cas:
NO_MECHANICAL_GAPS(全步有检查=True;REQ 全覆盖=True;ErrorCount==0=False) - cas 物化核对(启发式旁证,权威见下行 attestation):声明检查 43 项 / 生成体 checkData 47 次 / S 标号重合 19 / 计数缺口 0 / 形态
EXPANDED;执行面FAIL(计数缺口须结合绑定层隐含断言核验,非直接判缺陷) - cas 编译器自证(check_attestation,同批构建):声明 None = js 19 + binding 24 + gap 0;缺口判定以本行为权威(启发式计数仅旁证)
- binding 覆盖示例:
S2-C3→binding:euicc_signature2_runtime_verify(PK_EUICC_ECDSA;S22_prep_;S2-C4→binding:prep_download_response_tid_echo(request-S_TRANSACTION_ID;S2-C5→binding:prep_download_response_hashcc_echo(request-S_HASHED_CC;S;S2-C6→binding:prep_download_response_otpk_extract_cross_step(5F49;S22_;S5-C3→binding:euicc_signature2_runtime_verify(PK_EUICC_ECDSA;S22_prep_ - cas 注释面登记检查(未以 checkData 物化、代码内有注释说明):['S10-C3', 'S10-C4', 'S10-C5', 'S10-C6', 'S12-C3', 'S12-C4', 'S12-C5', 'S12-C6', 'S15-C3', 'S15-C4', 'S15-C5', 'S15-C6', 'S2-C3', 'S2-C4', 'S2-C5', 'S2-C6', 'S5-C3', 'S5-C4', 'S5-C5', 'S5-C6', 'S7-C3', 'S7-C4', 'S7-C5', 'S7-C6']
- man:映射行 7;TTR 期望/实际回声 120;厂商工具内置审计(TTR 期望/实际回声行为证据);脚本字节级充分性不可完全外部验证
- cas 信息步(无线上断言义务):[1, 4, 6, 11]
- caseir open_items:
- C019 条件语义缺失:C_conditional_codes.md 仅定义 C001-C018,而 B_applicability_rows.md 行184 将本 TC 判为 C019;C019 谓词未在输入语料给出,故 applicability.condition 置 null。A_iut_capability_defs.md 行10 含 O_E_REUSE_OTPK(eUICC 保存上次未成功下载的 otPK/otSK 供重试),与本 TC 主题直接相关,但语料未把它与 C019 显式关联。
- Common Mutual Authentication 过程展开缺失:General Initial Condition 以及步 3、步 9、步 14 的 'Execute the Common Mutual Authentication procedure' 引用 #GET_EUICC_INFO1 / #GET_EUICC_CHALLENGE / #AUTHENTICATE_SMDP,但输入段无 CMA 的 PROC_* 分步展开(K_annexC2_procs.md 仅含 PROC_EUICC_INITIALIZATION_SEQUENCE 与 PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR),相应步的 command 无法展开为具体 APDU。
- #02 步骤4(本产物步 10)的 Sequence 列字面为 '#PREP_DOWNLOAD_RETRY_C',而同表 Expected 列引用 '#PREP_DOWNLOAD_RETRY_CC';步 10 的 action 按语料逐字转录 '#PREP_DOWNLOAD_RETRY_C',疑为规范笔误。
- 多测试序列归属:本 CaseIR 覆盖 TC 的 #01/#02/#03 三序列(tc 定义含三序列,Conformance Requirements 含仅在 #02/#03 被覆盖的 RQ57_112)。#01/#02/#03 的 IC1 哈希行(MTD_GENERATE_HASHED_CC)按 E 表行序物化为步 1/6/11,三序列合并为连续编号 1-15;dynamic_extracts.used_by 与 cross_step_refs 按全局步号。
- 所有 command.data(PrepareDownloadRequest / CancelSessionRequest 的 DER)与 <S_HASHED_CC> 均因动态成员值(transactionId / signature / hashCc / otpk / certificate)无字面字节而置 null 并逐条登记 unresolved(对应 der_encoding.der_hex=null)。
- 卡态编排责任、真卡资源预算与实跑取证等非 CaseIR 范围事项不在本文件处理。
7. 分类结论(封闭枚举)
| 轴 | 计数 | 说明 |
|---|---|---|
RUN_DIFF | 1 | man 通过 / cas 失败 |
SCRIPT_DIALECT | 54 | 闭包文件差:man-only 3 / cas-only 51 |
GEN_DIFF | 74 | 命令序列差:man-only 74 / cas-only 0 |
- 置信度:heuristic;需人工复核:False
8. 证据路径
- man 包:
../packages/man/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-man.zip - man TTR:
/Users/yuhu/cas/原料/切片/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys/logs/20260909_020443_ok/result/ESIM_TEST_SGP_23/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_Nominal_Confirmation_Code_retry_mechanism_by_reusing_previous_One_Time_key_pair.ttr - cas 包/源:
../packages/cas/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-cas.zip - cas TTR:
/Users/yuhu/cas/experiments/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-20261008_020421/logs/33f6cc5d_gapfix1/result/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys_01_03_merged.ttr - spec_intl:
/Users/yuhu/cas/原料/切片/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys/spec_intl/SGP.23-v1.16_5.2.1.2.1_PrepareDownload_Retry_ReuseOTKeys.md - caseir:
/Users/yuhu/cas/experiments/5.2.1.2.1-TC_eUICC_PrepareDownload_Retry_ReuseOTKeys-20261008_020421/caseir_materialized_gate.json - step_map:
—