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.

“Very easy to use”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
2c87ea1a51d013a2fe71fee83bc70c84b87671280e1fbe5542bd54aa0d739bb8
Signature (Ed25519, base64)
00d45B/2VksD+TdjwguGu+C1MVGG72TOAW+IVhOWg4evm0SqUfmdUHKTXP42CeFh8G1vrmHbP0KSsd0f2titBA==
Merkle root
ffbc979c8901fdf55f43c5151768b18a738fc1c271c9b2dc97349c3fa8ed35d2
Merkle path
["2c8935f901885fe9e6d92083e1729e17dbb481f2de03f7a57443073ebcb6708e","b7fa78bc9013a92c6896ba9b4085800b08b49a6ba56c6a69695aeb93d9255083","1f960cd10efdc0f26ecdfbf651bfbe9faa127ecc2b06e895dbe1f2691030366b","f4924f13991449dd549ed4a08059ee6686761f57924602bec40ea2ac02619158","59d83a5b02cbd0e94d396b8d643d113051452a7978c8fd08339984d7fe75db74","5db0cec15931522cac39231e6164ca568b908b21f1a8f9c3b89b476550d3c357","9215b7a06fe3176ce2016c6ab2471d90dd746917f543b74cd0b5fe453111d966","f05faa19f9f930e92b9c18ebb77fe4c73b86ebedbccdcf73329f18f1b3c71a75","99a0265e0affa8e2bf04f216308e2b8f7c17b56cb1983878872dd64a1f17d6c3","b36edab723caaacf652a98364cb5b5c80ecb3e3db537d01627a6448fe8d1ae7a","93e9ef4d70b0bfde7627411de1f2a7b2718f2effde73028a86eb469cb3475c49","7db894157ed9dabb03cb2365fb7f1c3175f5c464a5f6fd3024b83b95573cd6d5","81757bca5afdb109f23b2b1ab2e08f434f626af25e986d2585973e2409a82e36","2f35432083547a52411b4b8128ab118601abc6a6e158a38894add0923255dc0e"]
Anchored
2026-10-11
Public log entry
search.sigstore.dev, log index 3199173952 · entry 108e9186e8c5677a85d2…
Expected log hash
3bc66074c7b0a853326bf5ba0590a111eee6455dac5c98c791c22eeea9a48920 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":"v1791689192448","kind":"published-quote","locale":"en","page":"brand:surfshark","quote":"Very easy to use","rating":5,"review_date":"2026-09-05","source":"Google Play","source_url":"https://play.google.com/store/apps/details?id=com.surfshark.vpnclient.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 (ffbc979c8901…), 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.