-
Notifications
You must be signed in to change notification settings - Fork 103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Checksum mismatch since v6.2.2 #212
Comments
On v6.3.0, I have:
The hash I have written down in my notebook from when we signed it matches that of the firmware with each of the signing slots empty:
So it's at least reproducible on my machine again, and @KeepKeyBrett was able to reproduce the same hash as was in my notebook, otherwise we would not have signed it.... so that's at least a small baseline of "not completely broken". As for you not being able to reproduce that, I'd like to get to the bottom of that. For the pair of binaries you're finding that are different, what part(s) of the binary are different:
|
I just asked a co-worker to build it, and he got yet another hash, different from both yours and mine. |
Andddd it is the ETH tokens table that's different. They're in a completely different order. Sigh. |
FAOD, here's the contents of the build artifact that's causing the issue: https://gist.github.com/keepkeyjon/5b66d06cb5d2a80a2d36e544a37ea286 (which you can also find in the I'm not sure yet why the host OS has an influence over this. I'll cook up a python-keepkey patch to fix this going forward. |
... to make our builds reproducible again. Fixes keepkey/keepkey-firmware#212
Fix here: keepkey/python-keepkey#88 |
Good catch and quick fix! Indeed 'for x in z' are no guarantee to be reproducible. Will be better for the future, else maybe one day you would have not the same hash as the other developer and wonder why. Can you provide a more detailed about how to exclude rebuild of ethereum_tokens.def in lib/firmware/CMakeLists.txt ? So I will confirm the 6.2.2 and 6.3.0 firmware. Also, you can consider updating the README of the fw here, so that it explains to compare the hash of a given tagged build from byte num 257, not from the beginning. I think that's a change since fw v6.x. |
Something like:
and drop
Sure, happy to! |
Great work! You just forget to tell to delete "ethereum_tokens.def" in lib/firmware/CMakeLists.txt on line 38. 😉 Here's what I did for v6.3.0 :
🆗 For v6.2.2, the shitcoin tokens list might be different. But I guess the same kind of recipe should work. |
I tried to compiled the latest official fw v6.3.0 using a machine with docker.
I'm using the following script, to be sure to build a fresh new version each time.
I get the following hashes :
6.3.0 ❓
6.2.2 ❓
6.2.0 🆗
6.1.1 🆗
5.8.1 🆗
There's no reproducibility since v6.2.2. What am I doing wrong ?
Also the check process changed in fw from hashing the whole bin result in v5.x to excluding signature header in v6.x, that's a minor issue, more like a README.md not updated.
The text was updated successfully, but these errors were encountered: