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.

“This app is not free”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
21c1b80d09475545507763f9011c9a6b216e6763062d4d85f5e44d6595a8756c
Signature (Ed25519, base64)
VGMHviQXYg66unyNDrYyF9E/eHQ2cBDFg0I16TN4dOgF7/1v2IW4PecmWRnadZHPdHGYcdIewytVzjnU3Ep4Ag==
Merkle root
0b0c0499033d3f9b3953d31e6c838f88f12988dba810dd4de44922e1b60fcdf6
Merkle path
["21ba5c4ff8388b030f6e2c532c6a47da9d5df893fe4f2329b65bb1b5f5bab8f5","deaa8dc6befd97b736b48dbfdbb2cb18b6a9bae7025d4a74adc3e8dc2f34c94b","af4c682bf7d8bf4fd5427a35d3e061c8c28b03aef5f71d02af2b81a2f7fd0c2d","5968356087293a7f0b4a1b85e7cc81473e365f7120c570482c6a147a0792d387","ad2b0ea457a6ee37af508f7815278b7d0cf27daa9f89fc63847d324b5ed7b5c7","2511142fc88fae706f5aee902712e06aebba64d3ed0296ab7d2f275ff6af091d","5f04e73c09017494fe11fb3cd53a7a827c9cdcbc9cf6b55c46cf3a685697974a","92db0c9e71b7862d5a6998a307233677dd9d43d1e869d7921224c7a7769c27a6","349c808faa6b6686ac19fb41e1f04f1e6ba5d57f3af35e68b7433a433fa12985","64d86e60ba50f0d28b35dc040fcd4452c5f994b4e63cb3f350c55de0f9ab904d","97bb581f373ac1585fd287a96ec92f37e16a17e7e09f4b197ef739b8fa5c9cc2","fd4caa7c5bda5b821309f24a41bde8275c1fa51be2629af50c760cc53c258d5e","fe7751fa4b9a0ad43fe0710628b6cb1b92e12eb8a60d9f17eb0c0764d693577a","8a05b9e19287b30c7fb54816a1fb848939f3f2c84b9825f19f342683d5db13aa"]
Anchored
2026-10-13
Public log entry
search.sigstore.dev, log index 3241084060 · entry 108e9186e8c5677a3e82…
Expected log hash
a291e2473f1a4510a666e020d4d424e463d55bf4677b91eb5a52e446e5ff1581 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":"v1791865115768","kind":"published-quote","locale":"en","page":"brand:surfshark","quote":"This app is not free","rating":1,"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 (0b0c0499033d…), 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.