Puncte:1

cry Ce algoritm folosesc Trezor One și Trezor T pentru a semna mesajele?

drapel in

Cunoștințele mele de criptografie sunt dincolo de superficiale și am o problemă pe care nu o pot rezolva.

Portofelele Trezor au două formate de semnare a mesajelor: „Trezor” și „Electrum”.

Am o metodă în codul meu, care este preluarea cheii publice din mesajele semnate folosind portofelele BTC (folosesc bitcoinj bibliotecă):

public VerificationStatus verifyMessage(String walletAddress, String phrase, String semnătură) {
    Semnarea adreseiAdresa = null;
    Adresă addressFromKey = null;
    încerca {
        signingAddress = Address.fromString(null, walletAddress);
        ECKey ecKey = ECKey.signedMessageToKey(frază, semnătură);
        addressFromKey = Address.fromKey(signingAddress.getParameters(), ecKey, signingAddress.getOutputScriptType());
    } captură (excepție SignatureException) {
        LOGGER.error(exception.getMessage());
    }
    return determineVerificationStatus(signingAddress, addressFromKey);
}

Când semnez un mesaj folosind portofelul Electrum sau Trezor cu opțiunea formatul „Electrum” selectată, totul funcționează bine.

Exemple de date pentru mesajul semnat Electrum:

adresa: bc1qpluptcvxpvyzsmqzy8jrmdt3m985t6z95s24nu
mesaj: MESAJ
semnătură: H41bIfNhn1vT5yzgFUA3rZE7FNCM8epMrINVbzOefOImYs42hEIUHuoY/UkMd9ljjYkaci7fVJgCTUE6hPJN3Cg=

Dar când încerc să folosesc formatul „Trezor”, pentru care semnătura arată diferit:

adresa: bc1qpluptcvxpvyzsmqzy8jrmdt3m985t6z95s24nu
mesaj: MESAJ
semnătură: J41bIfNhn1vT5yzgFUA3rZE7FNCM8epMrINVbzOefOImYs42hEIUHuoY/UkMd9ljjYkaci7fVJgCTUE6hPJN3Cg=

Primesc un SignatureException aruncat de ECKey.signedMessageToKey(frază, semnătură);, cu un mesaj de excepție:

Octet antet în afara intervalului: 40

După cum am menționat la începutul acestei întrebări: cunoștințele mele despre criptografie sunt aproape inexistente, dar din ceea ce bănuiesc - Trezor semnează mesajul folosind altceva, un alt algoritm, iar acest lucru provoacă ECKey.signedMessageToKey() metoda aruncă o excepție care spune că octetul antetului este în afara intervalului

Întrebarea mea este: cum creează Trezor semnătura folosind așa-numitul „format Trezor” și cum aș putea rezolva această problemă în mod programatic?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.