Last active
December 10, 2018 10:06
-
-
Save gabridome/48f756c52587c0ee53ed32279838eabd to your computer and use it in GitHub Desktop.
how to verify opentimestamps.org .ots files reproducing the hash operations on the command line on Mac.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
the output of the `ots info` command is in the form: | |
```` | |
$ ots info ../../Downloads/email.html.ots | |
File sha256 hash: b5054af8078852d17d1653897a99cfd3cf7a0f0d5d33bcd15961ec619c3cb19e | |
Timestamp: | |
append 40ee69f78b4e4c4094d6a6e8869c9c93 | |
sha256 | |
-> append 196ac4428094e68d57db4e99100891ae | |
sha256 | |
prepend f5004d829df46bb11a83683fd32af6cf6fb855b7e1f36fd67514620f3da51a77 | |
sha256 | |
prepend 5bf81291 | |
append 7b25dc16bdb476e6 | |
verify PendingAttestation('https://bob.btc.calendar.opentimestamps.org') | |
sha256 | |
prepend 97ceae5c079278657b6627ef6c7bde0c83df26d9d667a334ac18c0a663046790 | |
sha256 | |
append 76741351126afcf9c3676a40ce496d6b41d9553091ea09fa0f17de0bf43551ad | |
sha256 | |
``` | |
to reproduce the calculations you can use `shasum` and `sed` on mac in th following way: | |
First of all we append an hex string to the sha of the document (as prescribed): | |
append 40ee69f78b4e4c4094d6a6e8869c9c93 | |
==> result b5054af8078852d17d1653897a99cfd3cf7a0f0d5d33bcd15961ec619c3cb19e40ee69f78b4e4c4094d6a6e8869c9c93 | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
then we perform a sha256 on the binary version of the hex string: | |
``` | |
echo b5054af8078852d17d1653897a99cfd3cf7a0f0d5d33bcd15961ec619c3cb19e40ee69f78b4e4c4094d6a6e8869c9c93| echo -n -e $(tr -d '[:space:]' | sed 's/../\\x&/g')|shasum -a 256 | |
187f95853dca35866015833118dbf77c8b20acf8076cd092eed5ab5bec926244 - | |
``` | |
you can see at https://opentimestamps.org/info/?004f70656e54696d657374616d7073000050726f6f6600bf89e2e884e892940108b5054af8078852d17d1653897a99cfd3cf7a0f0d5d33bcd15961ec619c3cb19ef01040ee69f78b4e4c4094d6a6e8869c9c9308fff010196ac4428094e68d57db4e99100891ae08f120f5004d829df46bb11a83683fd32af6cf6fb855b7e1f36fd67514620f3da51a7708f1045bf81291f0087b25dc16bdb476e6ff0083dfe30d2ef90c8e2c2b68747470733a2f2f626f622e6274632e63616c656e6461722e6f70656e74696d657374616d70732e6f726708f12097ceae5c079278657b6627ef6c7bde0c83df26d9d667a334ac18c0a66304679008f02076741351126afcf9c3676a40ce496d6b41d9553091ea09fa0f17de0bf43551ad08f020e334b5a3f28fefc468c7d80b5c37d0322226b87ce73f74ad221278671116544a08f12039f9c0faff6b63ea308e6696e0b63fd4b0474a315e696cc124a83fbcd6ddf91208f020ccf463e0d2a95163389200b60c78126cadfe577849c9776eb079455728e342fc08f120e2ad6de11dad48adc2ff6881759cb04eb3072ce0bcc2b965aca97d1e2a80559208f120ef0d39cfc9ff971e31e770f4fd591f1dfdd9302c550126170bf35026470586ba08f120fd5a8a3b0c2cf6076f8451884daa7b86e7fb8f7d3179ac3e07139ca39552f71708f02000472b0cec100654afbe152c7ecd9efb7dbb1d34b332c0fa2cea737d5eec597b08f020ed3129c1b24bdebfae4bd95e096d855811d73455340054ece6a5f3e89d334a0908f12091d92abdf649d4b59253f48b8437eed23c772cdfb168efa8d16e9875a8d8aff908f17101000000017feaa59d0bfb2fa38d829a7d2df1528ff8621c2ef18e220e72788fdf41f85ba500000000171600142998cfadd1cb3d8d077624dd8e08bfc8802e7df8fdffffff023d4271000000000017a91401ba53641bd365e7fabfc741bfbd43566151d0bb870000000000000000226a20f004226908000808f02023a31cdb0327f1f7252eb7927a3dd3a1e43d016dc521e08912ace46d77a664e50808f020da7361b749ff39c9d51ff7f99bd0f957ca0bd5acd34430fa391e6d2a173940710808f020d31883b635f0220059e0ff469d0e05b86919a7b00c8d40f9d7fbcd2ed7abea0e0808f02026d41b2583523b0278cdfba0e072c4d26c8924211a6fa0c0285e0b39d38f95880808f020ea1d12b759ac5b47872c04884ffb21a927a34b294f97a5a3854500b7200169b10808f120de42bf717f86d0c552295d05ab9d7c822d3085488ef802a8a63903e24b5585db0808f120eb1aaeaf8e7a250579d9011e353e2bf95935dd4946db79aefb4cb1483995939d0808f12062bf9d985568f281ab977032116de324923695fe30afcedfa91b10dde95f907c0808f120ba881003bd9031e9b8fdfc332f9d941701d9c81827279678e679d63f186103c80808f120782894fa9245e29e588af45006457d698489f021d0a59f90a8f8901c7320c3700808f1201615b975f8fec1244f0c30e791ca412c6f0927236abe932051ee0a02facd0a490808f020963f781320ff79dec9c72baba7777f31c0722d8998fb86f0b70399b355c787960808000588960d73d7190103a3d221fff010b4442609e8e39a2dd06b2b697d0e0c2408f0104ad88d241391e186965b95a9fb89db3c08f1045bf81291f008ac3ae3007340d906ff0083dfe30d2ef90c8e292868747470733a2f2f66696e6e65792e63616c656e6461722e657465726e69747977616c6c2e636f6d08f1202bff53e1e61c5f00252dd15c8c19ed16fcb719bb6b9042983c570fee1e7aa0f808f1206e4669f3ce16d64e463e3ed3e6e43825af31337cc86b9e3d0ebb1d794e994b6108f120b7008097c97f2b3d6cf50c55abf6b9b5c3db4bbe252987735c5d12233a612a3a08f12020ff23f2b7ae1132ea3f314d4f8703b42d123c3f989cd36e96c00d9cdcc3604f08f0204965d9f1a1d473b68ea8f0f87091eeb700765684a5836a4bcf7a34546ba046b208f1208086c017db32b24e7f5b7858afd3dd139cf097f0e6ed9e48f46f6f319e37893708f020465a531e97b1c5d66f3c2428c72577325a1ac2976e06028bfffbbfafa3af4db908f120672180b539242a30ead864b4c3e0356698f7f1129533c130f5e5e6291f6a151008f120fa170384e31983e15c8409ca00c41dcc91b4d86376d0e8c394b278cd50c533b208f020b44ae847764c601952197664190a3332f7f0614e3d21cfb8429e4f2745f869d908f1710100000001e7b84eba82caea5b64202e7bb2ba66c19e034336c68d6daa7c5282c82eb6386700000000171600147d9f34a011574eda7a60e73471c938d1cd67d670fdffffff02440d0b000000000017a9146bdffabbf6c1352c8c01e6e884f292ec2c11788d870000000000000000226a20f004226908000808f12094665bf5aa07b30ebb00460dc46b1c8706a1700112ee7e72195243da35a89c360808f120165ae063ed80ef8a3482fba41eecc3fd2132bf75650af87d3149ae826a9def8e0808f1206e40dd7c67b1c4a85a5e29b6f9df8d94b19fe45d10b85987ed7652480596ac5a0808f1209f98d52141d5916994e8e4c4445b61be843902f3373489e2fa606cb0be551b5e0808f1200dd3fd82e357103a8d2a784bb483cc4d9f333ae83684b5cb7bdc4da1347914840808f020c883958d6db29731e85f4bbf6099caf5a89579de67b7a3ba63cf6c4520fd3a930808f120eb1aaeaf8e7a250579d9011e353e2bf95935dd4946db79aefb4cb1483995939d0808f12062bf9d985568f281ab977032116de324923695fe30afcedfa91b10dde95f907c0808f120ba881003bd9031e9b8fdfc332f9d941701d9c81827279678e679d63f186103c80808f120782894fa9245e29e588af45006457d698489f021d0a59f90a8f8901c7320c3700808f1201615b975f8fec1244f0c30e791ca412c6f0927236abe932051ee0a02facd0a490808f020963f781320ff79dec9c72baba7777f31c0722d8998fb86f0b70399b355c787960808000588960d73d7190103a3d221f010f4662119bacdb9ff5710c32833927e8f08f020b53bc3100dc13a7f86b60c1a423556ab0e07f7e9c3914dc0388cc0c524b950bb08f0204c28e7f4ccc34aeb1fdaf38d42ea41dfb8750f253006acaca84ef97045bce6dd08f1045bf81291f008e952a431e16c7e03ff0083dfe30d2ef90c8e2e2d68747470733a2f2f616c6963652e6274632e63616c656e6461722e6f70656e74696d657374616d70732e6f726708f12019a82aac1305ab41922d3e32881a099a0a90acf7f566a242a2d55457ec5d4bd008f12049c95658dff8462b54adc0f60142231db9f27293b5cba41fa89490660399f0fc08f020dee210ef97c09549704ae09987fd8e77aa102235c4ea572b1c20b8783b9c0e7a08f1207b134ae13151d49c3c5d92e3c07b8a9a28d47f6129c4228418281a9f7579692008f1202ae38eab5b6eab4a1102fcfed85297e6bd9a7c32e4b9504b59e40daef1ed406b08f020e76988f33886bac8e6f40f6671b73a0acad0f5afdce61b5f67477f4d6385743008f120bee7ea5d7470e96835846ee870fa81fcaa06dcb0eef1032fbb90ce00d619e18c08f12015bcd36138253bc2c4e260c409b713031e71a41014a226c1d9884d65ff1a2bd508f020d96be675244a01e1cb3560b89f0031de02a5ec030f87d460cd89ede194cc8fa308f0203d5e6dc51c4a1504fd00c7a26ef794104afeadb25ab7a6f5f09bd1c021cc980108f1200ba0e869258ff107661f63ee678d694b6044926244bca906a9f6ff9748da9d9408f171010000000187ba75a151642653ab435d9492f9fb1b09f8c13b9bad7d409cb55d1299a9076a0000000017160014b8fac4a450bc88e024c61405f35c38ab2d68d826fdffffff02042f36000000000017a914539b53c1712752cb069378eb0d2719ab2cd0a2f0870000000000000000226a20f004226908000808f1208df377d083d03410524195fa07cba8952432f896ccb54f10f3c45ebb4edfdfa40808f020c89e41d153b22a5413e44fdcaed45715e2fc5e4006539c53fd73098c27de30a80808f120a09965c8bed7206c4a15f116e9cbeefe5ded5a099a097cd20f82d9b9b9f23f830808f02026d41b2583523b0278cdfba0e072c4d26c8924211a6fa0c0285e0b39d38f95880808f020ea1d12b759ac5b47872c04884ffb21a927a34b294f97a5a3854500b7200169b10808f120de42bf717f86d0c552295d05ab9d7c822d3085488ef802a8a63903e24b5585db0808f120eb1aaeaf8e7a250579d9011e353e2bf95935dd4946db79aefb4cb1483995939d0808f12062bf9d985568f281ab977032116de324923695fe30afcedfa91b10dde95f907c0808f120ba881003bd9031e9b8fdfc332f9d941701d9c81827279678e679d63f186103c80808f120782894fa9245e29e588af45006457d698489f021d0a59f90a8f8901c7320c3700808f1201615b975f8fec1244f0c30e791ca412c6f0927236abe932051ee0a02facd0a490808f020963f781320ff79dec9c72baba7777f31c0722d8998fb86f0b70399b355c787960808000588960d73d7190103a3d221 | |
that the result of the first operation is correct. | |
In alternative you can use `xxd`: | |
``` | |
echo "b5054af8078852d17d1653897a99cfd3cf7a0f0d5d33bcd15961ec619c3cb19e40ee69f78b4e4c4094d6a6e8869c9c93" | xxd -r -p - |shasum -a 256 | |
``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment