Add keystore dir parsing for signer for eth target
This commit is contained in:
@@ -22,6 +22,9 @@ from eth_token_index import TokenUniqueSymbolIndex
|
||||
from eth_address_declarator import Declarator
|
||||
from eth_address_declarator.declarator import AddressDeclarator
|
||||
|
||||
# local imports
|
||||
from .signer import parse_signer
|
||||
|
||||
logg = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -48,12 +51,16 @@ class CICEth:
|
||||
self.tx_format = TxFormat.RLP_SIGNED
|
||||
|
||||
|
||||
def apply_token(self, token):
|
||||
return self.prepare_token(token.name, token.symbol, token.precision, token.code)
|
||||
|
||||
|
||||
def prepare_token(self, name, symbol, precision, code, extra=[], extra_types=[], positions=None):
|
||||
self.token_details = {
|
||||
'name': name,
|
||||
'symbol': symbol,
|
||||
'precision': precision,
|
||||
'code': code,
|
||||
'code': code or '',
|
||||
'extra': extra,
|
||||
'extra_types': extra_types,
|
||||
'positions': positions,
|
||||
@@ -143,7 +150,8 @@ class CICEth:
|
||||
|
||||
code = self.token_details['code'] + enc.get()
|
||||
|
||||
signer_address = self.resources['token']['key_address']
|
||||
logg.debug('resource {}'.format(self.resources))
|
||||
signer_address = self.resources['token']['key_account']
|
||||
nonce_oracle = None
|
||||
if self.rpc != None:
|
||||
nonce_oracle = RPCNonceOracle(signer_address, conn=self.rpc)
|
||||
@@ -254,4 +262,4 @@ class CICEth:
|
||||
|
||||
|
||||
def new(chain_spec, resources, proof, signer_hint=None):
|
||||
return CICEth(chain_spec, resources, proof, signer=None)
|
||||
return CICEth(chain_spec, resources, proof, signer=signer_hint)
|
||||
|
||||
33
cic/ext/eth/signer.py
Normal file
33
cic/ext/eth/signer.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# standard imports
|
||||
import stat
|
||||
import os
|
||||
import logging
|
||||
|
||||
# external imports
|
||||
from funga.eth.keystore.dict import DictKeystore
|
||||
from funga.eth.signer import EIP155Signer
|
||||
|
||||
# local imports
|
||||
from cic.keystore import KeystoreDirectory
|
||||
|
||||
logg = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class EthKeystoreDirectory(DictKeystore, KeystoreDirectory):
|
||||
pass
|
||||
|
||||
|
||||
def parse_signer(signer_hint):
|
||||
|
||||
if signer_hint == None:
|
||||
logg.info('signer hint missing')
|
||||
return None
|
||||
st = os.stat(signer_hint)
|
||||
if stat.S_ISDIR(st.st_mode):
|
||||
logg.debug('signer hint is directory')
|
||||
keystore = EthKeystoreDirectory()
|
||||
keystore.process_dir(signer_hint)
|
||||
signer = EIP155Signer(keystore)
|
||||
|
||||
return signer
|
||||
|
||||
Reference in New Issue
Block a user