如何解决Coinbase错误:“无效签名”

时间:2019-02-04 19:39:46

标签: c# python authentication coinbase-api

我正在尝试将在“ https://developers.coinbase.com/docs/wallet/api-key-authentication#”中找到的python代码转换为C#。

我已经能够很好地转换它,但是我在如何构造签名以及如何对其进行哈希处理方面遇到了麻烦。

我收到此{“ errors”:[{“ id”:“ authentication_error”,“ message”:“无效签名”}]} 正如您所看到的,没有有关导致错误的原因的信息。而且没有解决方法。

hmac.new(self.secret_key, message, hashlib.sha256).hexdigest() 在C#中不是一个线性函数。而且散列超出了我的经验范围。

我将其作为我拥有的功能。这是对的吗?同样对于我要发送的JSON,我使用NewtonSoft将其从Diction转换为字符串。这也正确吗?

哈希函数:

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);
}

我应该可以通过身份验证,并且可以进行交易。但是没有任何效果。我应该如何进行调试?那我下一步应该怎么做?

0 个答案:

没有答案