Compliance record
How to check that the file was not edited
This page is for someone checking a compliance record export a client downloaded. No Tawthiq account is needed. A valid signature shows the files are the ones Tawthiq signed, and that they were not changed afterwards.
Signing key
Fingerprint
8bdf268a30c5ef9aa891c244174ec72c4c6f87bd9dbe878f5abb39f30144c5e9
SHA-256 of the Ed25519 public key, SPKI DER, as lowercase hex.
DNS
Tawthiq publishes the same fingerprint in the TXT record at_compliance-record-key.tawthiq.tech.The spki-sha256 field must match the fingerprint above, and the spki field is the public key below.
A key inside the bundle proves nothing on its own.
dig +short TXT _compliance-record-key.tawthiq.techPublic key
Save this block as tawthiq.pub, including the begin and end lines.
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA64zHco3UpK7tTySgikIvg4eSUamYQLEnkkSXSl2BiDc=
-----END PUBLIC KEY-----Check
Run the commands in the folder the zip unpacked into, on the files as stored.
Match the fingerprint
Save the key above as tawthiq.pub, then run the command. The 64 hex characters at the start of the line must match this page and the DNS record.
openssl pkey -pubin -in tawthiq.pub -outform DER | sha256sumMatch the files to the manifest
manifest.json lists files. For each path, hash that file and compare it with the sha256 field. The command below is daily-rows.csv, which every bundle contains. Repeat it for each path. README.md, manifest.json and manifest.sig are not in the list.
sha256sum daily-rows.csvCheck the signature
manifest.sig is an Ed25519 signature. The signed message is the SHA-256 hex of the manifest.json bytes, as UTF-8, with no trailing newline. It is not the file's raw bytes. When it matches, OpenSSL prints:
Signature Verified Successfullyprintf '%s' "$(sha256sum manifest.json | cut -d' ' -f1)" > message.txt base64 -d manifest.sig > manifest.sig.bin openssl pkeyutl -verify -pubin -inkey tawthiq.pub -rawin -in message.txt -sigfile manifest.sig.bin
What the check shows
A successful check shows that manifest.json and the files it lists are the bytes Tawthiq signed.
Consent decision rows are server receipts of choices the browser reported. Site and configuration identifiers and HTTP headers do not authenticate a person or prove that JavaScript ran on the customer's page. These rows are not tamper-proof or independently verified legal proof.