Skip to content

XHIM Apple iOS 接入验证记录

验证日期:2026-07-25

范围:iOS Development 制品、真实 XHIM Server 接入与登记真机, 不是 Stable 商业发布证明

2026-07-26 流水线修订:下述“已通过”保留为 2026-07-25 历史 iOS Development 证据。正式门禁现在要求另外构建 macOS arm64/x86_64、绑定 Build Manifest/制品 SHA-256 并完成空白消费者验证;旧制品不会因脚本升级而 自动获得这些证据。

Apple 资源

  • Team:Bazhou Xihan Software Technology Co., Ltd (FG4922H85G)
  • Explicit App ID:com.xihansoftware.xhim.demo
  • Push Notifications:已启用;
  • 开发描述文件:XHIM Demo iOS Development
  • 测试 iPhone:已登记到公司 Team;
  • Apple Development 与 Apple Distribution identity:本机 Keychain 可用。

仓库没有保存证书私钥、APNs 私钥、描述文件或设备标识。

已通过

  • SQLCipher 4.12.0 + CommonCrypto:
    • iPhoneOS arm64;
    • iPhoneSimulator arm64/x86_64;
    • sqlite3_key_v2sqlite3_open_v2sqlcipher_version 可见;
  • C++17 内核以 -Werror 构建两个 iOS slice;
  • Apple 原生 Product Adapter:
    • URLSession HTTP(S)/WS(S),TLS 使用系统 SecTrust
    • 生产 HTTPS-only/WSS-only、禁止重定向、响应体/帧上限和通用取消;
    • 默认 HTTPS/WSS fail-closed;Development 构建可双重显式启用同网 HTTP/WS,Production 构建拒绝该开关;
    • Endpoint URL allowlist、有效期、Key ID 与 Ed25519 签名校验;
    • Epoch/Connection Generation 旧结果隔离;
  • Keychain Database Key Provider:
    • 使用 SecRandomCopyBytes 生成 32 字节随机 Key;
    • 使用 App Home 相对路径生成稳定数据库身份,容器绝对路径变化不轮换 Key;
    • kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
    • 缺失/读取失败时 fail-closed,不回退明文;
  • XHIMCore-development.xcframework 创建成功;
  • XCFramework 使用公司 Apple Distribution identity 签名并通过 codesign --verify --deep --strict
  • binary Swift Package 的 XHIM/XHIMSwiftUI 编译成功;
  • XHIMDemo.app 完成 Simulator arm64 与 iPhoneOS arm64 最终链接;
  • iPhoneOS arm64 Demo 使用公司 Development identity、专用 Profile 和 aps-environment=development entitlement 完成构建及严格签名验证;
  • 已在登记测试 iPhone 完成安装,系统确认 com.xihansoftware.xhim.demo 版本 0.1.0 (1)
  • Simulator 覆盖安装新版本后仍能用原 Key 打开 SQLCipher 数据库并恢复历史 消息,验证更新路径的稳定数据库身份;
  • Bob Simulator 已通过 http://<Mac-LAN-IP>:18080 登录到 Ready,完成 Outbox → POST /v1/messages:send 200 → PostgreSQL sequence=3 → sync/ServerAccepted
  • Docker Compose 中 PostgreSQL、XHIM Server 与 TLS Gateway 均可运行;
  • PostgreSQL 消息 Store 集成测试覆盖首次提交、幂等重放和 Alice/Bob 双方 Event Stream;
  • 两个独立 macOS 客户端数据库已通过真实服务器完成 Alice → Bob、Bob → Alice、ACK/Sync/ServerAccepted 和双方已读序号闭环;
  • XCFramework ZIP 使用归一化时间与排序文件列表,同 Commit 重复组包 checksum 一致;
  • C++/C ABI CTest 23/23 通过,跨平台 Wrapper 门禁通过;
  • Git 检查确认 Apple 私钥、证书、Profile、SQLCipher 源码和本机构建制品均未 被跟踪。

已落地但仍需正式输入重跑的门禁

  • build_sqlcipher_ios.sh 同一受审 SQLCipher 输入分别构建 iOS Device、 iOS Simulator 和 macOS arm64/x86_64;
  • XCFramework 保持 static-library 布局,签名对象明确为外层 XCFramework Bundle,不再假设存在 .framework 子目录;
  • 内嵌 Provenance 记录 Commit、Toolchain、Product Adapter 源码 Hash、 SQLCipher 输入 Hash、Local Preview、数据库加密和 ABI Header/Baseline;
  • 外部 Build Manifest 绑定签名后 XCFramework 完整目录树 SHA-256;
  • Production 组包要求 Build Manifest 与当前干净 Commit 一致,且 mode=production、Local Preview 关闭、Product Adapter 为 External、 SQLCipher/CommonCrypto 和数据库加密均为必需;
  • Slice 验证覆盖 XCFramework Info.plist、每个 Mach-O Object 的架构、 Platform/Minimum OS、完整 xhim_v1.exports、公开 Header 和 Module Map;
  • SwiftPM/CocoaPods 在临时空白消费者中构建 iOS Device/Simulator 与 macOS, SDK 验证不调用客户 App 证书或 Profile。

这些项目表示“门禁代码已具备”,不是“正式制品已通过”。仍需用受审的 SQLCipher 源码、正式 Product Adapter 配置、干净 Commit、审核 ID 和发布身份 实际重建并保存 CI 日志、Manifest 与 Release Attestation。

尚未关闭

  • 真实 iPhone → Simulator 的最终可视化 Alice/Bob 互发仍需在已解锁真机上 完成最后一次启动记录;Development App 已完成最终构建和覆盖安装;
  • Keychain/SQLCipher 已接入并验证模拟器覆盖更新,但 rekey、备份恢复、 卸载重装、锁屏首启和多账号真机矩阵尚未完成;
  • APNs App ID 已就绪,服务端 APNs/FCM/Huawei Provider、设备注册管理和失效 Token 停用/审计已经落地;iOS 客户端真实 Token 注册以及 APNs Sandbox/Production 黑盒推送仍未验收;
  • 2026-07-25 已验证的 XCFramework 仅含 iOS;新流水线要求 macOS arm64/x86_64,但尚无用正式输入重建并通过的新制品。Mac Catalyst 和 dSYM/符号服务器仍不在本次证据范围;
  • 当前 Development Endpoint/Key 编译进制品;Production 必须换正式域名、 KMS 托管密钥并在干净 Commit 重建;
  • 正式 Privacy Manifest、严格安全扫描、SBOM、律师审批、容量和全平台真机 矩阵尚未完成。

只有“尚未关闭”项按正式发布门禁全部完成后,才能产出 production 并对外声明 可售卖。

XHIM 客户端 SDK 与服务端文档