@ -6,9 +6,6 @@ from trezor.crypto.hashlib import sha3_256
from trezor . messages . Success import Success
from trezor . messages . Success import Success
from trezor . ui . text import Text
from trezor . ui . text import Text
from . address import validate_full_path
from apps . common import paths
from apps . common . confirm import require_confirm
from apps . common . confirm import require_confirm
from apps . common . layout import split_address
from apps . common . layout import split_address
from apps . common . signverify import split_message
from apps . common . signverify import split_message
@ -16,11 +13,15 @@ from apps.ethereum.sign_message import message_digest
async def verify_message ( ctx , msg ) :
async def verify_message ( ctx , msg ) :
await paths . validate_path ( ctx , validate_full_path , path = msg . address )
digest = message_digest ( msg . message )
digest = message_digest ( msg . message )
if len ( msg . signature ) != 65 :
raise wire . DataError ( " Invalid signature " )
sig = bytearray ( [ msg . signature [ 64 ] ] ) + msg . signature [ : 64 ]
sig = bytearray ( [ msg . signature [ 64 ] ] ) + msg . signature [ : 64 ]
try :
pubkey = secp256k1 . verify_recover ( sig , digest )
pubkey = secp256k1 . verify_recover ( sig , digest )
except ValueError :
raise wire . DataError ( " Invalid signature " )
if not pubkey :
if not pubkey :
raise wire . DataError ( " Invalid signature " )
raise wire . DataError ( " Invalid signature " )