def to_xpub(self): data = '0488b21e'.decode('hex') data += ('%02x' % self.depth).decode('hex') data += self.fingerprint if self.hard: data += ('%08x' % (self.child_num | 2**31)).decode('hex') else: data += ('%08x' % self.child_num).decode('hex') data += self.chaincode data += self.pubkey return bitcoin.EncodeBase58Check(data)
def SerializeExtendedPublicKey(depth, parent_fingerprint, child_number, chain_code, cK): """Yield a base58 encoded 78-byte binary blob corresponding to this node.""" vch = PRIVATE_TEST__VERSION_LOOKUP[(False, False)] vch += chr(depth) vch += parent_fingerprint vch += struct.pack(">L", child_number) vch += chain_code # ba += b'\0' + self.secret_exponent_bytes vch += cK return bitcoin.EncodeBase58Check(vch)
def parse_xpubkey(self, pubkey): assert is_extended_pubkey(pubkey) pk = pubkey.decode('hex') pk = pk[1:] xkey = bitcoin.EncodeBase58Check(pk[0:78]) dd = pk[78:] s = [] while dd: n = int(bitcoin.rev_hex(dd[0:2].encode('hex')), 16) dd = dd[2:] s.append(n) assert len(s) == 2 return xkey, s
def parse_xpubkey(self, pubkey): assert pubkey[0:2] == 'ff' pk = bfh(pubkey) pk = pk[1:] xkey = bitcoin.EncodeBase58Check(pk[0:78]) dd = pk[78:] s = [] while dd: n = int(bitcoin.rev_hex(bh2u(dd[0:2])), 16) dd = dd[2:] s.append(n) assert len(s) == 2 return xkey, s
def to_xprv(self): if self.privkey == None: raise Exception('BIP32.to_xprv: no private key available') data = '0488ade4'.decode('hex') data += ('%02x' % self.depth).decode('hex') data += self.fingerprint if self.hard: data += ('%08x' % (self.child_num | 2**31)).decode('hex') else: data += ('%08x' % self.child_num).decode('hex') data += self.chaincode data += chr(0) + self.privkey return bitcoin.EncodeBase58Check(data)
def SecretToASecret(secret, compressed=False): addrtype = 0 vchIn = chr((addrtype + 128) & 255) + secret if compressed: vchIn += '\01' return bitcoin.EncodeBase58Check(vchIn)