Trust · Document seal
The Rethink Metals seal
When everyone has signed an agreement on the Rethink Metals platform, the platform seals the executed PDF. The seal is a certification signature made with the Rethink Metals Document Seal certificate, with a timestamp from DigiCert, an independent timestamp authority. A certificate of completion at the end of the file lists each signer, how they signed and when.
Any change to a sealed file, even one byte, breaks the seal. PDF readers then say the document was changed, and the platform's Verify page no longer matches it.
What the seal proves
- Nothing changed: the file is exactly the one the platform sealed, and no changes are allowed after the seal.
- When: the timestamp comes from DigiCert, not from our own clock.
- Who sealed it: Rethink Metals, through a certificate issued by the Rethink Signing Root below.
The seal does not replace the signatures: each signer's own record (name, organisation, the code they confirmed with, time and network address) is on the certificate of completion and on the platform's ledger.
The certificates
Rethink runs its own root. Adobe Acrobat shows the seal as valid once you trust it; until then it reports the signature's validity as unknown, which does not mean the document changed. Check that the fingerprint matches the one printed on your certificate of completion before you trust it.
Trust the root in Adobe Acrobat
- Download the root certificate above.
- In Acrobat or Acrobat Reader, open the preferences (Acrobat › Settings on a Mac, Edit › Preferences on Windows) and choose “Signatures”.
- Beside “Identities & Trusted Certificates”, choose “More…”, then “Trusted Certificates” and “Import”.
- Choose “Browse”, pick rethink-signing-root.pem, then choose “Import”.
- Select “Rethink Signing Root” in the list and choose “Edit Trust”.
- Tick “Use this certificate as a trusted root” and “Certified documents”. Without the second, a certified document still shows as unknown.
- Choose OK, close the dialogs and open the executed PDF again. The bar at the top says the document is certified and the signature is valid.
To check the fingerprint of the file you downloaded:
openssl x509 -in rethink-signing-root.pem -noout -fingerprint -sha256Check the timestamp with OpenSSL
For an expert who wants to check the timestamp without our software. These commands run in a macOS or Linux terminal with OpenSSL 3, in the folder holding the executed PDF saved as executed.pdf.
# The seal is a CMS signature stored as hex between the 2nd and 3rd /ByteRange numbers.
set -- $(grep -a -o '/ByteRange *\[[^]]*\]' executed.pdf | tail -1 | tr -c '0-9' ' ')
dd if=executed.pdf bs=1 skip=$(($2 + 1)) count=$(($3 - $2 - 2)) 2>/dev/null | xxd -r -p > seal.p7s
# Find the signature value and the timestamp token in it.
openssl asn1parse -inform DER -in seal.p7s | grep -B4 -A3 timeStampToken# Offsets as asn1parse printed them for one sample; use your own.
# The token: the SEQUENCE two lines under id-smime-aa-timeStampToken (offset, then hl + l).
dd if=seal.p7s of=token.der bs=1 skip=3141 count=5986 2>/dev/null
# The signature value: the OCTET STRING of 384 bytes above cont [ 1 ] (offset + hl, then l).
dd if=seal.p7s of=signature.bin bs=1 skip=2732 count=384 2>/dev/null
# When the timestamp authority says the seal existed:
openssl ts -reply -in token.der -token_in -text | grep -E 'Time stamp|Policy'
# That the token is genuine and covers this signature ("Verification: OK"):
openssl ts -verify -in token.der -token_in \
-digest "$(openssl dgst -sha256 -r signature.bin | cut -c1-64)" \
-CAfile /etc/ssl/cert.pemThe digest that openssl dgst prints equals the “Message data” in the token: the timestamp covers this seal's signature. On macOS /etc/ssl/cert.pem holds the system's trusted roots; on Linux it is often /etc/ssl/certs/ca-certificates.crt.
pyHanko, an open-source PDF signing library, checks the seal, the timestamp and that nothing was added after the seal in one command:
pip install pyhanko
pyhanko sign validate --pretty-print --trust rethink-signing-root.pem executed.pdfOn the platform
Members can drop a PDF on the platform's Verify page. The file is read in the browser and never uploaded; only its SHA-256 fingerprint is looked up among the documents sealed on the platform.
Verify a documentQuestions: info@rethinkmetals.com