Ejemplo n.º 1
0
    def _generate_new_keypair(self):
        secret = str(random.randrange(2**256))
        self.secret = hashlib.sha256(secret).hexdigest()
        self.pubkey = privtopub(self.secret)
        self.privkey = random_key()
        print 'PRIVATE KEY: ', self.privkey
        self.btc_pubkey = privtopub(self.privkey)
        print 'PUBLIC KEY: ', self.btc_pubkey

        # Generate SIN
        sha_hash = hashlib.sha256()
        sha_hash.update(self.pubkey)
        ripe_hash = hashlib.new('ripemd160')
        ripe_hash.update(sha_hash.digest())

        self.guid = ripe_hash.digest().encode('hex')
        self.sin = obelisk.EncodeBase58Check('\x0F\x02%s' + ripe_hash.digest())

        newsettings = {
            "secret": self.secret,
            "pubkey": self.pubkey,
            "privkey": self.privkey,
            "guid": self.guid,
            "sin": self.sin
        }
        self.db.updateEntries("settings", {"market_id": self.market_id},
                              newsettings)
        self.settings.update(newsettings)
Ejemplo n.º 2
0
    def get_peers(self):
        peers = []

        for peer in self.transport.dht.activePeers:

            if hasattr(peer, 'address'):
                peer_item = {'uri': peer.address}
                if peer.pub:
                    peer_item['pubkey'] = peer.pub
                else:
                    peer_item['pubkey'] = 'unknown'

                peer_item['guid'] = peer.guid
                if peer.guid:
                    peer_item['sin'] = obelisk.EncodeBase58Check(
                        '\x0F\x02%s' + peer.guid.decode('hex'))
                peer_item['nick'] = peer.nickname
                self.log.debug('Peer Nick %s', peer)
                peers.append(peer_item)

        return peers
Ejemplo n.º 3
0
    def _setup_guid(self):
        # GUIDs should be the pubkey signed with privkey then
        # hashed with SHA256 and subsequently RIPEMD160
        # This can provide protection against Spartacus
        # http://xlattice.sourceforge.net/components/protocol/kademlia/specs.html
        signed_pubkey = self.cryptor.sign(self.pubkey)
        sha_hash = hashlib.sha256()
        sha_hash.update(signed_pubkey)
        ripe_hash = hashlib.new('ripemd160')
        ripe_hash.update(sha_hash.digest())

        self.guid = ripe_hash.hexdigest()

        # Generate SIN
        self.sin = obelisk.EncodeBase58Check('\x0F\x02%s' % ripe_hash.digest())

        new_settings = {"guid": self.guid, "sin": self.sin}

        self.db_connection.update_entries("settings", new_settings,
                                          {"market_id": self.market_id})
        self.settings.update(new_settings)
Ejemplo n.º 4
0
    def _generate_new_keypair(self):

        seed = str(random.randrange(2**256))

        # Deprecated (pre-BIP32)
        # self.secret = hashlib.sha256(secret).hexdigest()
        # self.pubkey = privkey_to_pubkey(self.secret)
        # self.log.debug('Keys %s %s', self.secret, self.pubkey)

        # Move to BIP32 keys m/0/0/0
        wallet = bitcoin.bip32_ckd(bitcoin.bip32_master_key(seed), 0)
        wallet_chain = bitcoin.bip32_ckd(wallet, 0)
        bip32_identity_priv = bitcoin.bip32_ckd(wallet_chain, 0)
        identity_priv = bitcoin.bip32_extract_key(bip32_identity_priv)
        bip32_identity_pub = bitcoin.bip32_privtopub(bip32_identity_priv)
        identity_pub = bitcoin.encode_pubkey(
            bitcoin.bip32_extract_key(bip32_identity_pub), 'hex')

        self.pubkey = identity_pub
        self.secret = identity_priv

        # Generate SIN
        sha_hash = hashlib.sha256()
        sha_hash.update(self.pubkey)
        ripe_hash = hashlib.new('ripemd160')
        ripe_hash.update(sha_hash.digest())

        self.guid = ripe_hash.hexdigest()
        self.sin = obelisk.EncodeBase58Check('\x0F\x02%s' % ripe_hash.digest())

        newsettings = {
            "secret": self.secret,
            "pubkey": self.pubkey,
            "guid": self.guid,
            "sin": self.sin,
            "bip32_seed": seed
        }
        self.db_connection.update_entries("settings", newsettings,
                                          {"market_id": self.market_id})
        self.settings.update(newsettings)
Ejemplo n.º 5
0
    def get_peers(self):
        peers = []

        for peer in self._transport._dht._activePeers:

            self._log.debug('get peer %s' % peer)

            if hasattr(peer, '_address'):
                peer_item = {'uri': peer._address}
                if peer._pub:
                    peer_item['pubkey'] = peer._pub.encode('hex')
                else:
                    peer_item['pubkey'] = 'unknown'

                peer_item['guid'] = peer._guid
                peer_item['sin'] = obelisk.EncodeBase58Check(
                    '\x0F\x02%s' + peer._guid.decode('hex'))
                peer_item['nick'] = peer._nickname
                self._log.info('Peer Nick %s ' % peer)
                peers.append(peer_item)

        return peers
Ejemplo n.º 6
0
 def generate_sin(guid):
     return obelisk.EncodeBase58Check('\x0F\x02%s' + guid.decode('hex'))