Zondax / ledger-stacks

Apache License 2.0
17 stars 7 forks source link

Structured message signing support #118

Closed kyranjamie closed 1 year ago

kyranjamie commented 1 year ago

Following on from https://github.com/Zondax/ledger-blockstack/issues/76, we'd like users to be able to sign structured data, according to the SIP-018 specification

This feature has been implemented in the Hiro Wallet for software wallets already in https://github.com/hirosystems/stacks-wallet-web/pull/2405

@MarvinJanssen has a reference implementation here https://github.com/MarvinJanssen/stx-signed-structured-data

cc/ @markmhx @fbwoolf @beguene

:link: zboto Link

markmhendrickson commented 1 year ago

Note this is needed to fully complete https://github.com/hirosystems/stacks-wallet-web/issues/2433

neithanmo commented 1 year ago

I will start to look into this.. have there been made any updates regarding implementation details??

markmhendrickson commented 1 year ago

Not that I'm aware of. @kyranjamie do you know of any?

Should we sync with developers who've implemented message signing already and see if they have any particular structured-data needs that might change our plans here?

kyranjamie commented 1 year ago

The SIP defines how this feature should work, and should be used as the guiding specification for the feature.

janniks commented 1 year ago

Will we run into the same issue of incompatible/unallowed message signing prefix from the ledger side?

markmhendrickson commented 1 year ago

I haven't had a chance to review SIP-018 in depth yet, but presumably we'd have to upgrade the Stacks app for Ledger to support the prefix here: https://github.com/stacksgov/sips/pull/57/files#diff-cdf5e1eaffca20cd4bf675d2986bdf568c9c25cc79e119c961863b49701c6f75R118

@neithanmo do you have a decent sense from the SIP-018 just what scope of work would be involved for this enhancement on your end?

neithanmo commented 1 year ago

At a first glance, I do not see any reason to not be compatible as there is a clear definition for the message header..also the domain can be displayed on the screen along with the structured message hash as this field can change from message to message.