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.

“was told it would only be done as a one-time courtesy”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
2ca4ffa6de064a8a9cb1732dab641e510501879764af79b603481bace357b1d6
Signature (Ed25519, base64)
d+hvGn3KF9Sd7WWbs6tz1n2wsNtV3vB//2IpD1U00b8j990N7ZQw8zalKZDA4zv9f2ThuRnqTca67YdMJgryAg==
Merkle root
3286418fc06d25de584969d1d1d5f4b079918bf6b5a5178364cae8b78bb351b2
Merkle path
["2ca79f737a4e38c8313a41004c1a7aeba5e7402271d396d7c886a3fa3ad48071","7628feb72844c3fab9b1a574677d29fe0e25a7640c59f2c8167f2de93c5e675c","a43577e2b3aa2f5b7f95e2d46c85c687dd38d35eba1fb93889b1c0fd7857ec97","89e55138380232a8767cf6147d79a1d3fbec6571b4c76ff83151c738ff0f970b","43d47a6063c9319816583c18a1891689a866177cf953641a9df319b04d6edefb","4690d22cb0c72094202fe51d60c431a67f9cf8980e3f1abfc1ef90ce002e73d6","0408ddd976e5ae7e49117cb4a83fe298d5a3d87738bbe2dfbe1315cc332b0264","6c90412c55861e2daec177421f07c4f3e5cd1d31b38b7c9d0b76015072d34f2d","7ec333879fd128f00b0daf7d8040f2b7ca015e56aabd54803d4f91eed93c8be8","4ef4a903d1a840bcf68c5cb40d775b696dc873fd00ce9c0153605e2db3981246","1d1100be7a34c450ffa8104880455cbdab68faab3fcf0b9a1902eeaa174e1fc3","49e05cfef927266c6a609e22c205c5fdf538ab222e94c5e3282700418f88dfb5","d9800b1b87d047478eeb89f8a1dda19593d3b273c40fa6d591a1b944763f5e83","b4d8773b8032d1dec9dc6fa4ba1d52baf4d9efac6a7cb542ab0617b855dc5284"]
Anchored
2026-10-15
Public log entry
search.sigstore.dev, log index 3258071454 · entry 108e9186e8c5677ae2ee…
Expected log hash
f9026b3bdc4a2e986a01140b2370b0ce9ec3e7c9353055dd7c9909c6a9941809 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":"v1792030101458","kind":"published-quote","locale":"en","page":"brand:expressvpn","quote":"was told it would only be done as a one-time courtesy","rating":1,"review_date":"2026-08-28","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 (3286418fc06d…), 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.