53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
|
# standard imports
|
||
|
import os
|
||
|
import json
|
||
|
import logging
|
||
|
|
||
|
# third-party imports
|
||
|
import pytest
|
||
|
from cic_eth.eth.rpc import RpcClient
|
||
|
from crypto_dev_signer.keystore import ReferenceKeystore
|
||
|
#from crypto_dev_signer.eth.web3ext import Web3 as Web3ext
|
||
|
|
||
|
logg = logging.getLogger(__file__)
|
||
|
|
||
|
|
||
|
# TODO: need mock for deterministic signatures
|
||
|
# depends on mock blockchain (ganache) where private key is passed directly to this module
|
||
|
@pytest.fixture(scope='session')
|
||
|
def init_mock_keystore(
|
||
|
):
|
||
|
raise NotImplementedError
|
||
|
|
||
|
|
||
|
@pytest.fixture(scope='session')
|
||
|
def init_keystore(
|
||
|
load_config,
|
||
|
database_engine,
|
||
|
):
|
||
|
#symkey_hex = os.environ.get('CIC_SIGNER_SECRET')
|
||
|
symkey_hex = load_config.get('SIGNER_SECRET')
|
||
|
symkey = bytes.fromhex(symkey_hex)
|
||
|
opt = {
|
||
|
'symmetric_key': symkey,
|
||
|
}
|
||
|
k = ReferenceKeystore(database_engine, **opt)
|
||
|
k.db_session.execute('DELETE from ethereum')
|
||
|
k.db_session.commit()
|
||
|
keys_file = load_config.get('SIGNER_DEV_KEYS_PATH')
|
||
|
addresses = []
|
||
|
if keys_file:
|
||
|
logg.debug('loading keys from {}'.format(keys_file))
|
||
|
f = open(keys_file, 'r')
|
||
|
j = json.load(f)
|
||
|
f.close()
|
||
|
signer_password = load_config.get('SIGNER_PASSWORD')
|
||
|
for pk in j['private']:
|
||
|
address_hex = k.import_raw_key(bytes.fromhex(pk[2:]), signer_password)
|
||
|
addresses.append(address_hex)
|
||
|
|
||
|
RpcClient.set_provider_address(addresses[0])
|
||
|
return addresses
|
||
|
|
||
|
|