Я пытаюсь преобразовать код 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должна быть хорошая аутентификация и должна пройти моя транзакция. Но ничего не работает. Как мне продолжить отладку этого? И какие должны быть мои дальнейшие шаги?