def generate_bitcoin_keypairs(number_of_addresses=50): """ This function: 1) generates new bitcoin keypairs 2) saves encrypted private keys private keys are encrypted with SECRET_KEY """ if registrar_addresses.find().count() >= number_of_addresses: log.debug("Already have enough addresses") return no_of_new_addresses = number_of_addresses - registrar_addresses.find().count() for count in range(1, no_of_new_addresses + 1): privkey = BitcoinPrivateKey() hex_privkey = privkey.to_hex() encrypted_privkey = aes_encrypt(hex_privkey, SECRET_KEY) address = get_address_from_privkey(hex_privkey) log.debug("Creating new address (count, address): (%s, %s):" % (count, address)) new_entry = {} new_entry['encrypted_privkey'] = encrypted_privkey new_entry['address'] = address registrar_addresses.save(new_entry)
def generate_bitcoin_keypairs(number_of_addresses=50): """ This function: 1) generates new bitcoin keypairs 2) saves encrypted private keys private keys are encrypted with SECRET_KEY """ if registrar_addresses.find().count() >= number_of_addresses: log.debug("Already have enough addresses") return no_of_new_addresses = number_of_addresses - registrar_addresses.find( ).count() for count in range(1, no_of_new_addresses + 1): privkey = BitcoinPrivateKey() hex_privkey = privkey.to_hex() encrypted_privkey = aes_encrypt(hex_privkey, SECRET_KEY) address = get_address_from_privkey(hex_privkey) log.debug("Creating new address (count, address): (%s, %s):" % (count, address)) new_entry = {} new_entry['encrypted_privkey'] = encrypted_privkey new_entry['address'] = address registrar_addresses.save(new_entry)
def test_inputs(self): """ Check if BTC key being used has enough inputs """ from registrar.config import BTC_PRIV_KEY btc_address = get_address_from_privkey(BTC_PRIV_KEY) #print "Testing address: %s" % btc_address client = BlockcypherClient(api_key=BLOCKCYPHER_TOKEN) unspents = get_unspents(btc_address, client) total_satoshis = 0 counter = 0 for unspent in unspents: counter += 1 total_satoshis += unspent['value'] btc_amount = satoshis_to_btc(total_satoshis) btc_amount = float(btc_amount) self.assertGreater(btc_amount, 0.01, msg="Don't have enough inputs in btc address")
def test_registrar_users(): """ Test if registrar has access to correct private keys """ for entry in registrar_users.find(): fqu = entry['username'] + ".id" data = c.get_name_blockchain_record(fqu) if 'error' in data: log.debug("Error while processing: (%s, %s)" % (fqu, data)) continue if entry['btc_address'] != data['address']: log.debug("registrar doesn't own: %s" % fqu) continue privkey = aes_decrypt(entry['encrypted_privkey'], SECRET_KEY) if get_address_from_privkey(privkey) == entry['btc_address']: log.debug("Correct pvtkey: %s" % fqu) else: log.debug("ERROR: wrong pvtkey: %s")