Я пытаюсь пройти аутентификацию в Coinbase Pro из скрипта Google. Мне уже удалось сделать это в Postman с использованием Crypto JS, но я сталкиваюсь с проблемами , генерирующими заголовок подписи CB-ACCESS-SIGN . Я настроил тест с использованием тестового ключа и секретной строки, чтобы выяснить различия между Crypto JS .HmacSHA256 и Utilities.computeHmacSha256Signature , реализация, которую предлагает Google, и заметил разница в параметрах: Crypto JS .HmacSHA256 ожидает секрет в виде WordArray, а Utilities.computeHmacSha256Signature ожидает секрет в виде строки.
В Postman я делаю следующее, чтобы получить массив слов моего apiSecret для передачи Crypto JS .HmacSHA256:
var hash = CryptoJS.enc.Base64.parse(pm.variables.get('apiSecret'));
В моем скрипте Google я делаю сам
var hash = Utilities.base64Decode(apiSecretB64)
Я пытался отладить это с тем же секретом и сообщением, но я Получаю разные результаты.
Моя реализация в Postman:
function computeSignature(request) {
const data = request.data;
const method = request.method.toUpperCase();
const path = getPath(request.url);
const body = (method === 'GET' || !data) ? '' : JSON.stringify(data);
const message = timestamp + method + path + body;
const apiSecret = CryptoJS.enc.Base64.parse(pm.variables.get('apiSecret'));
const hash = CryptoJS.HmacSHA256(message, apiSecret);
const hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
return hashInBase64;
}
И моя реализация в Google Script:
function computeSignature(request, path, timestamp) {
const data = request.data;
const method = request.method;
const body = (method === 'GET' || !data) ? '' : JSON.stringify(data);
const message = timestamp + method + path + body;
var apiSecret = Utilities.base64Decode(apiSecretB64);
var hash = Utilities.computeHmacSha256Signature(message, apiSecret);
hash = Utilities.base64Encode(hash);
return hash;
}
Кто-нибудь знает, почему я получаю разные результаты?