예제 #1
0
파일: bpp.py 프로젝트: jsbitcoin/bpp-client
def create_mpk():
    seed = Btclib.random_electrum_seed()
    mpk = Btclib.subkey_for_path(Btclib.bip32_master_key(seed), "1/1.pub")
    keysign = Btclib.bip32_extract_key(Btclib.subkey_for_path(Btclib.bip32_master_key(seed), "3/3/3/3/1"))
    QtGui.QMessageBox.information(bppclient, 'Welcome', "Your PRIVATE Master Key and your wallet's data have been stored in the \"bpp_data\" folder, please keep it safe!", QtGui.QMessageBox.Ok)
    bppclient.cfgmain = {"priv_seed" : seed, "master_pub_key" : mpk, "keysign" : keysign}
    save_cfg()
    start()
예제 #2
0
파일: bpp.py 프로젝트: jsbitcoin/bpp-client
 def genmpk(self):
     p1 = str(random.randrange(2**31-1))
     p2 = str(random.randrange(2**31-1))
     mpk = p1+'/'+p2+'/'+Btclib.subkey_for_path(bppclient.mpkbtc, p1+'/'+p2)
     vcard = self['xep_0054'].stanza.VCardTemp()
     vcard['FN'] = 'BPP Client'
     vcard['JABBERID'] = self.boundjid.bare
     vcard['NOTE'] = '{"BITCOIN_MPK" : "'+mpk+'", '
     vcard['NOTE'] += '"BITCOIN_SIGN" : "'+Btclib.ecdsa_sign(mpk, bppclient.keysign)+'"}'
     self['xep_0054'].publish_vcard(vcard)
예제 #3
0
파일: bpp.py 프로젝트: jsbitcoin/bpp-client
def start():
    try:
        f = open(os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), 'bpp_data', 'bppcnx.cfg'),'r')
        c = json.load(f)
        f.close()
        bppclient.cfgmain = c["main"]
        bppclient.cfgbpp = c["bpp"]
        for bppid in bppclient.cfgbpp:
            bppclient.ui.bppidcb.addItem(bppid["bppid"])
        if bppclient.cfgmain["master_pub_key"] != "":
            bppclient.mpkbtc = Btclib.bip32_ckd(bppclient.cfgmain["master_pub_key"], 2)
        if bppclient.cfgmain["priv_seed"] != "":
            bppclient.mpkbpp = Btclib.subkey_for_path(Btclib.bip32_master_key(bppclient.cfgmain["priv_seed"]), "1/1/1")
	    bppclient.wallet.privbtc = Btclib.subkey_for_path(Btclib.bip32_master_key(bppclient.cfgmain["priv_seed"]), "1/1/2")
        if bppclient.cfgmain["keysign"] != "":
            bppclient.keysign = bppclient.cfgmain["keysign"]
        if bppclient.cfgbpp != []:
            bppidcnt()
    except IOError:
        create_mpk()
    updateStatusBar()
    updateReceiveAddrs()
예제 #4
0
파일: bpp.py 프로젝트: jsbitcoin/bpp-client
    def message(self, msg):
        if msg['type'] == 'normal':
	    try:
                req = json.loads(msg['body'])
                if req['TYPE'] == 'PAYMENT':
		    try:
		        p1, p2, p3, addr = req['DATA']['PATH'].split('/')
		        frm, to = msg['from'].bare, self.boundjid.bare
		        if Btclib.pubkey_to_address(Btclib.bip32_extract_key(Btclib.subkey_for_path(bppclient.mpkbtc, p1+'/'+p2+'/'+p3))) != addr: return
		        if req['DATA']['TXIN'] in bppclient.pendpayhist: return
		        if req['DATA']['TXIN'] in map(lambda x:x[0], bppclient.confpayhist): return
		        invoke_gui(insertPendPay, (req['DATA']['TXIN'],req['DATA']['PATH'],frm,to,req['DATA']['REF'],req['DATA']['RETADDR']))
		        bppclient.pendpayhist[req['DATA']['TXIN']] = (req['DATA']['PATH'],frm,to,req['DATA']['REF'],req['DATA']['RETADDR'])
		        bppclient.wallet.import_key_bip32(addr, p1+'/'+p2+'/'+p3, None)
		    except: return
	    except ValueError: return