Skip to content
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

fix: KeepKey produces accurate EIP-712 eth_signTypedData_v4 signatures #1

Closed

Conversation

0xMillz
Copy link
Member

@0xMillz 0xMillz commented Oct 18, 2023

Duplicate of this shapeshift/hdwallet PR: shapeshift#649

Officially closes the hdwallet part of issue shapeshift#578, which likely never worked.
Related issue: shapeshift/web#5384

I went with the EthereumSignTypedHash approach for ALL TypedData messages after consulting with @BitHighlander. It seems that the KeepKey firmware is missing the EthereumTypedDataStructRequest type, which would be required for a fully human readable, eip-712-compatible message to be displayed on the device screen.

Fortunately, the EthereumSignTypedHash approach allows the KeepKey to at least sign the v4 messages, which for end-users that means being able to do modern web3 interactions like buying and selling NFTs on OpenSea, for example.

-The bulk of the fix is in packages/hdwallet-keepkey/src/ethereum.ts

  • I also added a recoverTypedSignature check to the sandbox so you know right away if the signature that the KeepKey spits out is accurate.
    -I refactored the Ethereum sandbox tests too. That file is getting way too large and repetitive, but still is the best way to test with KeepKey.
  • I couldn't help but fix some other random some bugs along the way.
  • Feel free to point out anything extra that I should change/remove from this PR--I went in not knowing if I would be able to fix this, so I tried to improve my developer experience at the very least as I went through all the code!
  • If approved, version bumps will be required.

Thanks!

image

*KeepKey Bridge didn't seem to be working for me in the sandbox so I used the regular webusb option instead.

0xMillz and others added 26 commits October 18, 2023 04:09
…by recovering the signing address + refactor the Ethereum Sandbox section + tech debt + random bug fixes caught along the way + messing around with tsconfig
This reverts commit d1ab981, reversing
changes made to c4766cf.

Reverts accidental blind merge from master
This reverts commit b5fa182 and resolves all conflicts

Lesson for future: use `git reset` to "revert" a merge commit or bad things can happen
…net-type nightmare). Remove some tsconfig changes based on PR feedback.
@0xMillz
Copy link
Member Author

0xMillz commented Oct 31, 2023

This change is included in PR #3

@0xMillz 0xMillz closed this Oct 31, 2023
@0xMillz 0xMillz deleted the fix_kk_ethSignTypedData branch December 8, 2023 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants