# 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-html/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`；sha256 `00d5bd5fed885ba607f0f5eaa7e16ecc7492900958c86b2a5df85a43b5d852a8`；171104 bytes）
- `-cas`：**NATIVE**（`../../evidence-html/5.2.1.2.1/cas/TC_eUICC_PrepareDownload_Retry_ReuseOTKeys.html`；sha256 `368249afb7c66615002e079164aa56532271f050c0330abf20ceed15b71def1e`；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 |

<details><summary>unified diff（截断预览）</summary>

```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 行，此处截断）
```

</details>
### 4.2 UCE/命名对照

- 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：`—`

