Skip to content

Commit

Permalink
keystore fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
backpacker69 committed May 26, 2017
1 parent 6dc1930 commit 949c11a
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 4 deletions.
9 changes: 6 additions & 3 deletions pacli/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import json
import logging

from pacli.keystore import read_keystore, write_keystore
from pacli.keystore import read_keystore, write_keystore, KeyedProvider

conf_dir = user_config_dir("pacli")
conf_file = os.path.join(conf_dir, "pacli.conf")
Expand Down Expand Up @@ -818,14 +818,17 @@ def main():

mypg = None
password = None
mykeys=""
mykeys = ""
mykeys = read_keystore(Settings,keyfile)

if Settings.provider.lower() == "rpcnode":
provider = pa.RpcNode(testnet=Settings.testnet)
if Settings.provider.lower() == "holy":
provider = pa.Holy(network=Settings.network,keysJson=mykeys)
provider = pa.Holy(network=Settings.network)

provider = KeyedProvider(provider,keysJson=mykeys)
set_up(provider)

args = cli()

if args.status:
Expand Down
48 changes: 47 additions & 1 deletion pacli/keystore.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import gnupg
import getpass
import sys
from pypeerassets.kutil import Kutil

mypg = None

Expand Down Expand Up @@ -28,4 +29,49 @@ def write_keystore(Settings,keyfile,keys):
fd = open(keyfile,"w")
fd.write(data)
fd.close()


class KeyedProvider:

"""
Keystore class
"""

@classmethod
def __init__(self, provider, keysJson: str=""):
"""
:
"""
self.provider = provider

if keysJson != "":
self.privkeys = eval(keysJson)
else:
self.privkeys = {}

@classmethod
def __getattr__(self, name):
return getattr(self.provider, name)

@classmethod
def importprivkey(self, privkey: str, label: str) -> int:
"""import <privkey> with <label>"""
mykey = Kutil(wif=privkey)

if label not in self.privkeys.keys():
self.privkeys[label] = []

if mykey._privkey not in [key['privkey'] for key in self.privkeys[label]]:
self.privkeys[label].append({"privkey":mykey._privkey,"address":mykey.address})

@classmethod
def getaddressesbyaccount(self, label: str) -> list:
if label in self.privkeys.keys():
return [key["address"] for key in self.privkeys[label]]

@classmethod
def listaccounts(self) -> dict:
return {key:0 for key in self.privkeys.keys()}

@classmethod
def dumpprivkeys(self) -> dict:
return self.privkeys

0 comments on commit 949c11a

Please sign in to comment.