主题
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_v2、sqlite3_open_v2、sqlcipher_version可见;
- C++17 内核以
-Werror构建两个 iOS slice; - Apple 原生 Product Adapter:
URLSessionHTTP(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=developmententitlement 完成构建及严格签名验证; - 已在登记测试 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 并对外声明 可售卖。