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.

“Terrible, I paid through the app.”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
af603bbcf1a7a23112b84ae819a85271da2f792fbda929c0936e2ce0cd987d44
Signature (Ed25519, base64)
hosFz1OgWbLi5mJp2WYSXLDSqiy8jn6nFWqz+YbHJ3o9+4uV+4cld78tnHkoMM+3F9LS0o+6Dj9XreMM4JVJCA==
Merkle root
2f068f3de56bebe7a575ba4a979c9244445d2350140e36238e088fa40fbfdd88
Merkle path
["af5bf7e33eedb1fc77570f31a39584e5d838fbdc89b2be05206d698a597a4667","a04f962cff343943530272823f9d744bee335e983b1710b440db095ac4065bf6","5adb223e88e9d9321f868cdf87c8520018cba5ffbe21eaf5e2cab1ce82167fbf","f3cd74296e2c4288c7c709081fe62e455c9a096cc41a3234203c4fce767b4f40","041f92e2b4966e055f98a522bb750b84c3b58cccac752d5edd58cd111ae1490d","04b8ed831dc67c2756b3af0ae453c643c65fa81e4e4565eb65784976c31dbb9d","0d0273a880630218de877ed1f735189b1ae25a94719fe2e832f5dbd99dd465b5","52318bae10464ff0c670d8e9ecba28d37b8005c6efb5fbf46d6aa88cdc0a0b03","3f0a6c1a869317b67a71924015d7ca1609eeff2e82772c4c08d397364fcfb60d","289a288a3dd99531088a0a5a04240a7cd0a08cfa94a37d50b01d83e5e4bad9e8","86c12730349fc5d6ac0f2950e37fc472c8263259c13a59ef5e1e26828166b9d7","bcaffb66f7637f1faea00b39e1b086b5c8748b956d5fec046d9c8718408ebc96","27978d996981aec54e7305bc9bddff422c8ed02487f8eaef12f84d0b2ba90b9f","537f00dd60bfbd8c049786f7eae4da8a735af5b60dacd3bc1b6054b8ac3175e3","58a3dfc9ad8696e92f5fc9960e9c6bc4cc04e270091b574a948593298b33d1f5"]
Anchored
2026-09-20
Public log entry
search.sigstore.dev, log index 2893887498 · entry 108e9186e8c5677af79f…
Expected log hash
90099e0300c6e23b62e79318296ebab91bff130379d248ada57f044f77e72ccd 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":"v1789796056710","kind":"published-quote","locale":"en","page":"theme:uairango/price/en","quote":"Terrible, I paid through the app.","rating":1,"review_date":"2026-04-02","source":"Google Maps","source_url":"https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2xCMWFGTkViek5XTFhWR2FUWmxWV0ZDWVZWMWMwRRAB!2m1!1s0x0:0x326fc92b265465ef!3m1!1s2@1:CAIQACodChtycF9oOlB1aFNEbzNWLXVGaTZlVWFCYVV1c0E%7C%7C?hl=en","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 (2f068f3de56b…), 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.