HiveSilo public verifier
Certificate Status Verification
This verifier shows only public-safe proof metadata from the daily signed Trust Center manifest. It does not expose evidence bodies, topology, business plans, product IP, or raw PII; detailed evidence packets remain behind approved access.
Signed Evidence Room
Signed status and reviewer-access evidence are refreshed daily without exposing packet bodies.
Last signed 20 hours ago
- Status
- Live
- Last verified
- 2026-09-15T00:00:00.000Z UTC (Sep 14, 2026, 8:00 PM EDT)
- Next refresh
- 2026-09-16T00:00:00.000Z UTC (Sep 15, 2026, 8:00 PM EDT)
- Signing key
- hs-ed25519-2026-06-23
- Merkle root
- fa8e71c0b8879c21015c53bf2d57c023a9904b53f2983f8ba8789728974b4bee
- Certificate leaf
- 8760179fdf4ce6f0a6556976bf410cdf7d9fc3144f0b64f5f7f4ae41cd34928c
- Root membership
- included
- Continuity
- Signed daily for 75 consecutive days, last signed 2026-09-15
curl -s https://trust.hivesilo.com/api/trust/signed-manifest.jsonJSONVerify this yourself
No trust in our server required
The verified badge above is computed by our server. You do not have to take its word for it: the daily proof is also published as a signed public manifest at /api/trust/signed-manifest.json — a canonical JSON object of hashes and timestamps with a detached Ed25519 signature. Download it once, download the public key from /api/trust/public-keys.json, disconnect from the network, and check the signature yourself. The full Merkle root shown above must match manifest.certificateTree.rootHash inside the signed manifest.
- 1. Fetch the signed manifest
curl -s https://trust.hivesilo.com/api/trust/signed-manifest.json -o signed-manifest.json - 2. Fetch the Ed25519 public keys
curl -s https://trust.hivesilo.com/api/trust/public-keys.json -o public-keys.json - 3. Verify offline (Node.js crypto stdlib only — prints VERIFIED or FAILED)
node -e "const fs=require('node:fs');const{createPublicKey,verify,createHash}=require('node:crypto');const c=v=>Array.isArray(v)?'['+v.map(c).join(',')+']':v&&typeof v==='object'?'{'+Object.keys(v).sort().filter(k=>v[k]!==void 0).map(k=>JSON.stringify(k)+':'+c(v[k])).join(',')+'}':JSON.stringify(v);const m=JSON.parse(fs.readFileSync('signed-manifest.json','utf8'));const d=JSON.parse(fs.readFileSync('public-keys.json','utf8'));const key=[d.currentKey,...(d.historicalKeys||[])].find(k=>k.keyId===m.signature.keyId);const b=Buffer.from(c(m.manifest),'utf8');const ok=Boolean(key)&&createHash('sha256').update(b).digest('hex')===m.signature.manifestSha256&&verify(null,b,createPublicKey(key.publicKeyPem),Buffer.from(m.signature.signatureHex,'hex'));console.log(ok?'VERIFIED':'FAILED');process.exit(ok?0:1);"