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)
119619c282823aca18406d17e1a9798132760c3de0511039c048e302ac08f4ef
Signature (Ed25519, base64)
ownR29ZwkU4AY2CH0XwM/3GpBhXDrREq5Yg99snzsPAThKi4M9pjYipbjgTANc7XKliwk828NYWCJ4LbrpjbBA==
Merkle root
2d214bb14438515f4bedf5edd9b00a6a5113a016ba9b9fe8160d41d7e6046722
Merkle path
["119c13d67bf836455686bde96c1595c10ee459790e8b04b5f3ec00994bb394dc","d41793ef1e0973f86e84ef224967eb33adf9453af664644310221a4abe8c3d83","18bb432db23daf917c5c7b381022ddd89e99ad019812dfe7195b9dddfcbbe921","2ad77af0d9d98eb9640e09cd7bfdd8dc99a5ab31e75dcf5f27b7114e46ba9bd2","49ec4d518afc2a1203df879cba2d3f233d2ff40d4c00f8e8be919b2e039ea297","164ee4c7c6291abfb660040fb311926777d9c7b854acff4e50ff09b54bf17391","f29af66c6312dd140fa081722a0500616e3acab8e53eef10799cc9b5044532bf","c02dbfc948b74914427e38fcf28c31a958e9d47c7af80f81e6fe54cb311d5ae4","987033c94b370511f344cc91ad6edd23bcf84debd7d1f3436bd9d361997c9f6a","b81859e437784ccc5d85f40efa584fcefc2808725e16a069601e996c11cf39a4","6524509ec6f167247a2cd45e3762fc6c559758c07e1a3635b8c25ecf53d4bb52","ebdcf4f2d06ecaa7512b4e82d75b0892ee788e93cc90eec4b56bdf4af103e975","c8e78357eabd343df2a6d1ad8a9c122f986bc772443ab896b1e0fa855f0ebd28","35ea2df06612b261a549235c4e62b3e1ad1789f05da56f9ca671421e5071b72b"]
Anchored
2026-10-12
Public log entry
search.sigstore.dev, log index 3220562278 · entry 108e9186e8c5677a2753…
Expected log hash
13907aa3d3da271016c4b5e75946c4440692c6b4e1684187b965dbb983b157f7 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":"v1791777669660","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 (2d214bb14438…), 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.