www.crypto.com аутентификация, python HMA C -SHA256 - PullRequest
1 голос
/ 13 июля 2020

Пытаюсь аутентифицироваться на сайте crypto.com, но не получается заставить его работать ... Пробовал несколько дней и очень расстраивался, есть ли помощь? Их api docs @ https://exchange-docs.crypto.com/?python#digital -signature

Вот как это сделать + пример кода, я застрял ..

Аутентификация основана на соединении ключа API вместе с HMA C -SHA256 ha sh параметров запроса с использованием секрета API в качестве криптографического c ключа.

Алгоритм генерации подписи HMA C -SHA256 следующий:

Если в запросе есть «params», отсортируйте ключи параметров запроса в порядке возрастания.

Объедините все упорядоченные ключи параметров как ключ + значение (без пробелов, без разделителей). Назовем это строкой параметров

Затем сделайте следующее: method + id + api_key + parameter string + nonce

Используйте HMA C -SHA256 для ha sh, используя указанное выше Секрет API в качестве криптографа c ключ

Кодируйте вывод как шестнадцатеричную строку - это ваша цифровая подпись

import hmac
import hashlib
import json
import requests
import time

API_KEY = "API_KEY"
SECRET_KEY = "SECRET_KEY"

req = {
  "id": 11,
  "method": "private/get-order-detail",
  "api_key": API_KEY,
  "params": {
    "order_id": "337843775021233500",
  },
  "nonce": int(time.time() * 1000)
};

# First ensure the params are alphabetically sorted by key
paramString = ""

if "params" in req:
  for key in req['params']:
    paramString += key
    paramString += str(req['params'][key])

sigPayload = req['method'] + str(req['id']) + req['api_key'] + paramString + str(req['nonce'])

request['sig'] = hmac.new(
  bytes(str(SECRET_KEY), 'utf-8'),
  msg=bytes(sigPayload, 'utf-8'),
  digestmod=hashlib.sha256
).hexdigest()
...