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.

“there are too many ads”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
21f7d565103df3865b1119341e668670f13afcc91f5e33f2a4ba6c36e7530bd0
Signature (Ed25519, base64)
6vqxlk6kta2VMjgij7EWF+LG9OHwes7+U/y6DUO7E0lf60PTv8iYHYvGn7I8i+ZH6412johfb7W46713BgT1Bw==
Merkle root
afb9ffbb4b4e88017e1c868247f919ebcfe69f09127d391e7daa08019eb2b63b
Merkle path
["21fa960815e244a460d1f8fd7cf3269e269bbdc4625d4eae5e349ecb15af98f8","bfa7c8da9f9c79244bf3fde736f4db7d65ba19fd494e849d8f6fa6bbe509b007","54108e429720f1f74a6ab6d7b0b792928123d0fe3923bacb97f69a53081375fd","58e2f6f37f640921ffcbd091947651817ae3319d036b5bde661f45b45935b92d","65fcb46d21b34ef4e2fd7c85fb5e8f88945ac1b1407a9a8ab275f266fa66e5a6","b893edf7d412bfeb6cd25628f6dea200d3d56d32375a9ab4fae9318f11d4c267","efd1263b9c69b29bdebb80902167dba1ac7079123ead707183ea858a6b4ca180","53cca6ed96347a798346cac10bd1d35a27d6ea305067a9280b3a915a881fbd25","d558565b3b4b5acc4a0c1cded786e9d36ada9313371454858331d788eb4488b8","71bd130de45707ab98c550eab03b0447b4b4f0e3ebb413a01e15a5ad1f7620ac","f83944b16fbf43a8904cde916c26d245f82f3fecd41aad7e2fe680a6de8825bf","e7d5f6e88126b47f3ee25c7741cdcaebb40c6bcd9d35a859108e3ac93e8a0b29","09648cb4275ce9eb9f26709778da1b3653a6ea84465537d5f6fe5c1b17d3cea0","15ecb20ce6559654c94b8b858c027c014996a92eb19771813db0b794d6214fb6","72bbc4ee0a973113b1d556f76d02fea2c4704794a0d313a96e49ff7b6174dec2"]
Anchored
2026-10-10
Public log entry
search.sigstore.dev, log index 3178115911 · entry 108e9186e8c5677a2bba…
Expected log hash
a144ffc32dfaa9fe45b4895b7f4c17280667152868dd8de227ca2811c60c870f 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":"v1791604579182","kind":"published-quote","locale":"en","page":"brand:spotify","quote":"there are too many ads","rating":3,"review_date":"2026-09-19","source":"Google Play","source_url":"https://play.google.com/store/apps/details?id=com.spotify.music","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 (afb9ffbb4b4e…), 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.