在下方粘贴一份 Intramedial 签名账本包。验证会在您的浏览器中进行,并使用我们已经公开发布的公钥。您所粘贴的账本包绝不会被发送给 Intramedial——浏览器只会下载那一组公钥集合,仅此而已。
读取 JSON,统计 records 的数量,并基于它们的哈希重新计算 Merkle 根。该值必须与已签名的 merkleRoot 一致,且 recordCount 必须吻合。
账本包中注明了一个 signingKeyId。请将其与已发布的密钥集进行匹配。密钥 ID 必须由密钥本身推导得出,且该密钥的司法辖区必须与账本包的一致。
对 11 个已签名的成员字段进行规范化处理(RFC 8785,JCS),然后验证 Ed25519 签名。账本包中若带有 otsProof,会予以显示,但在此页面不做验证。
TypeScript 验证库已在 npm 发布,并提供可离线运行的命令行工具(MIT)。两者都可在您自己的代码中验证账本包,无需回调 Intramedial。
import { verifyLedgerBundlesBundleWithKeys } from '@intramedial/verifier'; const keys = (await fetch()).json(); result = verifyLedgerBundlesBundleWithKeys(bundle, keys); (result.ok) { console.log(, result.details.merkleRoot); } { console.error(, result.reason); }
示例是一份包含三条记录的账本包,由一次性测试密钥签名,并用该密钥验证,而不是用 Intramedial 已发布的密钥。篡改版本改动了一条记录的哈希,因此这些记录不再得出已签名的 Merkle 根。
/.well-known/ledger-bundles-keys.jsonintramedial-verify ledger-bundle.json \
--keys ledger-bundles-keys.json
# exits 0 when verified, 1 when not