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)
18a05c77395b9d8d2b866b466ec1efc74378d4e44b5bf477035d4cbfa87bdce3
Signature (Ed25519, base64)
aivGgvS0eL3uUBfZwDm2y2ySaBgW4Bb7MWb4aKlshReFFo5+NZPV8BD4cGvwiBnvxLu15cCZhlYJOYTSSOQRDQ==
Merkle root
1da6cf8d96c8876e66e82e9bea7529c76d7e25eda1c07550505caa1baa49c4d1
Merkle path
["18a98f6c2d8a41f08a6d9f9acdf70779abc8ab855637d8a91d01f17cf1c5fca1","458fe4f48d7e1be9184868ff9e1035bde3ab36728ce187bb537c5de53fc55d1d","f06c22b0cffcaa32b7b3ecefeea46f4277a5cfa45420533ff1a5767342649d89","9df21b680c76840977725d5cfc93d0dca57e19ed8112bf92952fe4e8310d0b9c","2c67c91bf74e1be0ee1bd25430def145a42650d31922d0189f33ccc15ee09bfb","a63d45811f592f81366d45cd268a1f6366ec2028953ef315daf632c8a27749c0","5845cd863ba9f0babd1a0196bb54de837debbc10d568ba70086a88c9a7347e8f","84ef2c9a6026790ac40f4964e026e5e676981fb8a364f50f75d46a8f65321607","71170b58f13b35236e2f74dbac7e0bf4f27487304edde1a5a30c9ffd85c27c25","82cf3938827fa9fdaee060126f8a9a71e48049337c248c8a1c96462a2edfedd2","4538d2af88491ec228f1721babceab1a37ac1f9230be10303e5ffe866b674232","ae52329abaf68e9da165e516499bae5b8b1835a4e008f4e52a7a7b160cafc13f","d0886e619546ab8e630cf9041b21d39a146861d5b7598b5044808c3537212a80","2d81003ff1cd2149e42eace973cb0f4cdd39b653f7b06a20804a1f1025023ebf"]
Anchored
2026-10-13
Public log entry
search.sigstore.dev, log index 3240367269 · entry 108e9186e8c5677acf8a…
Expected log hash
f6397ecd2b8639a3c60345d0c567eb602411c7eb1bead248c760bae850816087 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":"v1791861381931","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 (1da6cf8d96c8…), 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.