旧 OpenCerts 与新 TrustVC 校验不同:按格式定位身份、撤销和空白字段
链小知 · 进阶 · 核验 · 依官方文档整理
从原文档/验证日志辨认 OA 与 W3C 路径,排查 DNS、DID、状态列表和 renderer 包装问题,不把迁移文档当已完成机构迁移。
开始前准备
- 准备授权的已有脱敏文档结构、验证fragment/错误、应用/库锁定版本、环境配置和renderer字段记录;仅查看已有材料,不上传、发行、撤销、签名或请求业务网络。
- 范围为OpenCerts产品v3迁移指南及TrustVC固定250079…包2.15.4;旧证书不需持有人修改,机构迁移日期是指导。缺部署/网络/结果时保留未知。
1. 分别记录产品、文档和 SDK 版本
列OpenCerts界面/产品版本、OA wrapped v2/v3或W3C VC格式、@trustvc/trustvc锁定包版本和原验证时间。当前产品v3使用W3C VC2.0;OA wrapped v3仍是另一格式,不能因数字3相同合并。
固定core.verifyDocument用isWrappedV2/V3判OA,其它走W3C verifiers,返回fragment数组;不认识的对象被路由不表示有效W3C。固定2.15.4与用户包/官网部署不同,不按main源码替换真实版本记录。
检查结果:产品/格式/包版本各自明确,错误分支未误判迁移成功。
2. 核旧 OA 身份与链配置,保留兼容代码边界
对OA已有结果查看issuers[].documentStore或certificateStore、identityProof.location/type及所用链/Provider;同名DocumentStore不足以识别机构。主网/测试网、地址错误、contract notfound或RPC失败保留原错,不当篡改/撤销。
旧Verifier文档和固定OpenCert兼容代码仍有Registry分支,但官网称Registryceased;没有DNS身份或旧registry证据时应标身份未证实,不能用一个SKIPPED代替其它issuer全部通过,也不新调用链查询补造记录。
检查结果:旧OA的身份和链范围可追溯,兼容逻辑不被当当前注册服务。
3. 核 W3C issuer 与 DID 方法,区别解析和签名
W3C原issuer可'did:web:机构域名'或对象id,保留准确原字符串。核proof.verificationMethod的DID主体与issuerId;固定实现不一致返回INVALID,即使网页能显示issuer.name也不算匹配。
did:web域根对应/.well-known/did.json,路径DID对应/department-a/did.json等;已有解析日志中HTTPS/CORS/loader读取失败可让身份片段失败。固定实现还接受did:key自证,不能概括所有W3C必须DNS域名;解析、签名完整性和机构认可继续分开。
检查结果:DID主体与解析来源相符,身份失败不被用显示名覆盖。
4. 按 credentialStatus 拆出目的、索引和结果
对W3C记录保存credentialStatus.type、statusPurpose、statusListIndex、statusListCredential;多项status逐项列出,不按credentialStatus.id末尾数字猜真实index。原索引按字符串保留,不替换或翻转任何位。
列表是托管的已签VC,0/false表示相应revocation或suspension标志未置,1/true表示置位。固定状态fragment先处理error→ERROR,再全部false→VALID,否则INVALID;网络/格式错不能填false。无/空status可由EmptyStatus给VALID,但结论只能是未配置该查询,不保证不可撤销/永久有效。
检查结果:每项状态目的、原索引/URL与错误或置位结果完整,没有ERROR→active。
5. 定位 renderer 的字段搬移而不重新签发
若验证记录与展示不同,核旧OA $template.url/name和新W3C renderMethod[0].id/templateName;证书数据从top-level转credentialSubject,issuer/dates仍在外。姓名/课程空白可能是旧模板读document.recipient而新字段在credentialSubject.recipient。
官方getDocumentData将W3C和OA v3取credentialSubject,OA v2 wrapped用getDataV2;该helper也能显示raw预览,因此渲染修好不是签名通过。Renderer文案“旧证书neverexpire”不能覆盖validUntil字段或撤销结果,不把有效期删掉。
检查结果:空白字段绑定具体路径/模板版本,格式化展示与验证分别记录。
6. 按原 fragment 与配置提交故障清单
报告含格式/版本、完整性/身份/状态三类原status/name/reason、DID或旧Store来源、有效期、renderer路径与缺证。verifyDocument options可有documentLoader/rpcProviderUrl/provider,固定provider覆盖URL且为ethers v5;这不保证每W3C会发链请求或兼容任意节点。
只交付已取得的原记录和错误范围;不运行signW3C、issueDID、revoke、setStatus或修改凭证。旧OA继续接受与机构应2027-03-31迁移为官方指引,未证明该机构迁移或该凭证当前验收。
检查结果:读者能按版本/字段/访问路径定位故障,签发和状态变更均未混入诊断。
怎样确认完成
- 形成两格式的身份、状态、渲染和错误对照,保留当前部署/网络缺证。
- 仅documentation;无私人文件验证、业务查询、签发/撤销或签名。
常见错误与边界
- OA文档v3与OpenCerts产品v3/W3C不是同一版本维度。
- EmptyStatus VALID不查列表;enum404/500也不能直接当真实HTTP状态。
- 迁移示例及源码不会证明具体机构完成迁移、任何网络可用或无费用。