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.

“It's free, easy to use, and has all the features I need”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
206ae28c3fbd0b1edbba31b5514489450f52ba01bf7be8b26f53118c31eaeaf5
Signature (Ed25519, base64)
vb4tVOXATP131ACmbarnrCohu3hemXnS7hLz8zfhNZosBztZRUz3Jzgpz2MC5c69pIQd23MIJjBUQuENq9EuDQ==
Merkle root
dae11b7f399fa27d7e91aa4463415971ac3f4413815a3c608e4b798805e78c60
Merkle path
["206cf2bcda3bde2f0606db9851cbb9346bfa30c56a6fa0f7ec4c151c348c6a13","a9e08004761565ef1febfadafe6f84c095ba0a9fbc83ac634563a110e2f50758","ec6ffde80712ee6a549a0356eb1f226fb3dd51c8d1fc8f5cc4db047f5a398131","e6274de1afdb24d0d869cb8ef5c9e542558eaf6b25197a78e937eff9e7535eaa","fdc4776d660d74d2680bd9b0772a13ee5f3c97710332ac10b6edc18920e3a827","871d00b583cbffa29b90f7f11a81503fe1e955046d402fed1a906c9ecbd05f92","f60e9e225a2b1238f90dfa5a93b27e2debdd6442a113ea5bfd9bf670b71529c5","082f2802f3c15ceff57a5de72f187853dee0ea5c2d4689f76c9eae698878e882","2743f8fde54abfcadb418ee713e597dd66a8a210baea1e0a47d97b79c86c2e1e","b3802765674300064a9b228104a7c9947a3dd7480d0f6fa05e9af2fbb68d1c10","77642b0c9892cdc8c55c060d52c1a635ccefb41f6f9c50eb7718b4397641f27a","d28b518c1e91bb83feff8340555603f363c583d1320d4d2a822f1097a3b82d1c","14af96598cf9d6cb016b0fed730fb6c3e41450ab1c3ebbb7f845ad928e8a42fb","29fee1ee29171f2526142193c918f4d151680a806133c34179179c2fe722d806","6771b856bc54b9b41031b35ff7640ad54c5be8f800e1967d73d242437a9508b8"]
Anchored
2026-10-09
Public log entry
search.sigstore.dev, log index 3161668256 · entry 108e9186e8c5677a744e…
Expected log hash
dbaeb9745833827bd692133822ce98bad4dbbf6d52d00fcfdadfb4c533d214a6 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":"v1791537031439","kind":"published-quote","locale":"en","page":"brand:xodo","quote":"It's free, easy to use, and has all the features I need","rating":5,"review_date":"2026-07-25","source":"Google Play","source_url":"https://play.google.com/store/apps/details?id=com.xodo.pdf.reader","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 (dae11b7f399f…), 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.