Помилки недійсного підпису виникають, якщо ваш ключ API або секрет API неправильно записані у вашій програмі, або якщо дані POST, використані для автентифікації, та дані POST, надіслані до API, не збігаються. Для додаткової довідки, нижче наведено приклад коду Python для реалізації алгоритму підпису API. Відповідний публічний ключ API слід скопіювати та вставити з управління обліковим записом, а метод API та дані POST слід оновити відповідним чином. Вихідне значення можна використовувати безпосередньо як значення для заголовка HTTP API-Sign. #!/usr/bin/env python
# Import required Python libraries
import time
import base64
import hashlib
import hmac
# Decode API private key from base64 format displayed in account management
api_secret = base64.b64decode("nmlrD83t1J+yVWKUBx9vD6j26C5zhC11tFfXpN+Ww+8oOVuGgse5AeADcvl95jYaD+UAi3D5CrVfFr8GfQ7zhA==")
# Variables (API method, nonce, and POST data)
api_path = "/0/private/TradeBalance"
api_nonce = str(int(time.time()*1000))
api_post = "nonce=" + api_nonce + "&asset=xxbt"
# Cryptographic hash algorithms
api_sha256 = hashlib.sha256(api_nonce + api_post).digest()
api_hmac = hmac.new(api_secret, api_path + api_sha256, hashlib.sha512)
# Encode signature into base64 format used in API-Sign value
api_signature = base64.b64encode(api_hmac.digest())
# API authentication signature for use in API-Sign HTTP header
print(api_signature)SHA256 обчислюється за допомогою самого значення nonce та даних POST для методу API, а дані POST складаються з пар ім'я/значення для nonce (знову) та параметрів методу API. Приклад даних, які слід передати до SHA256 для методу TradeBalance, буде таким:SHA256 = SHA256 of "1541933977000nonce=1541933977000&asset=xxbt"Рядкове значення, яке передається до SHA256, не повинно містити додаткових нульових (\0) значень, і рядкове значення не повинно бути закодовано як base64 або hex (тобто рядкове значення повинно бути простим текстовим рядком).Шлях URI – це повна URL-адреса методу API, за винятком префікса "https://api.kraken.com", тому шлях URI методу TradeBalance (наприклад) буде рядковим значенням "/0/private/TradeBalance" без будь-яких додаткових нульових значень.HMAC SHA512 обчислюється за допомогою шляху URI та раніше обчисленого дайджесту SHA256, з розкодованим base64 приватним ключем API як ключем HMAC. Приклад даних, які слід передати до HMAC, буде таким:HMAC SHA512 using base64 decoded private key = HMAC of "/0/private/TradeBalanceSHA256"Заголовки HTTP API-Key та API-Sign є єдиними двома необхідними користувацькими заголовками HTTP. Заголовок API-Key є точною копією публічного ключа API з управління обліковим записом. Заголовок API-Sign – це дайджест HMAC SHA512, закодований за допомогою base64.