Como posso assinar uma mensagem com meu livro?
3 respostas
- votos
-
- 2019-01-30
Tudo que Ledger sabe comofazer é oferecer assinaturas de diferentestipos demensagens que o aplicativo cliente oenvia.Então,nesse sentido,suapergunta se referemais à capacidade do cliente Tezos,vocêestá conectando seu livropara (nó completo,Tezboxetc ...).
Nomomento,infelizmente,a opçãonão é oferecidaem qualquer clientepara assinarmensagens de string regulares (similarmentepara dizerna carteira GUIpadrão de Bitcoin)para que a resposta à suapergunta seja "não".A coisamaispróxima queestá disponível é com onó completopara assinarmensagensbytes com o comando
./tezos-client sign bytes <data> for <src>
que solicitaria uma assinatura do seu livro é que um controla src
Ditoisto é um recurso útiltere vale apena solicitar vários desenvolvedores de carteira!
All that ledger knows how to do is to offer signatures of different kinds of messages the client app sends it. So in that sense your question refers more to capability of the Tezos client you are connecting your Ledger to (full node, tezbox etc...).
At the moment unfortunately the option is not offered in either client to sign regular string messages (similarly to say in the bitcoin standard gui wallet) so the answer to your question is "no". The closest thing that is available is with the full node to sign bytes messages with the command
./tezos-client sign bytes <data> for <src>
which would request a signature from your ledger is that one controls src
That being said it is a useful feature to have and worth requesting to various wallet developpers!
-
ADVERTÊNCIA: `Sign Bytes`pode assinartransferências,etc. Éprecisoter cuidado com o que o` é.Warning: `sign bytes` can sign transfers, etc. One must be careful what the `` is.
- 1
- 2020-01-07
- Tom
-
- 2019-02-14
aviso : o seguinte hack éperigosoporquetrata suamensagem como uma operação ,quepode ser reinterpretadaem um contextoposteriorpara significar algo que vocênãopretende.
.Vocêpode realmente convencer o livro a assinar as coisas arbitrárias agora.Eleexibirá um "sinalnão verificado?"Prompt:
tezos-client sign bytes 0x03$(echo "hi there!" | xxd -ps | tr -d '\n') for <account>
master uma soluçãototalmente suportadaparaisso onde o razãomostra amensagem (ou alguma versão verificável) seriaideal.
WARNING: The following hack is dangerous because it treats your message as an operation which could be reinterpreted in a later context to mean something you did not intend.
You can actually convince the ledger to sign arbitrary things right now. It will display a "Sign Unverified?" prompt:
tezos-client sign bytes 0x03$(echo "hi there!" | xxd -ps | tr -d '\n') for <account>
But having a fully supported solution to this where the ledger actually shows you the message (or some verifiable version of it) would be ideal.
-
Aviso: Não assine coisas arbitrárias usando 0x03.0x03 Significa que uma operação segue.Warning: do not sign arbitrary things using 0x03. 0x03 signifies that an operation follows.
- 1
- 2020-01-07
- Tom
-
Estoufelizpor você apontarisso.Esse hack deve ser considerado arriscado,poisessas assinaturaspodem acabar sendo reinterpretadasem um contextoposterior comotendo o significado que vocênãopretendia.Tezosesperamos apoiar * Real * Mensagens arbitráriasem algummomento.I'm glad you point this out. This hack should be considered risky as those signatures could end up being reinterpreted in a later context as having meaning that you didn't intend. Tezos will hopefully support *real* arbitrary messages at some point.
- 0
- 2020-03-12
- Elliot Cameron
-
@Tom adicionei um avisopara a resposta oficial.Obrigado.@Tom I added a warning to the official response. Thanks.
- 0
- 2020-03-12
- Elliot Cameron
-
- 2019-02-15
Não há comandos de Tezos-clientemuito convenientes ou RPCspara ajudar comisso ainda,maspode-se assinar umaexpressão de Micheline deforma convencional comoesta:
$ Tezos-Cliente Hash Data '"Olá,mundo"' 'dotipo string| Grep 'Dados Embalados RAW:'| Cut -d: -f2 0x05010000000c68656c6c6f2c20776f726c64. $ Tezos-Cliente Desembale os dados de Michelson 0x05010000000c68656c6c6f2c20776f726c64 "Olá Mundo" $tezos-cliente sinalbytes 0x05010000000c68656c6c6f2c20776f726c64para chave ...
Essa assinatura será aceita,porexemplo,por um contrato quefaz
{push string "Hello,World"; PACOTE; Blake2b; Empurre assinatura ...; Push Key ...; Check_signature; Assert}
.Esta convenção é usada,porexemplo,pelos contratos deinvestimentomultisiggênesis.
Apartir de hoje,o aplicativo Wallet Ledgernão confirmarátal assinatura,exibindo "sinalnão verificado". Talvez um diaeleexiba o hashexibidopor
dados hash
.Eunãome sinto confortável descrevendoisso semfornecer um aviso:
Pode serperigoso assinarexpressões de Micheline.
Observetambém que bytes de sinal éperigoso . É crucial acima que osbytes sendo assinados comece com
0x05
,queindica convencionalmente que umaexpressão de Micheline segue. Se osbytes começarem com0x01
-0x04
, Elespodem significar outra coisa ! (Seeles começarem com0x03
,porexemplo,elespodem significar umatransferência!)Geralmente,sempre cuide quaismensagens você assina com quaisteclas.
Lembre-se de que suas assinaturas são válidaspara sempre,então as situaçõesfuturastambém são relevantes.
vertambém dois anti-padrões de Michelson relevantes,que começam a sugerir a complexidade relacionada aqui (daperspectiva do autor do contrato): Signaturespor si sónãoimpedem os ataques de repetição , Não assuma que os usuários usarão uma chaveexclusivapara cada contratointeligente .
There are no very convenient tezos-client commands or RPCs to help with this yet, but one can currently sign a Micheline expression in a conventional way like this:
$ tezos-client hash data '"hello, world"' of type string | grep 'Raw packed data:' | cut -d: -f2 0x05010000000c68656c6c6f2c20776f726c64 $ tezos-client unpack michelson data 0x05010000000c68656c6c6f2c20776f726c64 "hello, world" $ tezos-client sign bytes 0x05010000000c68656c6c6f2c20776f726c64 for key ...
Such a signature will be accepted, for example, by a contract doing
{PUSH string "hello, world"; PACK; BLAKE2B; PUSH signature ...; PUSH key ...; CHECK_SIGNATURE; ASSERT}
.This convention is used for example by the genesis multisig vesting contracts.
As of today the Ledger wallet app will not confirm such a signature, displaying "Sign Unverified". Maybe someday it will display the hash displayed by
hash data
.I don't feel comfortable describing this without providing a warning:
It can be dangerous to sign Micheline expressions.
Note also that
sign bytes
is dangerous. It is crucial above that the bytes being signed start with0x05
, which conventionally indicates that a Micheline expression follows. If the bytes start with0x01
-0x04
, they might mean something else! (If they start with0x03
, for example, they might mean a transfer!)Generally, always take care which messages you sign with which keys.
Remember that your signatures are valid forever, so future situations are relevant too.
See also two relevant Michelson anti-patterns, which start to hint at related complexity here (from the contract author's perspective): Signatures alone do not prevent replay attacks, Do not assume users will use a unique key for every smart contract.
Eugostaria de saber se há umamaneira de assinar umamensagem?Qualquer ajuda seria apreciada.Obrigado!