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"}
