Dank an mich habe ich das Problem herausgefunden. Da ich mir vorstellen kann, dass andere Leute so dumm sind wie ich, beantworte ich meine eigene Frage:
Das Problem ist, dass ich Zeichenfolgen anstelle von Bytes verwende. Ich habe keine Zeit, um es für die Befehlszeile und cURL herauszufinden (vielleicht möchte das jemand anderes tun und ich akzeptiere diese Antwort).
Für die Auftraggeber ich arbeite, statt verketten /0/private/Balance
und die SHA256 Hexstring 353f9df92ab1d5e5afe06bb7d1bb42a8ef6654b633d94818007aeafbaf03ca3d
ich sollte die Bytes für „/ 0 / private / Balance“ (verketten 47 48 47 112 114 105 118 97 116 101 47 66 97 108 97 110 99 101
) und SHA256 ( „123nonce = 123“) ( 53 63 157 249 42 177 213 229 175 224 107 183 209 187 66 168 239 102 84 182 51 217 72 24 0 122 234 251 175 3 202 61
) (dargestellt als Dezimalwerte diesmal ).
Gleiches gilt für den SHA512 HMAC.
Bearbeiten:
Da jemand auf Twitter gefragt hat, sind dies die eigentlichen Schritte, um dies auf der Kommandozeile zu tun:
echo -n "/0/private/Balance" > tmp.bin
echo -n "123nonce=123" | openssl sha256 -binary >> tmp.bin
cat tmp.bin | openssl sha512 -binary -hmac $(echo -n "wqtzZWNyZXTCuw==" | base64 -d) | base64
("wqtzZWNyZXTCuw ==" ist "" secret "" BASE64-codiert, dies sollte natürlich Ihr Geheimnis sein)curl -X POST -H "Accept: application/json" -H "API-Key: «key»" -H "API-Sign: «output-from-step-3»" -d "nonce=123" https://api.kraken.com/0/private/Balance
Wie Sie oben sehen können, wurde bei der ursprünglichen Frage nur der -binary
Schalter verwendet.
Hinweis: Ihr API-Schlüssel und das Geheimnis werden in der Befehlszeile (sichtbar mit ps aux
) und in Ihrem Shell-Verlauf angezeigt!