chainlib-eth/chainlib/eth/sign.py

62 lines
1.8 KiB
Python

# local imports
from chainlib.jsonrpc import JSONRPCRequest
def new_account(passphrase='', id_generator=None):
"""Generate json-rpc query to create new account in keystore.
Uses the personal_newAccount rpc call.
:param passphrase: Passphrase string
:type passphrase: str
:param id_generator: JSONRPC id generator
:type id_generator: JSONRPCIdGenerator
:rtype: dict
:returns: rpc query object
"""
j = JSONRPCRequest(id_generator)
o = j.template()
o['method'] = 'personal_newAccount'
o['params'] = [passphrase]
return j.finalize(o)
def sign_transaction(payload, id_generator=None):
"""Generate json-rpc query to sign transaction using the node keystore.
The node must have the private key corresponding to the from-field in the transaction object.
:param payload: Transaction
:type payload: dict
:param id_generator: JSONRPC id generator
:type id_generator: JSONRPCIdGenerator
:rtype: dict
:returns: rpc query object
"""
j = JSONRPCRequest(id_generator)
o = j.template()
o['method'] = 'eth_signTransaction'
o['params'] = [payload]
return j.finalize(o)
def sign_message(address, payload, id_generator=None):
"""Generate json-rpc query to sign an arbirary message using the node keystore.
The node must have the private key corresponding to the address parameter.
:param address: Address of key to sign with, in hex
:type address: str
:param payload: Arbirary message, in hex
:type payload: str
:param id_generator: JSONRPC id generator
:type id_generator: JSONRPCIdGenerator
:rtype: dict
:returns: rpc query object
"""
j = JSONRPCRequest(id_generator)
o = j.template()
o['method'] = 'eth_sign'
o['params'] = [address, payload]
return j.finalize(o)