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 love it, transferring my data from Google Authenticator was seamless”

Checks (re-run on this request)

Proof data

Record hash (SHA-256)
0af0691e01d01bedb47dfb31fc14b41b51f4a3bd67b103e3cf773bd763267e1e
Signature (Ed25519, base64)
4fE4ID3dAwBwRfV/RsPkVhEVpO2Fp99smNgbNJxO0oE2wTkNE6W6986+XFFDhluR1/T23w1u3yyj7z7zOcsfDA==
Merkle root
0cb6814e51c7eb056a01f84349e58060bb6087dd0cf96aef0f27729d4d4fb276
Merkle path
["0af10d92dd57c6e4e5de1168078d847a4ca215637f61e9fa9af90748881025d5","a96a8c509a0b84de34fd48b9da7d73b39e959e55aeb2825040d80849eef860bc","b3de9a76b8aefb8c8cfc35872ee2c585efd1fa874ab57b9616a91b01026c9548","4a5ccbf32f51c1c5826b1a04e808676272535b6e0604597cbc8df48cdbfe9c15","caf643282d7d6c43e9758d0657f07bdaede040f43bccc0ea1172a4db8541d147","b3b613547999f82e970d5098dd489c9688b664df4845ebe54e53754da272c450","3fad582575a9997789f622b0d8e5635f6d808de890dc7867b6aba2795bad3c5e","947107138a5bb2c2cfc7bb8826c6e69daecb2ccdeba825e64cfa0ff9a46745dd","bfb85983633aaa99c6c9f7a8843b3f51e07943078355de90ecf2033dd9780d1c","0b47eb4e47e3c159b9612bbda3750bc806f9e831988fe3d33146386df66a3918","26d22d41c53f71f135913884383349ce9225cab8d1964ad69ceb8f6a7f41975e","0e7b34ee57018ab949f6230ec302cfa9f723792d5fdbb493da70978b6389c9e3","be1dd0e45f7494393f0e1b32c70d3c985a66f040e38a68aca73948a6803cfeda","2518affc97ecf822332e259f6b71ff1d6b20920b0b5c6f8e1080f3c11eb6b936","af2962fc61736883c7077a83c82f90f0eaef6320643194fac99217c4f69a9d04"]
Anchored
2026-08-31
Public log entry
search.sigstore.dev, log index 2656977863 · entry 108e9186e8c5677ad8e2…
Expected log hash
50611b695debae6fb0a9929f4c3d2c8dd8c51d8e8342a15fa077624a80d81709 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":"v1788142253421","kind":"published-quote","locale":"en","page":"product:proton/proton-authenticator/en","quote":"I love it, transferring my data from Google Authenticator was seamless","rating":4,"review_date":"2026-08-05","source":"Google Play","source_url":"https://play.google.com/store/apps/details?id=proton.android.authenticator","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 (0cb6814e51c7…), 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.