Quote verification

This proves the quote below is recorded by Citatio exactly as displayed and has not been altered since it was committed and anchored. It documents Citatio's crawl observation; it does not imply endorsement by the source platform. The quote links to the original review.

“VPN errors”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
2abcf47ded067e540a28aeee35bcd8e2b9c759b43f23b1787becb4b4f20fd3c2
Signature (Ed25519, base64)
0DU1vChAy1RkCInhrmHiXtJg+kV0XPb9hfPxgWhJEgjanAiUHxw4bCIdbsS4cmuNpWeoWtFxMGAs4SOzWDJqCg==
Merkle root
3e1c67438f658ba7fd015e6979c1bfd82d90efb0848cecbd4d902d6b2ed171d3
Merkle path
["2abcc95e32ca48c87683e2167edad5ce45e86b005ab31bfdb1b926f3cd6e0408","dc62a8437ca4f19641fd76a6fe8a3ca19561dafc1bcf9b6cf9fb9cd838fdc60b","bf30f058f392cca3e6c48907b4b7a2eaf988c5226b3b6506fa8e6456504140d7","89ca6208bba74f5c6cbc50f0be74f024117e2537a7a31e6f9f021c3bc9921762","eccf7f084137af23b5e68aa8d5ff2b1d8383763ee15be58e5d28ed3d0a3f5eed","53169de4aa1d3699002ca2e988096e4f002fff68a01ca5e131f4077612711be9","c8a8999822f0d85ee901009cc05c6d2ff9ae98a22c266ec1f1ae759d6045b73b","69545facc1dec073713eba511568ce078b9bd074f5c736d5a1623c23c564a1be","ed316fe476301a7adfaf6b35c23e8f76b1618c58df58eb15b81271e646a4d0ec","854c0d4f14601d9b0657bde1bd4bf6af0077b1b29d37a74a2c3029de84d543eb","18cfb55f975815f990cbdc4419b39463e6403b7ccc2d68765c89e0b47cf2daa5","ce333c93e3984da7f16c5ed3f2f448c49b90d782d063bee66c0799caeeb52526","fb183b6f6365289d9e03a04ab6a5ee3d62de93cb7a6ce2bfeccdcb2ed00acf48","0790a9ec23117ba3e0ba9a310290906a4f1d2b0055d4607b106ab21651087c1d","db72b82118c1e08b77018004fa72584377d6eccdc4c75ec19bef6a78273f75c9"]
Anchored
2026-08-20
Public log entry
search.sigstore.dev, log index 2524810465 · entry 108e9186e8c5677af074…
Expected log hash
129b219cb6155ac24569a579c61e8fc9cc2d89305732944b8849d5e719dfd073 The log entry's spec.data.hash.value must equal this value: the SHA-256 of the Merkle root string above. Recompute it yourself from the root to confirm.
Canonical record
{"dataset_version":"v1787193927339","kind":"published-quote","locale":"fr","page":"brand:proton","quote":"VPN errors","rating":4,"review_date":"2026-08-13","source":"Google Play","source_url":"https://play.google.com/store/apps/details?id=ch.protonvpn.android","v":1}

Verify in the public log

  1. Open the Rekor entry (pre-filled with this proof's log index).
  2. In the entry, compare spec.data.hash.value with the "Expected log hash" above: it is the SHA-256 of the Merkle root string (3e1c67438f65…), which ties this proof's root to the log entry.
  3. Decode spec.signature.publicKey.content from base64: it must equal Citatio's published key at /.well-known/citatio-signing.json.
  4. The entry's integratedTime is the independent timestamp: the root, and with it this quote, existed no later than that moment.
  5. Locally, without any Citatio infrastructure: SHA-256 the canonical record (must equal the record hash), verify the Ed25519 signature against the public key, and fold the hash through the Merkle path (sorted-pair SHA-256) to reach the anchored root.