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.

“I was signed up for automatic renewal and I am still trying to stop my subscription.”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
2c8904f3471ae59b15ebea423ec9bce683c155b506a08e7a7971606cdf6dc4df
Signature (Ed25519, base64)
9jEKOB1Nm7gMAFYsiKSegITSeQPfihSCNax0ifoUcMnj1wVSXpOe4BoclOONakMrSbDmEfzmBStVeTOpRU25CQ==
Merkle root
8af5f2f3f65c47a75dcdddbf363e3e76b22d37f4e953d150fcfa3e84bb04dba5
Merkle path
["2c8c786f102691a37d36dd676d7812553d98c8d331a181186252941703465d16","301cf6a3a524420966e001f0c90314388b087b44560d67c72fec1076c7e1c446","3ba83965b26e944da44b7d3a6a94687e2d9958a9aa82c82ec0fe72fd4d55b041","d4fd9ae794c7c220b1f60cd35e74a4616f92da9c248d47d17c223357e91d1085","f5cff7453ed5d50263400de21ae4c3e4b0ae5ff53a0a82e3fb84b99ca875a28c","9d1c6fef10055521f6cd43b3a1f8f667445f731ba5745ab6ab91c19fd0f28574","c1ae0f88cb7f89875fb94e25167dfe4c4b2f80f269b8eee977e7890af5d4d24c","3cc3b5087cb9dfc7519af3087c2eca8234bcf4b48f6a5abc7eacc50e32567845","754f91213917aed050a91f2394869a6c27b878878d4318a74c501780f70a9173","ea17c4110a172c543048bb89f394c864a8d90f9cc529b7dd64029949bc8e061a","f85dfdd2ab86046e8846d1cf4a09b7f25f7362e1cbbb39e975af34e4c92fc761","655d3cb3e6f23a95a7bcfab67fbd3f535bbc0ce71a1ebce283b6fa005ab8af3e","2df4d836b73633f71fa96faafac3d9d32f00951d180b99885afa9511763f7b1f","2212eb5ff51e97198ac2cd6542275dfcf712b9be9a8fab294a9bf844689bcee1"]
Anchored
2026-10-14
Public log entry
search.sigstore.dev, log index 3247835674 · entry 108e9186e8c5677afded…
Expected log hash
306cff230c51a4aeee6711c8f2603eb2af6985e8dc9f5dc959efafe3398b8caf 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":"v1791944613264","kind":"published-quote","locale":"en","page":"brand:expressvpn","quote":"I was signed up for automatic renewal and I am still trying to stop my subscription.","rating":2,"review_date":"2026-10-11","source":"Google Play","source_url":"https://play.google.com/store/apps/details?id=com.expressvpn.vpn","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 (8af5f2f3f65c…), 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.