import requests import json import ecdsa import binascii def get_btc_ohlc_data(server_url, user_private_key): # Load user's ECDSA private key user_private_key = ecdsa.SigningKey.from_string(binascii.unhexlify(user_private_key), curve=ecdsa.SECP256k1) # Get server public key from endpoint server_public_key_hex = requests.get(server_url + "/serverkey").text server_public_key = ecdsa.VerifyingKey.from_string(binascii.unhexlify(server_public_key_hex), curve=ecdsa.SECP256k1) # Get timestamp timestamp = str(int(time.time())) # Create signature using user's private key signature = binascii.hexlify(user_private_key.sign(bytes(timestamp, 'utf-8'))).decode("utf-8") # Create authentication header auth_header = {"auth": timestamp + ":" + signature} # Make request to server with auth header response = requests.get(server_url + "/t", headers=auth_header) # Verify server's signature server_signature = response.headers["signature"] if server_public_key.verify(bytes(server_signature, 'utf-8'), bytes(timestamp, 'utf-8')): # If signature is valid, return json data return json.loads(response.text) else: # If signature is invalid, return error message return {"error": "Invalid signature from server"}