def pubkeys_to_basic_stealth_address(scan_pubkey, spend_pubkey, magic_byte=42): # magic_byte = 42 for mainnet, 43 for testnet. hex_scankey = main.encode_pubkey(scan_pubkey, 'hex_compressed') hex_spendkey = main.encode_pubkey(spend_pubkey, 'hex_compressed') hex_data = '00{0:066x}01{1:066x}0100'.format(int(hex_scankey, 16), int(hex_spendkey, 16)) addr = main.hex_to_b58check(hex_data, magic_byte) return addr
def format_key(request): if 'key' in request.GET: key = request.GET['key'] is_public_only = True public_key = "" priv_key = "" appendbyte = 0 if BLOCK_CHAIN == 'btc': appendbyte = 0 elif BLOCK_CHAIN == 'btc-testnet': appendbyte = 111 if is_address(key): public_key = key priv_key = None elif is_pubkey(key): key = decode_pubkey(key) key = encode_pubkey(key, 'hex_compressed') public_key = pubkey_to_address(key, magicbyte=appendbyte) priv_key = None elif is_privkey(key): is_public_only = False priv_key = encode_privkey( key, 'wif_compressed', vbyte=appendbyte) #vbyte for bitcoin is 111 public_key = privkey_to_address( priv_key, magicbyte=appendbyte) #magicbyte for bitcoin is 111 response = { 'public_key': public_key, 'priv_key': priv_key, 'read_only': is_public_only } return (JsonResponse(response, status=200)) else: return JsonResponse({'error': 'Error, no key variable provided'}, status=200)
def mk_stealth_metadata_script(ephem_pubkey, nonce): op_return = '6a' msg_size = '26' version = '06' return op_return + msg_size + version + '{0:08x}'.format( nonce) + main.encode_pubkey(ephem_pubkey, 'hex_compressed')
def shared_secret_sender(scan_pubkey, ephem_privkey): shared_point = main.multiply(scan_pubkey, ephem_privkey) shared_secret = main.sha256( main.encode_pubkey(shared_point, 'bin_compressed')) return shared_secret