app.lisk: Add lisk_sign_message

pull/25/head
Aleksey Popov 7 years ago committed by Jan Pochyla
parent a37493a861
commit dc5115055f

@ -1,6 +1,6 @@
from trezor.wire import register, protobuf_workflow
from trezor.messages.wire_types import \
LiskGetAddress, LiskGetPublicKey
LiskGetAddress, LiskSignMessage, LiskGetPublicKey
def dispatch_LiskGetAddress(*args, **kwargs):
@ -13,6 +13,12 @@ def dispatch_LiskGetPublicKey(*args, **kwargs):
return lisk_get_public_key(*args, **kwargs)
def dispatch_LiskSignMessage(*args, **kwargs):
from .sign_message import lisk_sign_message
return lisk_sign_message(*args, **kwargs)
def boot():
register(LiskGetPublicKey, protobuf_workflow, dispatch_LiskGetPublicKey)
register(LiskGetAddress, protobuf_workflow, dispatch_LiskGetAddress)
register(LiskSignMessage, protobuf_workflow, dispatch_LiskSignMessage)

@ -0,0 +1,17 @@
from .helpers import LISK_CURVE, get_address_from_public_key
async def lisk_sign_message(ctx, msg):
from trezor.messages.LiskMessageSignature import LiskMessageSignature
from trezor.crypto.curve import ed25519
from ..common import seed
address_n = msg.address_n or ()
node = await seed.derive_node(ctx, address_n, LISK_CURVE)
seckey = node.private_key()
public_key = ed25519.publickey(seckey)
address = get_address_from_public_key(public_key)
signature = ed25519.sign(seckey, msg.message)
return LiskMessageSignature(address=address, signature=signature)
Loading…
Cancel
Save