TEL re-validates Exhibit signatures whenever they are displayed, using the icon to indicate a successful re-validation (and using to indicate failed re-validation).
Successful revalidation confirms that the data has not changed since it was signed, and that it was signed by the user indicated.
Signature data may alternatively be re-validated yourself, using the procedure described here.
Requirements:
rsa
package. On most systems, this may be installed with the command pip install rsa
after installing python.Here is an example Exhibit to validate:
And here is its associated signature data:
The signature can be verified using IDLE, the default Python shell:
>>> # import rsa and json libraries >>> import rsa >>> import json >>> >>> # copy raw Exhibit data from TEL into a variable >>> data = {'author_id': 'n', 'author_username': 'TEL_demo', 'created_country': 'US', 'created_ip': '0.0.0.0', 'created_utc': 1671648044, 'edited_country': None, 'edited_ip': None, 'edited_utc': None, 'id': '1c', 'image_sha256': None, 'image_type': None, 'signed_country': 'US', 'signed_ip': '0.0.0.0', 'signed_utc': 1671648044, 'text_html': '<p>Here is some text, where the user describes what ' 'happened.</p>\n', 'text_raw': 'Here is some text, where the user describes what happened.', 'title': 'Example Title'} >>> >>> # copy signature string into a variable >>> signature = "29dfa039b053376cee380412a5829e39e671de6f8649e80288f48fd500c5fc3688595b2ae1cf44a6e5763a43b3c57e8f00405621822f5b408dd336e494585ad1" >>> >>> # copy user's Python-formatted public key into a variable >>> public_key = rsa.PublicKey(8555647050898027273016535636036195731439808637554611207272396463285836447566466728987015903224537133895221714709519944149942082827993524870192992289146397, 65537) >>> >>> # Verify signature. Expected output is the name of the hash function used to fingerprint the exhibit data. >>> # Anything else, like an error, means verification failed. >>> rsa.verify(json.dumps(data, sort_keys=True).encode('utf-8'), bytes.fromhex(signature), public_key) 'SHA-256'