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.

“Xodo wants to slap a watermark on it before copying”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
67fea6f53e1be1a57a3df0da16b5b6054078870d3313ea613a35f4680b5f7b79
Signature (Ed25519, base64)
3pGO4O7NlI8tuJ9nl3Yct8xUTf/YjIri3dFXe/PfGHmstuI6Kb0XBycqPDacX6zWPWmVa3bDjyDYgerFpM2sBw==
Merkle root
c921242d78a65e026e3281000ec5ef04ef930758058c4fed3f79f3b5ef992cde
Merkle path
["67f6b64130256879dde2d4874b91068e462cb33ea697c02951e25b513092ba56","e042d8762e5a58d1ffd0efdc94472c9081b59518ea8d25119ed04135e09fb34a","34d50e595d4d1d2c4b4e2ecbc8dcf0f74cfdeb9bf9bc4dbe6c78b20cd3762c4b","036e6d72be2ed078ad8cdb02829f3d80b4141e10750463c3fe102e59eaa24292","0d141b87da87ca08eba2a92e00d9717de54e128d91844460bbaf13775cf6d3c4","f65b493d56d4cd513a1e3bc0f612c5d3f29b17d06494352d9b4a2b4779eab535","ffbf520fded3f7a13995691578006749f5ce0ddaf58c9c53d346c1a17a471b46","c061e03160436a6128c70cf5df7d3b55cb03bc02b5a70cce4ba66b0307a5cf79","2fc1a4a644065cf76255c65b1c3b4720ab2053c3e9b24e32de704d453326dc8d","3aba9c48d25c8106610c57bd175da19d46898c5a3733305075faff0d7913baac","5007beb72247435debd861a7b507c7bb6f2b972888d1614fb470338686a57938","c7f1bd682d2372a571af460f6db6329aa6d4392056d2c542b2f8aee42d41d110","6b2632561b59cd0b7b7d163c35b619821251fc87f905afdc68f4b8821607ceaa","11c55b906d5338fe2597d0d6abbdec07bcd15a81c2687346b92acf8d9db0c2f7","522d5a6bf348351e5632579ca190fcb390464957ba4b4698b399695ee13b67d6"]
Anchored
2026-08-21
Public log entry
search.sigstore.dev, log index 2543700701 · entry 108e9186e8c5677ac7e1…
Expected log hash
c1abaf0323b08bce2cedebaf1993162920ee741ace8973292e7ffdd13aca356b 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":"v1787287374804","kind":"published-quote","locale":"en","page":"theme:xodo/quality/en","quote":"Xodo wants to slap a watermark on it before copying","rating":1,"review_date":"2026-07-17","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 (c921242d78a6…), 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.