Как я могу исправить ошибку Coinbase: «Неверная подпись» - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь преобразовать код Python, найденный здесь "https://developers.coinbase.com/docs/wallet/api-key-authentication#" в C #.

Я смог преобразовать его нормально, но у меня возникли проблемы с тем, как должна быть построена подпись и как она должнабыть хешированным.

Я получаю это {"errors": [{"id": "authentication_error", "message": "недопустимая подпись"}]} и, как вы можете видеть, нет никакой информации о том, почемубыла вызвана ошибка. И ни один метод разрешения не существует.

hmac.new(self.secret_key, message, hashlib.sha256).hexdigest() не является функцией с одним вкладышем в C #. И хеширование выходит за рамки моего опыта.

У меня есть эта функцияЭто правильно? Также для моего JSON, который я посылаю, я конвертирую его из Diction в строку, используя NewtonSoft. Это тоже правильно?

Функция хеширования:

byte[] secretKey = Encoding.UTF8.GetBytes(apiSecret);
HMACSHA256 hmac = new HMACSHA256(secretKey);
hmac.Initialize();
byte[] bytes = Encoding.UTF8.GetBytes(message);
byte[] rawHmac = hmac.ComputeHash(bytes);
var signature = ByteArrayToHexString(rawHmac);

static string ByteArrayToHexString(byte[] bytes)
{
  char[] c = new char[bytes.Length * 2];
  int b;
  for (int i = 0; i < bytes.Length; i++)
  {
    b = bytes[i] >> 4;
    c[i * 2] = (char)(55 + b + (((b - 10) >> 31) & -7));
    b = bytes[i] & 0xF;
    c[i * 2 + 1] = (char)(55 + b + (((b - 10) >> 31) & -7));

  }

  return new string(c);
}

Iдолжна быть хорошая аутентификация и должна пройти моя транзакция. Но ничего не работает. Как мне продолжить отладку этого? И какие должны быть мои дальнейшие шаги?

...